2016-03-21 40 views
0

我試圖使用Invoke-Command在遠程服務器上運行多個查詢作爲PowerShell作業。但是我可以看到,在一臺服務器上,它不能運行超過25個作業實例。任何想法如何我可以增加限制?我曾嘗試將每個用戶的最大shell設置爲50,但沒有幫助。擴展遠程會話計數

下面是代碼:每個遠程服務器上

foreach ($com in $hostcomp) { 
    Invoke-Command -ComputerName $com -ScriptBlock { 
     cd WSMan:\localhost\Shell 
     dir 
     Set-Item .\MaxShellsPerUser 1000 
     dir 
     Set-Item .\MaxProcessesPerShell 1000 
     dir 
    } 
    Get-VM -ComputerName $com | Select -ExpandProperty name | 
     Out-File c:\vmfile.txt 
    $vm = Get-Content "c:\vmfile.txt" 
    foreach ($v in $vm) { 
     Write-Host $v " on $com is being SHUTDOWN..................Please Wait!" 
     Invoke-Command -ComputerName $com -ScriptBlock { 
      param($v) 
      Stop-VM -name $v -Force 
     } -ArgumentList $v -AsJob -JobName "ShutDownVMsss" 
    } 
} 

後25工作失敗與用戶允許會話的最大錯誤數量已經突破。

+0

包含示例代碼,因此我們不必提問諸如作業是本地還是遠程運行的問題。 –

+0

添加了代碼。 –

+0

只是爲了確認,這些是你正在運行的不同服務器?因爲使用默認設置,我可以在兩個不同的服務器上運行40次調用,而不會出現錯誤,只要不超過25個 –

回答

1

wsman:\ localhost \ shell \ MaxShellsPerUser設置全局配額 - 這是所有端點放在一起的總配額。當您創建一個遠程會話時,默認情況下會創建一個遠程會話,並與Microsoft.PowerShell配合使用。需要增加WSMan的配額:\ localhost \ Plugin \ microsoft.powershell \ Quotas \ MaxShellsPerUser(默認爲25