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

Sea*_*ean 12 powershell 7zip invoke-command 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$
Run Code Online (Sandbox Code Playgroud)

我得到的输出是这样的:

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!
Run Code Online (Sandbox Code Playgroud)

我怎么能通过那个错误?

我应该指出,如果我直接在没有远程处理的ServerA上运行Scriptblock,它就可以工作.谢谢你的帮助!

x0n*_*x0n 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
Run Code Online (Sandbox Code Playgroud)

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

  • 非常感谢你.我更新了我的GPO,以反映更高的内存分配,并且它有效!如果有人需要,GPO位置为:计算机配置 - >策略 - >管理模板 - > Windows组件 - > Windows远程Shell - >指定每个Shell的最大内存(MB).万分感谢! (2认同)

Jaa*_*ans 6

另一种解决方案是更改Windows Remote Shell的配置.

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

Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
Run Code Online (Sandbox Code Playgroud)

如果您不想通过组策略应用更改,这将特别有用.

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

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
Run Code Online (Sandbox Code Playgroud)