PowerShell 執(zhí)行策略

本文介紹PowerShell執(zhí)行策略并說明如何管理它們。

什么是PowerShell執(zhí)行策略?

PowerShell 執(zhí)行策略是一項安全功能,用于控制 PowerShell 加載配置文件和運行腳本的條件。 此功能有助于防止惡意腳本的執(zhí)行。

在 Windows 計算機(jī)上,可以為本地計算機(jī)、當(dāng)前用戶或特定會話設(shè)置執(zhí)行策略。 還可使用組策略設(shè)置為計算機(jī)和用戶設(shè)置執(zhí)行策略。

本地計算機(jī)和當(dāng)前用戶的執(zhí)行策略存儲在注冊表中。 無需在 PowerShell 配置文件中設(shè)置執(zhí)行策略。 特定會話的執(zhí)行策略僅存儲在內(nèi)存中,在會話關(guān)閉時丟失。

執(zhí)行策略不是限制用戶操作的安全系統(tǒng)。 例如,當(dāng)用戶無法運行腳本時,可以在命令行中鍵入腳本內(nèi)容,從而輕松繞過策略。 相反,執(zhí)行策略可幫助用戶設(shè)置基本規(guī)則,并防止他們無意中違反這些規(guī)則。

在非 Windows 計算機(jī)上,默認(rèn)執(zhí)行策略是 Unrestricted 且無法更改。 Set-ExecutionPolicy cmdlet 可用,但 PowerShell 會顯示不支持的控制臺消息。 雖然 Get-ExecutionPolicy 在非 Windows 平臺上返回 Unrestricted,但該行為實際上與 Bypass 匹配,因為這些平臺未實施 Windows 安全區(qū)域。

PowerShell執(zhí)行策略有哪些?

AllSigned

腳本可以運行。
要求所有腳本和配置文件都由受信任的發(fā)布者簽名,包括在本地計算機(jī)上編寫的腳本。
在運行來自尚未分類為可信或不可信的發(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ù)器計算機(jī)的默認(rèn)執(zhí)行策略。
腳本可以運行。
需要受信任的發(fā)布者對從 Internet 下載的腳本和配置文件(包括電子郵件和即時消息程序)的數(shù)字簽名。
在本地計算機(jī)上編寫且不是從 Internet 下載的腳本不需要數(shù)字簽名。
如果腳本已解除阻止(例如通過使用 Unblock-File cmdlet),則運行從 Internet 下載且未簽名的腳本。
存在運行來自 Internet 以外來源的未簽名腳本以及可能存在惡意的簽名腳本的風(fēng)險。

Restricted

Windows 客戶端計算機(jī)的默認(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 計算機(jī)的默認(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í)行策略。
  • 例如,為本地計算機(jī)設(shè)置執(zhí)行策略的命令可能會成功,但會被當(dāng)前用戶的執(zhí)行策略覆蓋。

刪除本地計算機(jī)所有用戶的執(zhí)行策略

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

刪除特定作用域執(zhí)行策略

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

參考資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容