2010-11-12 76 views
12

我试过很多不同的方法来做到这一点,它们都导致相同的错误。 下面是一组命令:如何让7za.exe通过Powershell Remoting运行?

$s = New-PSsession -ComputerName ServerA 
$job = Invoke-Command -Session $s -Scriptblock { Start-Process -FilePath  
    "C:\Scripts\ArchiveEventLogs\ver4.5\7za.exe" -ArgumentList "a", 
    "C:\Scripts\Eventlogs.bak\ServerA-20101111.7z", "C:\Scripts\Eventlogs.bak\*.evt*", 
    "-mx7", "-oC:\Scripts\Eventlogs.bak", "-wC:\Scripts\Eventlogs.bak", "-t7z" -Wait } 
    -AsJob 

Get-Job | Wait-Job 
Receive-Job Job$ 

我得到的输出是这样的:

7-Zip (A) 9.17 beta Copyright (c) 1999-2010 Igor Pavlov 2010-10-04 
Scanning 

Creating archive C:\Scripts\Eventlogs.bak\ServerA-20101111.7z 

ERROR: Can't allocate required memory! 

我怎样才能让过去的错误???

我应该指出,如果我直接在ServerA上运行Scriptblock而不进行远程处理,它就可以工作。 感谢您的帮助!

回答

9

默认情况下,远程shell限制为150 MB的内存。你可以用服务器上的winrm命令行实用程序来调整它;我不确定powershell wsman:\ drive是否可以让你以交互方式更改它,因为我认为它是winrm中shell插件功能的一般属性,并且不直接连接到powershell。

C:\Windows\system32>winrm get winrm/config/winrs 
Winrs 
    AllowRemoteShellAccess = true 
    IdleTimeout = 180000 
    MaxConcurrentUsers = 5 
    MaxShellRunTime = 2147483647 
    MaxProcessesPerShell = 15 
    **MaxMemoryPerShellMB = 150** 
    MaxShellsPerUser = 5 

压缩大文件是一个内存饥饿的过程。

+2

非常感谢你。我更新了我的GPO以反映更高的内存分配,并且它工作正常!如果有人需要它,GPO位置为:计算机配置 - >策略 - >管理模板 - > Windows组件 - > Windows远程Shell - >指定每个Shell的最大内存量(MB)。万分感谢! – Sean 2010-11-15 13:25:59

6

另一种解决方案是更改Windows远程外壳的配置。

你可以在远程服务器上的PowerShell提示符下执行以下命令:

Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048 

,如果你不希望应用通过组策略的变化,这是特别有用的。

PS:要查看当前配置的值尝试执行以下操作:

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 
+0

感谢您的选择,比GPO的摆弄容易得多 – sonjz 2015-04-23 06:18:05

相关问题