Windows PowerShell是一个功能强大的工具,可以使用系统管理员和高级用户执行管理任务,包括任务自动化,管理用户帐户和组,等。尽管如此,PowerShell默认不允许您运行脚本。
相反,预装微软PowerShell集成脚本环境(伊势)Windows 10和11,专门用于运行脚本。但是如果你需要运行脚本和cmdlets同时在PowerShell吗?
如果你尝试在PowerShell脚本,您将看到以下错误消息:
在这种情况下,您需要显式地允许PowerShell脚本运行。不仅如此,您还可以定义政策用于执行脚本,以及它的范围。
现在让我们深入的细节执行政策和它的范围,然后向您展示如何启用Windows PowerShell脚本执行。
表的内容
什么是脚本?
一个脚本是一段代码,在任何编程语言,执行特定的功能或任务。一个脚本可以尽可能短的一个表情,或者只要运行一个复杂的算法。
脚本可以直接运行脚本环境中,应用程序设计的编码或保存在一个文件中,比如一个批处理文件。
在PowerShell脚本的情况下,我们运行代码直接在PowerShell窗口或运行一个PowerShell文件扩展”.PS1“它包含脚本。
之前我们讨论如何让在PowerShell脚本执行,下面是一些信息我们认为你应该事先知道。
PowerShell执行政策和范围
正如我们前面提到的,你可以选择从不同的可配置为PowerShell脚本执行政策。这些政策的目的是区分不同类型的脚本,并允许和阻止。下表列出了政策你可以选择从什么每个人都允许。
执行政策 | 描述 |
默认的 | 设置Windows默认执行政策(限制为Windows和RemoteSigned服务器)。 |
限制 | 这是默认的Windows 10和11执行政策。你不能运行任何PowerShell脚本和PowerShell设置交互模式,这样你只能运行单个命令。 |
RemoteSignedThis是默认执行政策Windows服务器。您可以运行下载PowerShell脚本,但是他们必须签署一个可信的出版商。自己编写(non-downloaded) PowerShell脚本可以运行没有签名。 | |
AllSigned | 你只能运行PowerShell脚本从一个值得信赖的出版商,无论他们来自哪里。 |
不受限制的 | 你可以运行未签名的脚本,但你会得到一个警告在运行之前那些来自互联网。 |
绕过 | 这是最严格的设置。运行任何脚本没有警告或提示。不建议用于测试机器。 |
未定义的 | 没有政策实现,自动适用于限制政策。 |
此外,这些政策可以被定义为一个不同的范围。的范围,我们的意思是,政策将被应用。下表列出了不同的范围内。
范围 | 描述 |
过程 | 设置为当前Windows PowerShell实例执行政策。这将停止一次PowerShell是关闭的。 |
CurrentUser | 执行政策仅为当前用户设置,存储在HKEY_CURRENT_USER注册表键。 |
LocalMachine | 制定的政策对每个人都通过HKEY_LOCAL_MACHINE关键的机器上。 |
MachinePolicy | 使用组策略配置的计算机上的所有用户帐户。 |
UserPolicy | 使用组策略配置为当前用户帐户。 |
您可以使用这些执行政策和范围管理如何在Windows PowerShell执行脚本。
如何让在PowerShell脚本运行吗
您现在可以使用执行政策和作用域的组合来配置如何你想要运行的脚本。下面的每个部分给出了一个不同的例子,如何设置一个政策。
RemoteSigned设置脚本执行政策
用户通常更喜欢设置Windows PowerShell RemoteSigned脚本执行政策,因为它使他们的系统安全,防止未经授权的脚本运行。有两种方法在Windows配置这一政策。
通过设置应用程序
设置应用程序在Windows允许您管理如何,你是否希望在PowerShell允许脚本运行。如何启用它:
- 导航到以下几点:
- Windows 11:
设置应用程序> >隐私和安全> >为开发人员
- Windows 10:
设置应用程序> >更新&安全> >为开发人员
- Windows 11:
- 现在向下滚动到页面的底部和旁边的复选框“改变执行政策,允许当地PowerShell脚本运行没有签字。需要签约下远程脚本”PowerShell部分。然后单击应用。
注意,这将只允许脚本从值得信赖的网络和当地来源“CurrentUser”范围。
从PowerShell
如果你只喜欢命令行界面(CLI),这里是如何配置RemoteSigned从PowerShell直接执行政策:
- 发射PowerShell管理权限。
- 现在粘贴下面的命令和打击输入。
Set-ExecutionPolicy RemoteSigned
- 现在进入一个来确认。
上面的命令将RemoteSigned执行政策为所有用户在电脑上(范围:LocalMachine)。如果你想改变政策的范围,使用范围
参数范围的名称。这是一个例子:
Set-ExecutionPolicy RemoteSigned范围CurrentUser
然后,您将需要确认这个改变。
如何更改脚本执行政策具体范围
现在您可以使用这个方法来配置任何的每个政策之一使用以下cmdlet范围。简单的替换NewPolicy的政策和执行NewScope与您想要定义它的范围。
Set-ExecutionPolicy NewPolicy范围NewScope
脚本执行政策设置为默认
如果您不再希望允许在PowerShell脚本运行,你可以随时改变其价值违约,这是未定义的或限制。然而,如果政策被应用到一个特定的范围,那么您需要更新特定范围的政策了。
下面的命令,我们要恢复的脚本执行策略LocalMachine范围其默认设置:
Set-ExecutionPolicy定义范围LocalMachine
现在可以再次运行脚本用不同的空间变化范围为其默认(限制)的政策。
如何检查PowerShell执行政策
检查当前PowerShell脚本执行政策,在PowerShell运行以下命令:
Get-ExecutionPolicy附些
然后您可以使用这些信息来改变你的脚本执行使用上面给出的指导政策。
常见问题(faq)
我们如何让PowerShell脚本只这一次?
您可以使用过程范围只限制一次性执行政策。执行政策将恢复一旦PowerShell关闭窗口。下面是一个示例代码设置执行政策只RemoteSigned这个PowerShell的实例:force Set-ExecutionPolicy RemoteSigned范围的过程
如何恢复默认所有脚本执行政策?
如果您已经定义了执行政策scope-wise,那么你必须回复他们scope-wise。然而,如果你没有定义一个范围(政策是自动配置LocalMachine),使用以下cmdlet改变它回到默认值:Set-ExecutionPolicy未定义
我们如何允许为当前用户帐户只有PowerShell脚本?
你可以定义一个脚本执行政策经常账户只有通过定义“CurrentUser范围。“这是一个例子:Set-ExecutionPolicy RemoteSigned范围CurrentUser
这将阻止所有其他用户运行在Windows PowerShell脚本。