2016-03-21 1 views
0

Я пытаюсь использовать Invoke-Command для запуска нескольких запросов на удаленном сервере в качестве задания PowerShell. Но я мог видеть, что на одном сервере он не может запускать более 25 экземпляров заданий. Любая идея, как я могу увеличить лимит? Я попытался установить максимальную оболочку на пользователя на 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)