2010-11-12 32 views
12

Tôi đã thử một số cách khác nhau để thực hiện việc này, tất cả đều dẫn đến lỗi tương tự. Dưới đây là một tập hợp các lệnh:Làm thế nào tôi có thể nhận được 7za.exe để chạy qua Powershell Remoting?

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

Kết quả tôi nhận được là:

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! 

Làm thế nào tôi có thể vượt qua lỗi mà ???

Tôi nên chỉ ra, nếu tôi chạy Scriptblock trực tiếp trên ServerA mà không cần truy cập từ xa, nó hoạt động. Cảm ơn bạn đã giúp đỡ!

Trả lời

9

Vỏ từ xa được giới hạn ở mức 150 MB bộ nhớ theo mặc định. Bạn có thể tinh chỉnh điều này bằng tiện ích dòng lệnh winrm trên máy chủ; Tôi không chắc chắn nếu các wsman powershell: \ ổ đĩa sẽ cho phép bạn thay đổi này tương tác bởi vì tôi nghĩ rằng đó là một tài sản chung của chức năng plugin vỏ trong winrm và không trực tiếp kết nối với powershell.

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

Nén tệp lớn là quá trình đói.

+2

Thank you very much. Tôi đã cập nhật GPO của mình để phản ánh phân bổ bộ nhớ cao hơn và nó đã hoạt động! Trong trường hợp cần ai đó, vị trí GPO là: Cấu hình máy tính -> Chính sách -> Mẫu quản trị -> Cấu phần Windows -> Windows Remote Shell -> Chỉ định bộ nhớ tối đa trong MB mỗi Shell. Cảm ơn một tấn! – Sean

6

Một giải pháp khác là thay đổi cấu hình của Windows Remote Shell.

Bạn có thể thực hiện như sau trong một cửa sổ PowerShell trên máy chủ từ xa:

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

Điều này đặc biệt hữu ích nếu bạn không muốn áp dụng sự thay đổi thông qua Group Policy.

Ps: Để xem những gì giá trị hiện cấu hình được thử thực hiện như sau:

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

cảm ơn sự lựa chọn thay thế, dễ dàng hơn nhiều so với việc sử dụng GPO – sonjz

Các vấn đề liên quan