如果这不可能,我不会感到惊讶,但我需要在几个构建服务器上设置执行策略(在32位PowerShell环境中) - 如果我可以编写脚本,但我目前的尝试会更快p>
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\
powershell.exe -Version 2
-Command "& {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned}"
完成时没有任何可见错误,但未设置执行策略。
我想如果用户被欺骗运行改变执行政策的脚本会产生一些安全漏洞,但我仍然会问这个问题
由于
道歉。
答案 0 :(得分:2)
您可以执行此操作,但脚本将在强制执行策略中的当前(即脚本之前)运行或不运行。
显而易见的方法是使用受信任的证书对脚本进行签名。
但是,如果要集中管理服务器,为什么不将它们放在Active Directory OU或组中,然后使用组策略设置执行策略?
(不要忘记你需要为32位和64位进程设置它。)
答案 1 :(得分:2)
您的命令将起作用(并且可以在我的计算机上运行) - 执行策略不会影响您直接传递给powershell.exe的Command参数的任何内容(即使它确实存在ExecutionPolicy参数)。你肯定是从64位会话运行的吗?
如果您确实要编写脚本,可以从本地工作站运行:
$LaunchLine = 'powershell.exe -Version 2 -Command "& {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned}"'
$ComputerList = "PC01", "PC02"
foreach($Computer in $ComputerList)
{
[String]$wmiPath = "\\{0}\root\cimv2:win32_process" -f $computer
try
{
[wmiclass]$Executor = $wmiPath
$executor.Create($LaunchLine)
}
catch
{
continue;
}
}
它在$ ComputerList中的每台计算机上创建一个新进程并执行您的命令。就像我说的,你的命令可以在我的电脑上运行。我认为问题在于它是否真正运行你所追求的PowerShell版本。