繁体   English   中英

执行政策修改

[英]Execution policy modification

我需要在不同的服务器上运行一些脚本,这些脚本将依次停止/启动许多其他服务器上的服务。

我创建了一个脚本,将策略更改为“绕过”并运行脚本,然后将更改恢复为正常。

$LOGPATH = "output.txt"
$system_default_policy = Get-ExecutionPolicy
"Current execution policy $system_default_policy" | Out-File -FilePath $LOGPATH
if ($syste_default_policy -ne 'Bypass') {
    "Changing the execution policy from $system_default_policy to Bypass" | Out-File -FilePath $LOGPATH -Append
    Set-ExecutionPolicy Bypass -Force
    "Successfully changed the execution policy to Bypass" | Out-File -FilePath $LOGPATH -Append
}

### executing the commands to stop/start the services

"Re-writing the changes to default policy" | Out-File -FilePath $LOGPATH -Append
Set-ExecutionPolicy $system_default_policy -Force
"Changed the policy to " + $(Get-ExecutionPolicy) | Out-File -FilePath $LOGPATH -Append

但是,在以下情况下,这似乎是多余的过程。

  1. 如果执行策略已经是Bypass,那么我只是在最后一行中将其重置。
  2. 我必须在同一台服务器上运行多个脚本,因此对于每个脚本,我都将其更改为“绕过”并将其设置回原始状态。

还有其他方法可以在执行脚本之前仅运行一次此脚本(以更改执行策略),然后在运行所有脚本后最后将其更改为原始值。

执行策略仅适用于脚本,因此不适用于在主机上调用或作为命令传递的代码。 有多种方法可以做到这一点,其中包括:

从远程计算机Invoke-Command

Invoke-Command -ComputerName $Computer -ScriptBlock { 
    # Code 
}

powershell.exe -Command本地命令

powershell.exe -Command "#code"

但是,通常最简单的运行脚本而不更改配置的方法是

powershell.exe -ExecutionPolicy Bypass -File C:\yourscript.ps1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM