Windowspowershell执⾏策略的调整
⼀、Windows PowerShell 执⾏策略允许你确定 Windows PowerShell 加载配置⽂件并运⾏脚本的条件。
你可以为本地计算机、当前⽤户或某个特定的会话设置执⾏策略。也可以使⽤组策略设置为计算机和⽤户设置执⾏策略。
本地计算机和当前⽤户的执⾏策略存储在注册表中。⽆需在 Windows PowerShell 配置⽂件中设置执⾏策略。某个特定会话的执⾏策略仅存储在内存中,当关闭会话时,该执⾏策略会丢失。
执⾏策略不是限制⽤户操作的安全系统。例如,当⽤户⽆法运⾏脚本时,可以通过在命令⾏键⼊脚本内容轻松绕过策略。相反,执⾏策略帮助⽤户设置基本规则并阻⽌他们⽆意中违反规则。
⼆、Windows PowerShell 执⾏策略如下所⽰:
默认执⾏策略为“Restricted”。
1、当执⾏策略为 Restricted 时:
win8 ,win10 中默认执⾏ Restricted 的策略。
允许单独的命令,但不会运⾏脚本。
阻⽌所有脚本⽂件的运⾏。包括格式设置⽂件和配置⽂件 (.ps1xml)、模块脚本⽂件 (.psm1) 和 Windows PowerShell 配置⽂件(.ps1)。
2、当执⾏策略为 AllSigned 时:
脚本可以运⾏。
要求所有脚本和配置⽂件都由受信任的发布者签名,包括在本地计算机上编写的脚本。
会在运⾏来⾃某类发布者(即你尚未归类为受信任或不受信任的发布者)的脚本之前提⽰你。
存在运⾏已签名但却是恶意的脚本的风险。
3、当执⾏策略为 REMOTESIGNED 时:
脚本可以运⾏。
要求从 Internet 下载的脚本和配置⽂件(包括电⼦邮件和即时消息程序)具有受信任的发布者的数字签名。
不要求你在本地计算机上编写的脚本(不是从 Internet 下载的)具有数字签名。
如果脚本已被取消阻⽌(⽐如通过使⽤ Unblock-File cmdlet),则运⾏从 Internet 下载但未签名的脚本。
存在运⾏来⾃ Internet 之外的未签名脚本和已签名但却是恶意的脚本的风险。
4、当执⾏策略为 UNRESTRICTED 时:
未签名的脚本可以运⾏。(这存在运⾏恶意脚本的风险。)
在运⾏从 Internet 下载的脚本和配置⽂件之前提醒⽤户。
5、当执⾏策略为 BYPASS 时:
不阻⽌任何内容,并且没有任何警告或提⽰。
该执⾏策略旨在⽤于后述配置:在其中 Windows PowerShell 被内置于⼀个更⼤的应⽤程序中,或者在其中 Windows PowerShell 是具有其⾃⼰安全模式的程序的基础。
6、当执⾏策略为 UNDEFINED 时:
当前作⽤域中未设置执⾏策略。
如果所有作⽤域中的执⾏策略都是 Undefined,则有效的执⾏策略是 Restricted,它是默认执⾏策略。
注意:在不区分通⽤命名约定 (UNC) 路径和 Internet 路径的系统上,可能不允许使⽤ RemoteSigned 执⾏策略运⾏由 UNC 路径标识的脚本。
三、执⾏策略作⽤域:
你可以设置仅在某个特定作⽤域中有效的执⾏策略。
Scope 的有效值为 Process、CurrentUser 和 LocalMachine。设置执⾏策略时,LocalMachine 是默认值。
按优先顺序列出这些 Scope 值。
1、 PROCESS
执⾏策略仅影响当前会话(当前 Windows PowerShell 进程)。
执⾏策略存储在 $env:PSExecutionPolicyPreference 环境变量中,不是存储在注册表中,并且当关闭会
话时会删除它。不能通过编辑变量值来更改策略。
2、CURRENTUSER
执⾏策略仅影响当前⽤户。它存储在 HKEY_CURRENT_USER 注册表⼦项中。
3、LOCALMACHINE
执⾏策略会影响当前计算机上的所有⽤户。它存储在 HKEY_LOCAL_MACHINE 注册表⼦项中。
优先的策略在当前会话中有效,即使在较低优先级上设置了更加严格的策略。
有关详细信息,请参阅 Set-ExecutionPolicy。
四、获取你的执⾏策略:
(若要获取在当前会话中有效的 Windows PowerShell 执⾏策略,则使⽤ Get-ExecutionPolicy cmdlet。)
1、获取当前执⾏策略的命令: Get-ExecutionPolicy
2、若要获取影响当前会话的所有执⾏策略,并按优先顺序显⽰它们,请键⼊:Get-ExecutionPolicy -List
输出的结果类似如下:
在这种情况下,有效的执⾏策略是 RemoteSigned,因为当前⽤户的执⾏策略优先于为本地计算机设置的执⾏策略。
3、若要获取为某个特定作⽤域设置的执⾏策略,请使⽤ Get-ExecutionPolicy 的 Scope 参数。
例如,以下命令获取当前⽤户作⽤域的执⾏策略:
Get-ExecutionPolicy -Scope CurrentUser
五、执⾏策略的更改:
1、若要更改你计算机上的 Windows PowerShell 执⾏策略,请使⽤: Set-ExecutionPolicy cmdlet
更改会⽴即⽣效,你⽆需重新启动 Windows PowerShell。
(1)、如果你设置本地计算机(默认)或当前⽤户的执⾏策略,更改会保存在注册表中,并且在再次更改之前会保持有效。
(2)、如果你设置当前进程的执⾏策略,则更改不会保存在注册表中。它会保留,直到关闭当前进程和任何⼦进程。
注意:在 Windows Vista 和 Windows 的更⾼版本中,若要运⾏更改本地计算机(默认)的执⾏策略的命令,请使⽤“以管理员⾝份运⾏”选项启动 Windows PowerShell。
2、若要更改你的执⾏策略,请键⼊:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
如:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
3、若要设置某个特定作⽤域中的执⾏策略,请键⼊:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
如:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
4、更改执⾏策略的命令会成功,但有可能仍然不会更改有效的执⾏策略。
例如,⽤于设置本地计算机的执⾏策略的命令可能成功,但会被当前⽤户的执⾏策略覆盖。
六、执⾏策略的删除:
若要删除某个特定作⽤域的执⾏策略,则将执⾏策略的值设置为 Undefined。
例如,若要删除本地计算机的所有⽤户的执⾏策略,请键⼊:
Set-ExecutionPolicy Undefined
或者键⼊:Set-ExecutionPolicy Undefined -scope LocalMachine
如果未在任何作⽤域中设置执⾏策略,则有效的执⾏策略是 Restricted,它是默认执⾏策略。
七、为某个会话设置⼀个不同的执⾏策略:
你可以使⽤ 的 ExecutionPolicy 参数为新的 Windows PowerShell 会话设置执⾏策略。策略仅影响当前会话和⼦会话。
若要设置新会话的执⾏策略,则在命令⾏(⽐如 或 Windows PowerShell)启动 Windows PowerShell,然后使⽤ 的 ExecutionPolicy 参数来设置执⾏策略。
例如: -ExecutionPolicy AllSigned
你设置的执⾏策略不是存储在注册表中,⽽是存储在 $env:PSExecutionPolicyPreference 环境变量中。当关闭在其中设置了策略的会话时,会删除变量。不能通过编辑变量值来更改策略。
在会话期间,为会话设置的执⾏策略优先于在注册表中为本地计算机或当前⽤户设置的执⾏策略。但是,它并不优先于通过使⽤组策略设置的执⾏策略。
⼋、使⽤组策略管理执⾏策略:
你可以使⽤“打开脚本执⾏”组策略设置来管理你企业中的计算机的执⾏策略。组策略设置覆盖所有作⽤域中的 Windows PowerShell 中设置的执⾏策略。
“打开脚本执⾏”策略设置如下所⽰:
powershell怎么以管理员身份运行
如果禁⽤“打开脚本执⾏”,则脚本不会运⾏。这等效于“Restricted”执⾏策略。
如果启⽤“打开脚本执⾏”,则可以选择⼀个执⾏策略。组策略设置等效于以下执⾏策略设置。
如果未配置“打开脚本执⾏”,则它将不起作⽤。在 Windows PowerShell 中设置的执⾏策略是有效的。
PowerShellExecutionPolicy.adm 和 PowerShellExecutionPolicy.admx ⽂件将“打开脚本执⾏”策略添加到以下路径中组策略编辑器中的计算机配置节点和⽤户配置节点中。
For Windows XP and Windows Server 2003: Administrative Templates\Windows Components\Windows PowerShell
For Windows Vista and later versions of Windows: Administrative Templates\Classic Administrative Templates\ Windows Components\Windows PowerShell
在计算机配置节点中设置的策略优先于在⽤户配置节点中设置的策略。
九、执⾏策略优先级:
在确定会话的有效执⾏策略时,Windows PowerShell 按以下优先顺序对执⾏策略进⾏评估:
Group Policy: Computer Configuration
Group Policy: User Configuration
Execution Policy: Process ( -ExecutionPolicy)
Execution Policy: CurrentUser
Execution Policy: LocalMachine
⼗、管理已签名的和未签名的脚本
如果你的 Windows PowerShell 执⾏策略是 RemoteSigned,则 Windows PowerShell 将不会运⾏从 Internet 下载的未经签名的脚本(包括电⼦邮件和即时消息程序)。
你可以对脚本进⾏签名或选择运⾏未经签名的脚本,⽽不更改执⾏策略。
从 Windows PowerShell 3.0 开始,你可以使⽤ Get-Item cmdlet 的 Stream 参数来检测被阻⽌的⽂件,因为它们是从 Internet 下载的,并且你可以使⽤ Unblock-File cmdlet 取消阻⽌脚本以便你可以在 Windows PowerShell 中运⾏它们。
有关详细信息,请参阅 about_Signing、Get-Item 和 Unblock-File。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。