如何通过powershell远程运行7za.exe?
-
09-10-2019 - |
题
我已经尝试了多种不同的方法来做到这一点,它们都会导致相同的错误。这是一组命令:
$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上运行脚本块而无需远程运行,则可以正常运行。谢谢你的帮助!
解决方案
默认情况下,远程外壳限制为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
压缩大文件是一个渴望内存的过程。
其他提示
另一个解决方案是更改Windows Remote Shell的配置。
您可以在远程服务器上的PowerShell提示中执行以下操作:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
如果您不想通过小组策略应用更改,这将特别有用。
PS:要查看当前配置的值是什么尝试执行以下操作:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
不隶属于 StackOverflow