2012-03-12 27 views
7

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

我错过了关于远程调用的限制吗?

在此先感谢。

+0

为什么你甚至使用'iex'来调用本机程序? PowerShell是* shell *。执行命令就是它所做的。 – Joey 2012-03-12 11:54:48

+0

@Joey - 虽然这是真的,但PowerShell在将参数传递给外部程序时遇到许多问题,它有时更容易使用'iex' – manojlds 2012-03-12 16:39:04

+3

http://blog.patricknielsen.net/2012/01/powershell -remote-system-call-using.html – 2012-03-12 11:46:31

回答

7

来源:

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

的defult内存限制的远程炮弹是150MB

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

+0

感谢您的回复。该页面有更多的默认参数,其中一个使用winrm必须签出。 – manukranthk 2012-03-14 07:08:54

+0

使用远程/后台作业意味着您将要处理约束运行空间和正在返回的反序列化对象。在本地/不受限制的运行空间中工作的可能需要重新考虑在该环境中工作。 – mjolinor 2012-03-14 10:49:53

4

完整的PowerShell脚本,基于mjolinor的答案,谁想要跳过原因,并使其工作:

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

感谢您发布命令:) – 2017-05-14 00:29:39