2012-03-12 13 views
7

Tôi đang cố gắng thực hiện một exe trên một máy tính từ xa bằng lệnh gọi. Thực hiện exe trên máy từ xa sau khi đăng nhập vào máy bằng cách sử dụng máy tính từ xa mất 1GB bộ nhớ và thực hiện để hoàn thành sau một phút. Trong khi khi tôi thực thi cùng exe bằng cách sử dụng Invoke-Command trên cùng một máy, quá trình sẽ trả về một OutOfMemoryException và kết thúc đột ngột. Lệnh gọi của tôi đơn giản như Invoke-Command -Session $someSessionVariable -ScriptBlock {Invoke-Expression "abc.exe --arg arg"} -AsJob.Ngoại lệ OutOfMemory khi thực thi từ xa bằng Powershell Invoke-Command

Tôi có thiếu điều gì đó liên quan đến các hạn chế về yêu cầu từ xa không?

Cảm ơn trước.

+0

Tại sao bạn thậm chí còn sử dụng 'iex' để gọi một người bản địa chương trình? PowerShell là một * shell *. Thực hiện các lệnh là những gì nó làm. – Joey

+0

@Joey - trong khi đó là sự thật, PowerShell có rất nhiều vấn đề với việc truyền các đối số cho một chương trình bên ngoài, nó dễ dàng hơn khi chỉ sử dụng 'iex' – manojlds

+3

http://blog.patricknielsen.net/2012/01/powershell -remote-system-call-using.html –

Trả lời

7

Từ:

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

Bộ nhớ giới hạn defult trên vỏ từ xa là 150MB

MaxMemoryPerShellMB Xác định số tiền tối đa bộ nhớ cấp phát cho mỗi vỏ, bao gồm cả các tiến trình con của vỏ. Giá trị mặc định là 150 MB.

+0

Cảm ơn bạn đã trả lời. Trang này có nhiều thông số mặc định hơn mà một thông số sử dụng winrm phải thanh toán. – manukranthk

+0

Sử dụng các công việc từ xa/nền có nghĩa là bạn sẽ xử lý các vùng không gian bị hạn chế và các đối tượng deserialized được trả về. Những gì làm việc trong một không gian địa phương/không bị giới hạn có thể cần phải được tái xác định để làm việc trong môi trường đó. – mjolinor

4

Toàn bộ kịch bản PowerShell, dựa trên câu trả lời mjolinor 's, cho bất cứ ai muốn để bỏ qua các lý do và chỉ làm cho nó hoạt động:

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

Cảm ơn bạn đã đăng lệnh :) –