12

私はこれを行うためにいくつかの異なる方法を試しましたが、それらはすべて同じエラーになります。コマンドのセットは次のとおりです。

$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で直接実行すると、機能することを指摘しておく必要があります。助けてくれてありがとう!

4

2 に答える 2

9

リモートシェルは、デフォルトで150MBのメモリに制限されています。サーバー上のwinrmコマンドラインユーティリティを使用してこれを微調整できます。powershell wsman:\ドライブでこれをインタラクティブに変更できるかどうかはわかりません。これは、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

大きなファイルの圧縮は、メモリを大量に消費するプロセスです。

于 2010-11-13T01:13:01.413 に答える
7

もう1つの解決策は、Windowsリモートシェルの構成を変更することです。

リモートサーバーのPowerShellプロンプトで次を実行できます。

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

これは、グループポリシーを介して変更を適用したくない場合に特に便利です。

追伸:現在設定されている値を確認するには、次のコマンドを実行してみてください。

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
于 2011-05-10T12:48:38.390 に答える