2012-08-22 67 views
3

我寫了一個powershell腳本,連接到遠程計算機,目的是在所述計算機上執行軟件卷展欄。基本上它會連接,映射驅動器,將映射驅動器的卷展欄複製到目標機器,然後執行perl腳本來安裝卷展欄。如果我手動執行這些步驟,一切正常。當我嘗試使用我的腳本時,perl腳本在遠程計算機上失敗,說:「分頁文件太小,無法完成此操作」。Powershell遠程處理和頁面文件

有人可以解釋我在遠程操作時需要考慮的因素嗎?我試過監視內存使用情況,我沒有看到任何不尋常的東西。頁面文件操作系統是否很寬或者是否存在某種類型的每用戶配置,我的腳本在連接時應該進行設置?

如果需要,我可以發佈我的腳本的片段,但腳本是426行,所以我認爲這將是壓倒性的完整發布。

回答

6

我發現遠程shell的管理方式與登錄盒子並執行powershell會話的方式不同。我不得不使用以下命令之一來增加可用內存的最大數量:

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

winrm set winrm/config @{MaxMemoryPerShellMB="1024"} 

默認值是150MB,這在我的情況下並未削減。我不能說我推薦1GB,我只是一名開發人員。我嘗試加大直到找到對我有用的東西。

+0

是否可以遠程配置? – Maverick

+0

假設適當的權限,你應該可以這樣做: Invoke-Command - 計算機名稱YOUR_COMPUTER_NAME {Set-Item WSMan:\ localhost \ Shell \ MaxMemoryPerShellMB 1024} –

+0

沒有啓用UAC並且用戶有權使用提升的權限運行命令。仍然不起作用。猜猜我必須創建自己的C#實用程序,因爲即使它工作,我也無法捕獲輸出。 – Maverick

0

我想這個代碼來運行客戶端木偶作爲管理員,但結構仍然以「拒絕訪問」

埃克(C抱怨:\用戶\ lmo0 \應用程序數據\本地的\ Temp \ Microsoft .NET框架4 Setup_4.0.30319 \ Windows6.1-KB958488-v6001-x64.msu)以0x5失敗 - 訪問被拒絕。 。

using System; 
using System.Diagnostics; 

namespace RunAsAdmin 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Process proc = new Process(); 

      Process p = new Process(); 
      p.StartInfo.FileName = @"powershell.exe"; 
      p.StartInfo.Arguments = @"invoke-command -computername vavt-pmo-sbx24 -ScriptBlock {&'C:\Program Files (x86)\Puppet Labs\Puppet\bin\puppet.bat' agent --test --no-daemonize --verbose --logdest console}"; 
      p.StartInfo.Verb = "runas"; 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 

      p.Start(); 

      while (p.HasExited == false) { 
       Console.WriteLine(p.StandardOutput.ReadLine()); 
      } 
      Console.ReadLine(); 
      p.WaitForExit(); 
      p.Close(); 


     } 
    } 
} 
+0

您可以在.net代碼之外運行powershell命令嗎? 你將要發佈這個作爲一個單獨的問題。其他堆棧用戶不會看到這個,因爲它已發佈爲已接受答案的帖子的答案。 –

+0

有沒有可以在評論中添加代碼,這就是爲什麼我發佈的答案。任何其他發佈代碼的方式? – Maverick

+0

代碼不能放在註釋中。如果您將其作爲自己的問題發佈,則可以發佈代碼。然後其他人也會看到它,這對你有好處。 –