2011-09-21 88 views
2

我也不會感到驚訝,如果這是不可能的,但我需要幾個構建服務器上設置的執行策略(在32位PowerShell的環境) - 這將是,如果我可以寫一個腳本這快多了,但我現在嘗試我可以使用腳本設置powershell執行策略嗎?

%SystemRoot%\syswow64\WindowsPowerShell\v1.0\ 
    powershell.exe -Version 2 
    -Command "& {Set-ExecutionPolicy -ExecutionPolicy RemoteSigned}" 

完成後沒有任何可見的錯誤,但未設置執行策略。

我想這將創建一個有點安全漏洞,如果用戶可能被欺騙運行改變了他們執行政策的一個劇本,但我吼聲我會問這個問題呢

感謝


好的 - 理查德和克萊卡是完全正確的,我有點愚蠢。 重試命令後 - 我發現它確實有效(儘管我在問題中說了什麼)。我想我必須在32到64個powershell之間混合起來(即將執行策略設置爲1,然後在另一箇中檢查值)。

道歉。

+0

由於您需要能夠通過腳本執行腳本來更改策略,因此我認爲這個想法可能存在缺陷。 – JNK

回答

2

您可以這樣做,但腳本將在當前(即腳本之前)強制執行策略下運行或不運行。

明顯的方法是用可信證書籤署腳本。

但是,如果要共同管理服務器,爲何不將它們放入Active Directory OU或組中,然後使用組策略設置執行策略?

(不要忘記,你需要將其設置爲32個和64位進程。)

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版本。

相關問題