在Windows系统中,默认情况下是不允许直接执行.ps1(PowerShell脚本)文件的,因为这可能带来安全风险。比如默认情况下在vscode中就无法运行npm命令。
但你可以通过更改PowerShell的执行策略来允许执行这些脚本。以下是具体步骤:
1.以管理权限身份运行powershell
由于更改执行策略是一个高级操作,你需要以管理员身份运行PowerShell。你可以通过以下方式实现:
在Windows搜索栏中输入“PowerShell”。
右键单击“Windows PowerShell”或“Windows PowerShell ISE”(取决于你习惯使用的版本),并选择“以管理员身份运行”。
2.查看当前的执行策略
通过以下命令查看当前执行策略:
Get-ExecutionPolicy有如下策略:
AllSigned:要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。Bypass: 不阻止任何操作,并且没有任何警告或提示。Default。:设置默认执行策略。 Restricted 适用于 Windows 客户端或 RemoteSigned Windows 服务器。RemoteSigned: 要求从 Internet 下载的所有脚本和配置文件都由受信任的发布者签名。 Windows 服务器计算机的默认执行策略。Restricted: 不加载配置文件或运行脚本。 Windows 客户端计算机的默认执行策略。Undefined:没有为范围设置执行策略。 从组策略未设置的范围中删除分配的执行策略。 如果所有范围内的执行策略为 Undefined,则有效执行策略为 Restricted。Unrestricted: 从 PowerShell 6.0 开始,这是非 Windows 计算机的默认执行策略,无法更改。 加载所有配置文件并运行所有脚本。 如果运行从 Internet 下载的未签名脚本,则系统将提示你需要权限才能运行该脚本。
默认情况下应该为:Restricted
3.更改执行策略
为了允许执行.ps1脚本,你需要将执行策略更改为RemoteSigned(如果你信任本地脚本并且希望允许运行经过签名的远程脚本)或Unrestricted(如果运行从 Internet 下载的未签名脚本,则系统将提示你需要权限才能运行该脚本)或Bypass(如果你希望允许运行所有脚本,无论是否签名)。但请注意,Bypass策略可能会降低系统的安全性。
Set-ExecutionPolicy Bypass参数-Scope 可指定作用范围, “-Scope CurrentUser” 表示当前用户范围, 可无需系统管理员身份
默认是系统级别范围 -scope LocalMachine 可以神略, 但需要 系统管理员 身份执行
只有一条评论 (QwQ)
不用直接永久改权限,可以用临时权限来运行ps1脚本,这样不需要降低整体的安全策略,在ps1脚本目录下启动PS终端,然后输入`PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File "脚本.ps1"`就可以了,用临时的 Bypass 权限运行脚本。如果嫌麻烦可以写一个通用的bat一键运行。