2016-07-07 95 views
1

所以,我一直在研究/谷歌搜索在最後2個小時,我幾乎在淚水點......如何生成自簽名證書並使用它簽署我的PowerShell腳本?

我不能用新SelfSignedCertificate,因爲我是在Windows 7 我不能使用makecert是因爲一個錯誤,它不允許我安裝SDK for Windows 7,因爲它認爲我有.NET 4的預發佈版本,但是我沒有。試圖安裝.NET 4通知我我有一個新的或更好的版本。

我試過註冊表破解,我發現解決這個問題,但不幸的是沒有工作。

我已經下載這個 https://gallery.technet.microsoft.com/scriptcenter/Self-signed-certificate-5920a7c6#content

,但似乎無法管理通過所有我需要真正讓我的腳本簽署步驟獲得這樣我就可以把它給其他人安全地使用。

我想我已經設法創建了證書(儘管我不確定我是否做得對)。

從我能告訴我現在需要應用密碼或密鑰,然後導出它?我仍然不確定我是如何特別簽署我的腳本的,因此其他人可以將其作爲「簽名」執行。

謝謝你們。

或者,如果有人知道如何獲得在.exe文件中工作的相對.ps1路徑,所有這些都可能是不必要的?

該腳本作爲.ps1正常工作,但只要我使用PowerGUI編譯成.exe文件,這些行不起作用。

. .\Import-XLS.ps1 
$OutFile = ".\TEST$(get-date -Format dd-MM).txt" 
$Content = Import-XLS '.\TEST.xlsx' 

我,而不是得到像 「術語」。\進口XLS.ps1' 沒有被識別爲cmdlet的名稱,具有一定的參考的應用程序數據\本地的\ Temp \ QuestSoftware \沿的PowerGUI \文件夾。

所以我猜測PowerGUI做了一些奇怪的事情,但我不知道如何將.ps1轉換爲.exe。 根據主要問題的答案,我可能會提交一個新的問題爲.exe一個正式。

謝謝你們。

+0

使用自簽名證書籤署腳本不會在未提供該特定證書的計算機上使腳本「可信」。 – bluuf

+0

如果他們使用「Set-ExecutionPolicy RemoteSigned」,對吧? 一些想要使用此腳本的人不喜歡將安全性移除到允許未簽名的遠程腳本運行級別的想法。 – XViper

回答

1

所以我最終解決了這個問題,結合了兩件事情。

Split-Path $MyInvocation.MyCommand.Path 

[System.AppDomain]::CurrentDomain.BaseDirectory} 

我需要同時使用,因爲前者在名爲.ps1但不是在編譯的.exe工作,而後者則在編譯的.exe工作,但不是在一個.ps1。

由於PowerGUI編譯.exe具有一致的路徑文件夾名稱,我結束了使用以下內容。

$ScriptPath = Split-Path $MyInvocation.MyCommand.Path 
if ($ScriptPath -match 'Quest Software') {$ScriptPath = [System.AppDomain]::CurrentDomain.BaseDirectory} 

我還將函數包含到.exe中(但它不是必需的)。 然後我用$OutFile = "$ScriptPath\<Filename>.txt"$Content = Import-XLS "$ScriptPath\<Filename>.xlsx"

這意味着我現在可以使用一個.exe文件,而不是試圖獲得腳本工作證書。同時還能夠快速測試對它的更改,而它仍然是.ps1。

我希望這有助於其他人使用PowerGUI來製作將來的.exe,也需要使用相對路徑。

感謝那些提供幫助和建議。

+0

真棒這對我有效,但我不得不使用'[AppDomain]'而不是'[System.AppDomain]' –

0

所以我沒有使用PowerGUI從腳本創建.exe文件,所以這是在黑暗中的一點點,但我猜它只是不實施點源外部文件,如果這是唯一阻止你的東西部署代碼爲什麼不只是將Import-XLS.ps1中的函數複製到腳本的主體中?

+0

嘿邁克。 是的,我最後試過,但是$ Outfile和$ Content文件仍然不起作用。 我通過設置絕對路徑解決了這個問題,但這使得腳本非常不靈活。 是否有任何其他已知的創建.exe的方法? (或者我應該問一個新的問題?) 謝謝。 – XViper

+0

另外,如果我可以使用 '$ ScriptPath =分割路徑$ MyInvocation.MyCommand.Path'的某種變體 然後使用'$ ScriptPath \ $ OutFile =「\ TEST.txt」' '$ Content = Import -XLS'「$ ScriptPath \ TEST.xlsx」' 但我似乎無法得到那個工作。 – XViper

+0

如果它在點源以外的事情上沒有成功,我就不會費心去深入研究它,但無論如何,所有的事情都會很痛苦。但是一旦將它導入到證書存儲中,就可以重新簽署腳本[更多信息請參見此處](https://technet.microsoft.com/zh-cn/library/cc754489(v = ws.11).aspx)應該像運行Set-AuthenticodeSignature一樣簡單,並提供正確的參數[更多在這裏](https://blogs.technet.microsoft.com/heyscriptingguy/2010/06/17/hey-scripting-guy-how-can -i-sign-windows-powershell-scripts-with-an-enterprise-windows -pki-part-2-of-2) –