簡體   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