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!

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top