我正在尝试使用invoke-command在远程计算机上执行exe。使用远程桌面登录计算机后,在远程计算机上执行exe需要1GB内存,并在一分钟后执行完成。而当我在同一台机器上使用Invoke-Command执行相同的exe时,进程返回OutOfMemoryException并突然结束。我的invoke命令就像Invoke-Command -Session $someSessionVariable -ScriptBlock {Invoke-Expression "abc.exe --arg arg"} -AsJob
一样简单。
我是否遗漏了有关远程调用限制的内容?
先谢谢。
答案 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