如何通过Powershell Remoting运行7za.exe?

问题描述 投票:12回答:3

我尝试了多种不同的方法来执行此操作,它们都导致相同的错误。这是一组命令:

$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上运行脚本块而不进行远程处理,那么它将起作用。感谢您的帮助!

powershell 7zip powershell-remoting invoke-command
3个回答
9
投票

默认情况下,远程外壳程序的内存限制为150 MB。您可以使用服务器上的winrm命令行实用程序进行调整。我不确定powershell wsman:\驱动器是否可以让您以交互方式更改此设置,因为我认为这是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

压缩大文件是一个需要大量内存的过程。


6
投票

另一个解决方案是更改Windows Remote Shell的配置。

您可以在远程服务器上的PowerShell提示符中执行以下操作:

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

如果您不想通过组策略应用更改,则特别有用。

Ps:要查看当前配置的值,请​​尝试执行以下操作:

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB

0
投票

我在Windows 64位的7za命令行工具中收到“无法分配所需的内存”错误,解决方案是使用7zip 64位安装程序,并使用已安装的7z.exe使用相同的命令。

我猜想7za命令行工具是32位的,而我尝试压缩的文件为150GB,这太大了,而7zip正在尝试分配的内存比32位支持的更多。

© www.soinside.com 2019 - 2024. All rights reserved.