我不喜歡PowerShell的語法,總覺得微軟在自己的OS生態圈,使用C#加上本來就在作業系統底層的.NET Framework就解決(謎之音:看看那愚蠢的副檔名!),幹嘛要另外創造出一個語言?但有時候需要方便又快速完成的情境下,又非得需要它不可,這一篇就是在教你怎麼開啟在Windows Work Station版本中被封印的PowerShell。
基於安全的因素,在一般的Windows工作站版本,PowerShell運行檔案式的Script能力是被封印起來,必須要自己手動打開,例如你開啟一個PowerShell隨意執行一個叫做「Sample.ps1」的檔案,可能會得到下列的提示語句:
PS C:\Users\Slashview> .\Sample.ps1 .\Sample.ps1 : 因為這個系統上已停用指令碼執行,所以無法載入 C:\Users\Slashview\Sample.ps1 檔案。 如需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsoft.com/fwlink/?LinkID=135170。
這不是微軟爛,是微軟怕一般使用者耍天,無端去執行可能會毀損電腦的惡意腳本。
解決方式很簡單,把執行權限打開便是。
Step 1. 以Administrator的權限,開啟Cmd,並在之中輸入PowerShell切換到PS工作環境。
Step 2. 輸入指令「Get-ExecutionPolicy」,查看你現在PS被鎖在哪個權限下,理論上會是被鎖住的權限。
PS C:\Users\Slashview> Get-ExecutionPolicy Restricted
Step 3. 輸入指令「Get-ExecutionPolicy」來進行執行權限的切換,以一般的開發環境來說,選擇「RemoteSigned」已經足夠
PS C:\Users\Slashview> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
是的,就這樣而已,不放心的話可以再輸入一次「Get-ExecutionPolicy」查看你現在的PowerShell執行權限。
簡單的說明列表如下,列的越下面的表示擁有更高(更無所謂)的執行權限,除非你有非得必要的理由,否則最好不要開這麼高的權限,以免自己婊到自己。
最後要補充說明的是,在PowerShell的觀點中,每一個身分的ExecutionPolicy均為獨立,所以如果你想要透過某一身分去執行PowerShell的話,可能要用「Set-ExecutionPolicy -Scope OOOOO -ExecutionPolicy XXXXX -Force」稍微設定一下。
PowerShell PS .PS1 ExecutionPolicy CanNotRun Script