¿Cómo puedo obtener 7za.exe para correr a través de PowerShell Remoting?
-
09-10-2019 - |
Pregunta
He intentado una serie de diferentes maneras de hacer esto, todos ellos resultado en el mismo error. Aquí es un conjunto de comandos:
$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$
La salida que se ve es la siguiente:
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!
¿Cómo puedo conseguir más allá de que el error ???
Debo señalar, si corro el ScriptBlock directamente en ServidorA sin la interacción remota, funciona. Gracias por cualquier ayuda!
Solución
shells remotos están limitados a 150 MB de memoria de forma predeterminada. Se pueden ajustar esto con la utilidad winrm de línea de comandos en el servidor; No estoy seguro de si el wsman PowerShell:. \ Unidad le permitirá cambiar esta forma interactiva, porque creo que es una propiedad general de la funcionalidad plug-in shell en winrm y no está conectado directamente 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 compresión de archivos de gran tamaño es un proceso de mucha memoria.
Otros consejos
Otra solución es cambiar el configuraiton del remoto de Windows Shell.
Se podría ejecutar lo siguiente en un símbolo del sistema de PowerShell en el servidor remoto:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048
Esto es especialmente útil si no desea aplicar el cambio a través de la directiva de grupo.
PD: Para ver cuál es el valor configurado actualmente se trate de la ejecución de los siguientes:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB