自從研究powershell以來,經歷了很多,過程是很艱辛啊。尤其是當我去網路上搜尋關於powershell的資料的時候,我發現找到的很少,甚至是少得可憐。或者可以說是一篇文章,大家互相**,google幾頁以後,發現的資料基本如出一轍。沒辦法,只能自己研究。
由於要用到執行策略的更改,所以涉及到自己建立受信任指令碼。可是網上的資料講的不是很詳細,我按照上面的步驟基本沒有通過的,所以只能自己研究。
然後根據網上的資料,我們只需要在powershell的命令列裡執行makecert 就可以,但我試了很多次也沒有成功。在cmd命令列裡可以直接執行makecert.exe,但在ps環境裡就不能成功。後來才發現,網上沒有說清楚,我們需要把makecert.exe檔案拷貝到我們的系統資料夾下,否則我們在ps中使用makecert.exe的時候系統會提示找不到命令。
ok,只要在環境裡可以執行makecert.exe,我們就可以進行下一步的操作了。
命令:makecert -n "cn=myroot" -a sha1 –eku1.3.6.1.5.5.7.3.3 -r -sv root.pvk root.cer –ss root -sr localmachine ,完成以後會彈出對話方塊,讓我們輸入私鑰密碼,輸入並確認。
輸入命令:makecert -pe -n "cn=mycertificate" -ss my –a sh1 -eku 1.3.6.1.5.5.7.3.3 -iv root.pvk –c root.cer,作用是開始建立證書。執行完成後,我們可以在 windows powershell 中執行以下**,以核實此安裝過程:gci cert:/currentuser/my -codesigning 。 這將在 cert: drive(windows 證書儲存位置)中顯示所有**簽名證書專案的列表。此外,所有這一切還將被記錄在 windows powershell 自身中。要查詢該文件,只需執行 help about_signing 然後向下翻閱幾個螢幕即可。
所有步驟都完成了,我們就可以進行指令碼的簽名了。$cert = @(gci cert:/currentuser/my-codesigning)[0]這句命令用來檢索首次安裝的**簽名證書(如果安裝了多個證書並希望使用第乙個以外的其他證書,只需將 "0" 改為相應的數字即可)。
set-authenticodesignature d:/myscript.ps1 $cert這個**則進行指令碼的簽名。現在我們開啟指令碼,我們可以看到簽名區塊被插入到底部。嘗試使用執行策略 allsigned (set-executionpolicy allsigned) 執行指令碼,它就能夠正常工作。現在我們可以嘗試修改指令碼並儲存它,但要確保沒有再次對它進行簽名。windows powershell 現在應該會拒絕執行修改後的版本,因為簽名已被破壞。
那麼我們建立受信任指令碼的操作就完成了。下面是makecert的一些引數
選項 說明
-nx509name
指定主題的證書名稱。此名稱必須符合 x.500 標準。最簡單的方法是在雙引號中指定此名稱,並加上字首cn=;例如,"cn=myname"。
-pe
將所生成的私鑰標記為可匯出。這樣可將私鑰包括在證書中。
-skkeyname
指定主題的金鑰容器位置,該位置包含私鑰。如果金鑰容器不存在,系統將建立乙個。
-srlocation
指定主題的證書儲存位置。location 可以是currentuser(預設值)或localmachine。
-ssstore
指定主題的證書儲存名稱,輸出證書即儲存在那裡。
-#number
指定乙個介於 1 和 2,147,483,647 之間的序列號。預設值是由 makecert.exe 生成的唯一值。
-$authority
指定證書的簽名許可權,必須設定為commercial(對於商業軟體發行者使用的證書)或individual(對於個人軟體發行者使用的證書)。
-?
顯示此工具的命令語法和基本選項列表。
-!
顯示此工具的命令語法和擴充套件選項列表。
選項 說明-aalgorithm
指定簽名演算法。必須是md5(預設值)或sha1。
-bmm/dd/yyyy
指定有效期的開始時間。預設為證書的建立日期。
-cycerttype
指定證書型別。有效值是end(對於最終實體)和authority(對於證書頒發機構)。
-dname
顯示主題的名稱。
-emm/dd/yyyy
指定有效期的結束時間。預設為 12/31/2039 11:59:59 gmt。
-ekuoid[,oid]
將用逗號分隔的增強型金鑰用法物件識別符號 (oid) 列表插入到證書中。
-hnumber
指定此證書下面的樹的最大高度。
-icfile
指定頒發者的證書檔案。
-ikkeyname
指定頒發者的金鑰容器名稱。
-ikykeytype
指定頒發者的金鑰型別,必須是signature、exchange或乙個表示提供程式型別的整數。預設情況下,可傳入1表示交換金鑰,傳入2表示簽名金鑰。
-inname
指定頒發者的證書公用名稱。
-ipprovider
指定頒發者的 cryptoapi 提供程式名稱。
-irlocation
指定頒發者的證書儲存位置。location 可以是currentuser(預設值)或localmachine。
-isstore
指定頒發者的證書儲存名稱。
-ivpvkfile
指定頒發者的 .pvk 私鑰檔案。
-iypvkfile
指定頒發者的 cryptoapi 提供程式型別。
-llink
到策略資訊的鏈結(例如,乙個 url)。
-mnumber
以月為單位指定證書有效期的持續時間。
-nscp
包括 netscape 客戶端身份驗證擴充套件。
-r
建立自簽署證書。
-scfile
指定主題的證書檔案。
-skykeytype
指定主題的金鑰型別,必須是signature、exchange或乙個表示提供程式型別的整數。預設情況下,可傳入1表示交換金鑰,傳入2表示簽名金鑰。
-spprovider
指定主題的 cryptoapi 提供程式名稱。
-svpvkfile
指定主題的 .pvk 私鑰檔案。如果該檔案不存在,系統將建立乙個。
-sytype
指定主題的 cryptoapi 提供程式型別。
Powershell建立陣列
在powershell中建立陣列可以使用逗號。ps c powershell nums 2,0,1,2 ps c powershell nums20 12對於連續的數字陣列可以使用乙個更快捷的方法 ps c powershell nums 1.5 ps c powershell nums12 345...
powershell 關於命令幫助檔案中引數的解讀
下面以get eventlog命令進行舉例,這裡我就擷取關鍵部分 名稱 get eventlog 摘要 gets the events in an event log,or a list of the event logs,on the local or remote computers.語法 ge...
Powershell批量建立AD賬戶
它是乙個單獨的命令列,即匯入乙個 csv 檔案並使用其中的資訊建立數十甚至數百個新的 active directory 使用者 import csv c provision1.csv foreach object 它確實是個很長的命令,但功能卻強大得令人驚訝。首先是 import csv 本機外殼 ...