本文介紹
PowerShell
執(zhí)行策略并說明如何管理它們炕倘。
什么是PowerShell
執(zhí)行策略拼弃?
PowerShell 執(zhí)行策略是一項安全功能垢揩,用于控制 PowerShell 加載配置文件和運行腳本的條件抑片。 此功能有助于防止惡意腳本的執(zhí)行。
在 Windows 計算機上呻顽,可以為本地計算機、當(dāng)前用戶或特定會話設(shè)置執(zhí)行策略丹墨。 還可使用組策略設(shè)置為計算機和用戶設(shè)置執(zhí)行策略廊遍。
本地計算機和當(dāng)前用戶的執(zhí)行策略存儲在注冊表中。 無需在 PowerShell 配置文件中設(shè)置執(zhí)行策略贩挣。 特定會話的執(zhí)行策略僅存儲在內(nèi)存中喉前,在會話關(guān)閉時丟失。
執(zhí)行策略不是限制用戶操作的安全系統(tǒng)王财。 例如卵迂,當(dāng)用戶無法運行腳本時,可以在命令行中鍵入腳本內(nèi)容绒净,從而輕松繞過策略见咒。 相反,執(zhí)行策略可幫助用戶設(shè)置基本規(guī)則挂疆,并防止他們無意中違反這些規(guī)則改览。
在非 Windows 計算機上,默認(rèn)執(zhí)行策略是 Unrestricted 且無法更改缤言。 Set-ExecutionPolicy cmdlet 可用宝当,但 PowerShell 會顯示不支持的控制臺消息。 雖然 Get-ExecutionPolicy 在非 Windows 平臺上返回 Unrestricted墨闲,但該行為實際上與 Bypass 匹配今妄,因為這些平臺未實施 Windows 安全區(qū)域。
PowerShell
執(zhí)行策略有哪些鸳碧?
AllSigned
腳本可以運行盾鳞。
要求所有腳本和配置文件都由受信任的發(fā)布者簽名,包括在本地計算機上編寫的腳本瞻离。
在運行來自尚未分類為可信或不可信的發(fā)布者的腳本之前會提示你腾仅。
存在運行已簽名的惡意腳本的風(fēng)險。
Bypass
不阻止任何操作套利,并且沒有任何警告或提示推励。
此執(zhí)行策略專為將 PowerShell 腳本內(nèi)置到較大應(yīng)用程序中的配置鹤耍,或以 PowerShell 為具有自己的安全模型的程序的基礎(chǔ)的配置而設(shè)計。
Default
設(shè)置默認(rèn)執(zhí)行策略验辞。
Restricted(適用于 Windows 客戶端)稿黄。
RemoteSigned(適用于 Windows 服務(wù)器)。
RemoteSigned
Windows 服務(wù)器計算機的默認(rèn)執(zhí)行策略跌造。
腳本可以運行杆怕。
需要受信任的發(fā)布者對從 Internet 下載的腳本和配置文件(包括電子郵件和即時消息程序)的數(shù)字簽名。
在本地計算機上編寫且不是從 Internet 下載的腳本不需要數(shù)字簽名壳贪。
如果腳本已解除阻止(例如通過使用 Unblock-File cmdlet)陵珍,則運行從 Internet 下載且未簽名的腳本。
存在運行來自 Internet 以外來源的未簽名腳本以及可能存在惡意的簽名腳本的風(fēng)險违施。
Restricted
Windows 客戶端計算機的默認(rèn)執(zhí)行策略互纯。
允許單個命令,但不允許腳本磕蒲。
阻止運行所有腳本文件留潦,包括格式和配置文件 (.ps1xml)、模塊腳本文件 (.psm1) 和 PowerShell 配置文件 (.ps1)亿卤。
Undefined
當(dāng)前作用域內(nèi)沒有設(shè)置執(zhí)行策略愤兵。
如果所有作用域內(nèi)的執(zhí)行策略均為 Undefined,則對于 Windows 客戶端排吴,有效執(zhí)行策略為 Restricted秆乳;對于 Windows Server,有效執(zhí)行策略為 RemoteSigned钻哩。
Unrestricted
非 Windows 計算機的默認(rèn)執(zhí)行策略屹堰,無法更改。
未簽名的腳本可以運行街氢。 存在運行惡意腳本的風(fēng)險扯键。
在運行非來自本地 Intranet 區(qū)域的腳本和配置文件之前警告用戶。
如何操作珊肃?
查看當(dāng)前執(zhí)行策略
Get-ExecutionPolicy
查看所有執(zhí)行策略
Get-ExecutionPolicy -List
查看當(dāng)前用戶作用域下的執(zhí)行策略
Get-ExecutionPolicy -Scope CurrentUser
更改執(zhí)行策略
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
# 例如:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
更改特定作用域執(zhí)行策略
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
# 例如:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- 更改執(zhí)行策略的命令可能會成功荣刑,但仍然不會更改有效的執(zhí)行策略。
- 例如伦乔,為本地計算機設(shè)置執(zhí)行策略的命令可能會成功厉亏,但會被當(dāng)前用戶的執(zhí)行策略覆蓋。
刪除本地計算機所有用戶的執(zhí)行策略
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
刪除特定作用域執(zhí)行策略
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser