我正在尝试使用Invoke-Command
在远程服务器上作为PowerShell作业运行多个查询。但我可以看到,在单个服务器上,它不能运行超过25个作业实例。知道如何增加限制吗?我确实尝试将每个用户的max 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 :(得分:1)
wsman:\ localhost \ shell \ MaxShellsPerUser设置全局配额 - 这是放在一起的所有端点的总配额。创建远程会话时,它默认是针对Microsoft.PowerShell创建的。在WSMan下,需要增加该配额:\ localhost \ Plugin \ microsoft.powershell \ Quotas \ MaxShellsPerUser(默认值为25 )