如果需要,我使用以下代码以管理员权限重新运行脚本。
# Require admin
if(!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
然而,在某些系统上,当我右键单击脚本并选择使用powershell运行时,它会提示我输入类似的内容是、否、全部、取消。。。等等。我不知道什么时候会发生这种事。如果没有上述提示,我如何强制更改执行策略?我检查了文档,似乎没有powershell
的-force
参数。不过,cmdletset-executionpolicy
有一个-force
参数。
"为什么"有时会得到提示是因为某些"系统"上的帐户已经以管理员身份运行它(以前登录时已经发生过提升或被GPO禁用(。但是,如果您在远程计算机上运行此程序,如果您已经对该计算机具有管理员权限,则不需要提升权限,但如果用户已经以管理员身份签名,则从当前会话运行该程序将需要提升权限。
查看Microsoft在How User Account Control works
上的文档https://learn.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works
另一方面,我认为对于您的用例可能有一个更好的方法。