使用Powershell Invoke-Command进行远程执行的OutOfMemory异常

时间:2012-03-12 11:11:20

标签: powershell invoke-command remote-execution

我正在尝试使用invoke-command在远程计算机上执行exe。使用远程桌面登录计算机后,在远程计算机上执行exe需要1GB内存,并在一分钟后执行完成。而当我在同一台机器上使用Invoke-Command执行相同的exe时,进程返回OutOfMemoryException并突然结束。我的invoke命令就像Invoke-Command -Session $someSessionVariable -ScriptBlock {Invoke-Expression "abc.exe --arg arg"} -AsJob一样简单。

我是否遗漏了有关远程调用限制的内容?

先谢谢。

3 个答案:

答案 0 :(得分:7)

自:

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

远程shell的defult内存限制是150MB

MaxMemoryPerShellMB  指定每个shell分配的最大内存量,包括shell的子进程。默认值为150 MB。

答案 1 :(得分:7)

完整的PowerShell脚本,基于 mjolinor 的答案,适用于任何想要跳过这些原因并让它发挥作用的人:

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

答案 2 :(得分:0)

作为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