2015-11-04 170 views
0

我正在使用powershell在多臺服務器上嘗試遠程運行安裝腳本,但已變得有點卡住了。在多臺服務器上通過powershell運行bat文件

以下是我到目前爲止。 Computers.txt包含我想要在其上運行安裝的所有服務器的列表。這些全都坐在同一個域上。然後映射驅動器以瀏覽腳本所在的共享位置,然後運行安裝腳本。

$computers = Get-Content -Path c:\temp\Computers.txt 

New-PSDrive –Name 「S」 –PSProvider FileSystem –Root 「\\dc1-app01\apps」 –Persist 

Start-Process -FilePath S:\createfile.bat 

我希望我失蹤了很多,爲了這個工作? bat文件本身非常複雜,因此目前我不想將其更改爲powershell。

我從中運行的PC也是這些服務器上的受信任主機。

感謝您的投入,我是一個PowerShell新手

感謝

+1

有什麼實際問題? – Sean

回答

1

我想你錯過了通過服務器列表(陣列)運行在循環:

$VerbosePreference = 'Continue' 

$Computers = Get-Content -Path c:\temp\Computers.txt 

Foreach ($C in $Computers) { 

    Write-Verbose "Start batch file as a job on $C" 

    Invoke-Command -ComputerName $C -ScriptBlock { 
     New-PSDrive –Name 'S' –PSProvider FileSystem –Root '\\dc1-app01\apps' –Persist 
     Start-Process -FilePath S:\createfile.bat -Wait 
    } -AsJob 
} 

Write-Verbose 'Waiting for all jobs to finish' 
Wait-Job 
Write-Verbose 'Showing job results:' 
Get-Job | Receive-Job 

我也使它成爲一項工作,所以你可以同時在多臺服務器上運行它。

爲了更加簡化的東西,你不必映射驅動器只是嘗試這Invoke-CommandScriptBlock

& '\\dc1-app01\apps\createfile.bat' 
+0

感謝您的迴應。我試圖運行你推薦的命令,但我得到提示輸入ID參數?似乎儘管開始運行遠程作業。我當前運行的批處理文件是一個簡單的創建文件。有任何想法嗎? –

相關問題