如何在Windows PowerShell中启用和使用脚本执行策略
如何在Windows PowerShell中启用和使用脚本执行策略
默认情况下,PowerShell允许您通过其控制台运行命令(cmdlet)。要执行脚本,您可以使用脚本代码创建一个记事本文件,使用.ps1文件扩展名保存它,然后通过PowerShell控制台执行它。也可以直接将脚本粘贴到控制台执行。
但是,如果这是您第一次通过PowerShell执行脚本,您会遇到“正在运行的脚本已被禁用”错误。默认情况下,禁用PowerShell上的脚本执行作为一项安全措施,以防止恶意脚本在您的系统上运行。在这里,我们向您展示了在Windows PowerShell上启用脚本执行策略的两种方法。
如何检查您现有的执行策略
完成后,打开PowerShell,键入get-executionpolicy
执行政策,并按下Enter
进入。当前用户的执行策略现在设置为RemoteSigned
远程签名。
如果需要禁用执行策略,请切换PowerShell开关并将其设置为Off
。
如何使用PowerShell允许脚本在PowerShell中运行
您可以使用PowerShell cmdlet将执行策略设置为RemoteSigned。命令行界面使您无需使用“设置”应用程序即可轻松快速更改执行策略。
此外,设置应用程序只能启用或禁用RemoteSigned执行策略。而PowerShell还允许您设置其他策略和范围。
要使用PowerShell更改执行策略:
- 以管理员身份打开PowerShell。
- 在PowerShell窗口中,键入以下命令并按
Enter
进入:Set-ExecutionPolicy RemoteSigned
- 如果出现提示,请按
A
确认动作。这将设置RemoteSigned远程签名所有用户的执行策略。如果你想为Current User当前用户仅使用Scope参数后跟用户名。 - 例如,设置RemoteSigned远程签名的执行政策CurrentUser当前用户,使用以下命令:
Set-ExecutionPolicy RemoteSgined -Scope CurrentUser
- 代替CurrentUser根据您的要求,在上述命令中与其他用户(范围)一起使用。
如何使用PowerShell删除脚本执行策略
如果要禁用脚本执行,请将执行策略设置为Undefined不明确的使用e Set_ExecutionPolicy命令。这是默认状态,可防止PowerShell执行任何脚本。
要使用PowerShell禁用脚本执行:
- 使用提升的权限打开PowerShell。
- 接下来,键入以下命令并按enter键以禁用所有用户的脚本执行:
Set-ExecutionPolicy undefined
- 上面的命令将为所有用户设置执行策略默认值(未定义)。如果要为特定范围禁用脚本执行,请使用以下命令:
Set-ExecutionPolicy undefined -Scope CurrentUser
- 上面的命令将禁用脚本执行CurrentUser当前用户。
了解执行策略和范围
简单来说,PowerShell的执行策略就是控制PowerShell如何执行配置文件和脚本的策略。预期目的是防止用户意外运行恶意脚本。七个PowerShell执行策略是Default, Restricted, RemoteSigned, AllSigned, Unrestricted, Bypass, and Undefined默认、受限、RemoteSigned、AllSigned、不受限、旁路和未定义。
下表简要说明了所有PowerShell执行策略:
执行政策 | 执法 |
---|---|
Default | 将默认执行策略设置为Restricted on Windows Client和RemoteSigned on Windows Server。 |
AllSigned | 允许执行发布者签名的脚本。 |
Bypass | 不受限制地执行大型应用程序的脚本。 |
RemoteSigned | 允许本地编写的脚本执行。从Internet下载的脚本需要数字签名。 |
Restricted | 不允许脚本执行,但只允许执行单个PowerShell命令。 |
Undefined | 将执行策略设置为Restricted for Windows clients和RemoteSigned for Windows Server。 |
Unrestricted | 允许执行未签名的脚本,并对从Internet下载的脚本发出警告。 |
执行策略范围
您可以在PowerShell中为特定范围设置执行策略。五个执行策略范围是MachinePolicy, UserPolicy, Process, CurrentUser,和本地机器。
下表简要说明了所有执行策略范围:
执行策略范围 | 执法 |
---|---|
UserPolicy | 由当前用户的组策略配置。 |
MachinePolicy | 由所有用户的组策略配置。 |
CurrentUser | 为当前用户配置并存储在HKEY_CURRENT_MACHINE注册表子项中。 |
LocalMachine | 为所有用户配置并存储在HKEY_CURRENT_MACHINE注册表子项中。 |
Process | 影响当前的PowerShell会话并在会话关闭时自动删除。 |
在Windows上添加或删除PowerShell脚本执行策略
Windows客户端默认禁用PowerShell上的脚本执行,Windows服务器设置为RemoteSigned。但是,高级用户可以更改执行策略以运行本地、已签名和未签名的PowerShell脚本。
或者,您可以通过将脚本粘贴到PowerShell控制台或将您的脚本回显到PowerShell标准输入来绕过PowerShell执行策略。如果您想在不更改执行策略的情况下执行脚本,这将很有用。