2010-11-12 5 views
12

Ich habe eine Reihe von verschiedenen Möglichkeiten versucht, dies zu tun, sie alle führen zu dem gleichen Fehler. Hier ist ein Satz von Befehlen:Wie kann ich 7za.exe über Powershell Remoting ausführen lassen?

$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$ 

Der Ausgang I bekommen, ist dies:

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! 

Wie kann ich an dieser Fehler bekommen ???

Ich sollte darauf hinweisen, wenn ich den Scriptblock direkt auf ServerA ohne Remoting ausführen, funktioniert es. Danke für jede Hilfe!

Antwort

9

Remote-Shells sind standardmäßig auf 150 MB Arbeitsspeicher beschränkt. Sie können dies mit dem Winrm-Befehlszeilendienstprogramm auf dem Server optimieren. Ich bin mir nicht sicher, ob das Powershell wsman: \ drive das interaktiv ändern lässt, weil ich denke, dass es eine allgemeine Eigenschaft der Shell-Plugin-Funktionalität in Winrm ist und nicht direkt mit Powershell verbunden ist.

C:\Windows\system32>winrm get winrm/config/winrs 
Winrs 
    AllowRemoteShellAccess = true 
    IdleTimeout = 180000 
    MaxConcurrentUsers = 5 
    MaxShellRunTime = 2147483647 
    MaxProcessesPerShell = 15 
    **MaxMemoryPerShellMB = 150** 
    MaxShellsPerUser = 5 

Komprimieren großer Dateien ist ein speicherhungriger Prozess.

+2

Ihnen sehr danken. Ich habe mein Gruppenrichtlinienobjekt aktualisiert, um eine höhere Speicherzuweisung anzuzeigen, und es hat funktioniert! Falls dies erforderlich ist, lautet der GPO-Speicherort: Computerkonfiguration -> Richtlinien -> Admin-Vorlagen -> Windows-Komponenten -> Windows Remote Shell -> Maximale Speichergröße in MB pro Shell angeben. Danke vielmals! – Sean

6

Eine andere Lösung besteht darin, die Konfiguration der Windows Remote Shell zu ändern.

Sie könnten die folgenden in einer Powershell-Eingabeaufforderung auf dem Remote-Server auszuführen:

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

Dies ist besonders nützlich, wenn Sie die Änderung nicht über die Gruppenrichtlinie anwenden möchten.

Ps: Um zu sehen, was die aktuell konfigurierten Wert versuchen, wird die folgende Ausführung:

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 
+0

danke für die Alternative, viel einfacher als mit GPO hantieren – sonjz

Verwandte Themen