簡體   English   中英

使用 C# /.NetCore 簽署 Powershellscript

[英]Sign a Powershellscript with C# / .NetCore

對於我的復雜系統,我正在尋找一種方法來簽署 powershellscript 不是用powershell而是用C# /.NetCore

這里是Powershell版本:

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert

我當前的解決方案使用Powershell 控制台啟動

process.start

為什么我要簽 C# 而不是 Powershell?

  1. 我的系統是 Intranet 服務
  2. 用戶可以從應用程序中的片段和 select 附加安裝文件編譯腳本
  3. 現在腳本已使用安裝文件進行簽名並編譯為 exe(C# 控制台項目 - 在運行時使用 dotnet 編譯)
  4. 此 exe 可由用戶控制(該 exe 具有檢查更新的開關)
  5. 現在這個 exe(更新)通過 wsus 分發並到達用戶計算機並使用腳本安裝安裝文件。

所有這些都是一個不錯的系統,但如果我不必先保存腳本來簽名它會更好

進程啟動 => powershell

正如您在上面所讀到的,我不是在找人來做我的作業,而是有足夠經驗告訴我如何在不使用 powershellpipe 的情況下使用 C# 簽署腳本的人。

非常感謝
此致

既然投入了更多的時間,摸清了底層技術,在微軟的代碼中找到了GitHub上的解決方案。

到目前為止,stackoverflow 上還聲稱這是不可能的。

這是,他們是如何做到的

在此文件中,您可以找到帶有以下 function 的簽名助手 class:

internal static Signature SignFile(SigningOption option,
                                           string fileName,
                                           X509Certificate2 certificate,
                                           string timeStampServerUrl,
                                           string hashAlgorithm)

對不起,如果有人介意,我很快就找到了解決方案。 至少現在我已經分享過了。

編輯:

因為底層function,還是要先保存文件。 所以優勢是微乎其微的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM