Исключение OutOfMemory при удаленном выполнении с использованием Powershell Invoke-Command

Я пытаюсь выполнить exe на удаленном компьютере с помощью команды вызова. Выполнение исполняемого файла на удаленной машине после входа в систему с помощью удаленного рабочего стола занимает 1 ГБ памяти и выполняется до завершения через минуту. Принимая во внимание, что когда я запускаю тот же exe-файл с помощью Invoke-Command на той же машине, процесс возвращает исключение OutOfMemoryException и внезапно завершается. Моя команда вызова проста как Invoke-Command -Session $someSessionVariable -ScriptBlock {Invoke-Expression "abc.exe --arg arg"} -AsJob.

Я что-то упустил в отношении ограничений на удаленный вызов?

Заранее спасибо.


person manukranthk    schedule 12.03.2012    source источник


Ответы (3)


Полный сценарий PowerShell, основанный на ответе mjolinor, для всех, кто хочет пропустить причины и просто заставить его работать:

Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1000000
Set-Item WSMan:\localhost\Plugin\Microsoft.PowerShell\Quotas\MaxMemoryPerShellMB 1000000
Restart-Service WinRM
person EM0    schedule 24.02.2016

От:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384372(v=vs.85).aspx

Ограничение памяти по умолчанию для удаленных оболочек составляет 150 МБ.

MaxMemoryPerShellMB Задает максимальный объем памяти, выделенный для каждой оболочки, включая дочерние процессы оболочки. По умолчанию 150 МБ.

person mjolinor    schedule 12.03.2012
comment
Спасибо за ваш ответ. На странице есть гораздо больше параметров по умолчанию, которые необходимо проверить при использовании winrm. - person manukranthk; 14.03.2012
comment
Использование удаленных/фоновых заданий означает, что вы будете иметь дело с ограниченными пространствами выполнения и возвращаемыми десериализованными объектами. То, что работает в локальном/неограниченном пространстве выполнения, может потребовать рефакторинга для работы в этой среде. - person mjolinor; 14.03.2012

В дополнение к ответу mjolinor вы можете изменить MaxMemoryPerShellMB, запустив:

sl WSMan:\localhost\Shell
Set-Item MaxMemoryPerShellMB 300

Ссылка: http://blogs.technet.com/b/heyscriptingguy/archive/2013/07/30/learn-how-to-configure-powershell-memory.aspx

person Sasquatch    schedule 13.11.2014