Come posso ottenere 7za.exe per eseguire tramite PowerShell Remoting?
-
09-10-2019 - |
Domanda
Ho provato un certo numero di diversi modi per farlo, tutti frutto nello stesso errore. Ecco una serie di comandi:
$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$
L'output che ottengo è questo:
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!
Come posso ottenere passato che l'errore ???
Tengo a precisare, se corro lo scriptblock direttamente sul ServerA senza il Remoting, funziona. Grazie per qualsiasi aiuto!
Soluzione
shell remote sono limitate a 150 MB di memoria per impostazione predefinita. È possibile modificare questo con l'utilità Gestione remota Windows da riga di comando sul server; Non sono sicuro se il WSMan PowerShell:. \ Viaggio vi permetterà di cambiare questo modo interattivo, perché penso che sia una proprietà generale della funzionalità della shell plug-in Gestione remota Windows e non direttamente collegato a PowerShell
C:\Windows\system32>winrm get winrm/config/winrs
Winrs
AllowRemoteShellAccess = true
IdleTimeout = 180000
MaxConcurrentUsers = 5
MaxShellRunTime = 2147483647
MaxProcessesPerShell = 15
**MaxMemoryPerShellMB = 150**
MaxShellsPerUser = 5
La compressione dei file di grandi dimensioni è un processo avido di memoria.
Altri suggerimenti
Un'altra soluzione è quella di cambiare il configuraiton di Windows Remote Shell.
Si potrebbe eseguire quanto segue in un prompt di PowerShell sul server remoto:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
Ciò è particolarmente utile se non si desidera applicare la modifica tramite Criteri di gruppo.
Ps: Per vedere quale sia il valore attualmente configurato è provare eseguendo il seguente:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB