PowerShellリモートを介して7Za.exeを実行するにはどうすればよいですか?
-
09-10-2019 - |
質問
私はこれを行うためにいくつかの異なる方法を試しましたが、それらはすべて同じエラーになります。これが1つのコマンドのセットです:
$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を直接実行すると、動作することを指摘する必要があります。助けてくれてありがとう!
解決
リモートシェルは、デフォルトでは150 MBのメモリに制限されています。サーバー上のWinRMコマンドラインユーティリティでこれを微調整できます。 PowerShell WSMAN: Driveがこれをインタラクティブに変更できるかどうかはわかりません。これは、WINRMのシェルプラグイン機能の一般的な特性であり、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リモートシェルのconfiguraitonを変更することです。
リモートサーバーでPowerShellプロンプトで以下を実行できます。
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
これは、グループポリシーを介して変更を適用したくない場合に特に便利です。
PS:現在構成されている値が何であるかを確認するには、以下を実行してみてください。
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
所属していません StackOverflow