.ps1文件是PowerShell寫好的腳本文件。在Windows系統(tǒng)中,默認(rèn)情況下是不允許執(zhí)行.ps1文件的,那么怎么才能讓系統(tǒng)允許執(zhí)行.ps1文件呢?
什么是“.ps1”文件?
這個是PowerShell寫的腳本文本,你可以在記事本中寫一段PowerShell代碼,然后將其保存為“xxx.ps1”,后面要使用它的時(shí)候,雙擊即可運(yùn)行了。這有點(diǎn)像批處理的“.bat”文件,也有點(diǎn)像VBScript的“.vbs”文件。這些都是Windows的腳本文件。
如何執(zhí)行“.ps1”文件?
接下來大家會問,那我們就雙擊它運(yùn)行好了,還有什么好說的嗎?當(dāng)然要說。我們想得很美,雙擊一下就執(zhí)行了,但是Windows系統(tǒng)默認(rèn)是不允許執(zhí)行.ps1文件的,所以你得往下看。
執(zhí)行不成功的解決辦法
1、將PowerShell的腳本內(nèi)容保存到一個.ps1為后綴的文件中。
2、雙擊執(zhí)行此ps1文件很有可能無法執(zhí)行,提示:無法加載文件 D:\PowerShell\test\myfirst1.ps1,因?yàn)樵诖讼到y(tǒng)中禁止執(zhí)行腳本。
3、運(yùn)行g(shù)et-executionpolicy,如果結(jié)果是Restricted,那表示禁止執(zhí)行腳本。
4、執(zhí)行如下命令,降低系統(tǒng)的安全性,允許執(zhí)行腳本:set-executionpolicy -executionpolicy unrestricted
關(guān)于執(zhí)行策略
這里有一個executionpolicy,翻譯過來就是執(zhí)行策略。Windows對PowerShell腳本默認(rèn)的執(zhí)行策略是:不允許執(zhí)行,即Restricted。把它改成unrestricted自然就可以執(zhí)行了。但微軟給出的Best Practise(“最佳實(shí)踐”)是RemoteSigned,這個級別比UnRestricted要高一點(diǎn),不是什么程序都能執(zhí)行。據(jù)我簡單的了解,RemoteSigned是要求遠(yuǎn)程下載的ps1腳本文件必須是簽名的才可以執(zhí)行。至于我們在本機(jī)上自寫的腳本程序,那是沒有區(qū)別,都可以執(zhí)行的。
修改執(zhí)行策略需要權(quán)限
另外需要說明的是,如果是在Win7、Win8、Windows 2008、Windows 2012等系統(tǒng)上,且不是使用administrator賬號來執(zhí)行這個set-executionpolicy語句,將會報(bào)錯,錯誤如下:
Set-ExecutionPolicy : 對注冊表項(xiàng)“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell”的訪問被拒絕。
這時(shí)候小編很疑惑,我使用賬號雖然不是administrator,但也是administrators組的,為什么會沒有權(quán)限呢?不管了,在注冊表中,找到這個鍵,然后點(diǎn)右鍵選擇“權(quán)限”,然后給當(dāng)前登錄系統(tǒng)的賬號加一個“完全控制”的權(quán)限(只有“只讀”和“完全控制”兩個權(quán)限,所以就選“完全控制”了)。然后,再重新執(zhí)行set-executionpolicy -executionpolicy unrestricted,就可以成功了!
您可能感興趣的文章:- Windows PowerShell是啥?看完本文你就懂它了
- 25個常用PowerShell命令總結(jié)
- Powershell實(shí)現(xiàn)編寫和運(yùn)行腳本
- PowerShell單行注釋、多行注釋、塊注釋的方法
- Windows Powershell 執(zhí)行文件和腳本
- 如何防范PowerShell代碼注入漏洞繞過受限語言模式