我试过:
##powershell.exe -executionpolicy -bypass
##Unblock-File -Path C:\SRM.ps1
Set-ExecutionPolicy -Scope Process -ExecutionPolicy ByPass不管我做什么,我都会犯这样的错误:
无法加载文件C:\SRM.ps1。文件C:\SRM.ps1没有数字签名。不能在当前系统上运行此脚本。
我在最新的windows 11版本上。使用Powershell ISE,我将作为管理员运行该应用程序。
还有什么?
发布于 2022-09-22 17:18:55
您的有效执行策略是AllSigned,这意味着只允许运行加密署名脚本文件(*.ps1),而不管它们是本地文件还是从web下载的(也就是说,Unblock-File没有什么区别)。
正如奥拉夫所指出的,如果有效的执行策略阻止了脚本的执行,那么尝试从脚本内部更改执行策略就无法工作。
将PowerShell CLI (powershell.exe for Windows PowerShell,pwsh for PowerShell (Core) 7+)与-ExecutionPolicy Bypass一起使用原则上是正确的方法,如果目的是仅覆盖给定PowerShell会话(进程)的有效执行策略。
但是,从命令行/通过重写有效的执行策略
如果您的执行策略是通过GPO(组策略对象)(GPO(组策略对象))控制的,那么Set-执行策略 从根本上做了而不是工作。
若要确定计算机/用户帐户的执行策略是否由GPO控制,请检查Get-ExecutionPolicy -List的输出
如果作用域MachinePolicy或UserPolicy的值显示Undefined以外的值,则GPO策略生效;如果这两个值与Undefined不同,则MachinePolicy值优先;输出顺序一般意味着优先级顺序。
换句话说:只有当Get-ExecutionPolicy的输出以以下两个条目开头时,才能使用命令行或Set-ExecutionPolicy覆盖执行策略。
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process ...
CurrentUser ...
LocalMachine ...除了修改GPO以更改有效策略外,没有直接的解决方案,尽管您可以使用CLI和-Command提交命令,将脚本文件读入内存并通过Invoke-Expression执行(尽管这个cmdlet 一般应避免),但是对于依赖反射特性(如$PSCommandPath和$PSScriptRoot )来确定自己的文件和目录路径的脚本来说,这是行不通的。
https://stackoverflow.com/questions/73814620
复制相似问题