[英]How can I get 7za.exe to run via 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,它就可以工作。 謝謝你的幫助!
默認情況下,遠程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
壓縮大文件是一個需要大量內存的過程。
另一種解決方案是更改Windows Remote Shell的配置。
您可以在遠程服務器上的PowerShell提示符中執行以下命令:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
如果您不想通過組策略應用更改,這將特別有用。
Ps:要查看當前配置的值,請嘗試執行以下操作:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.