Как я могу получить 7za.exe для запуска через Powershell Remoting? - PullRequest
12 голосов
/ 13 ноября 2010

Я пробовал несколько разных способов сделать это, все они приводят к одной и той же ошибке.Вот один набор команд:

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

Как мне пройти эту ошибку ???* Я должен отметить, что если я запускаю Scriptblock непосредственно на ServerA без удаленного взаимодействия, это работает.Спасибо за любую помощь!

Ответы [ 2 ]

9 голосов
/ 13 ноября 2010

Удаленные оболочки по умолчанию ограничены 150 МБ памяти. Вы можете настроить это с помощью утилиты командной строки 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

Сжатие больших файлов требует много памяти.

6 голосов
/ 10 мая 2011

Другим решением является изменение конфигурации оболочки Windows Remote.

Вы можете выполнить следующее в командной строке PowerShell на удаленном сервере:

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

Это особенно полезно, если вы не хотите применять изменения через групповую политику.

Ps: чтобы увидеть, что в данный момент настроено значение, попробуйте выполнить следующее:

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
...