3

我编写了一个连接到远程机器的 powershell 脚本,目的是在所述机器上执行软件部署。基本上,它连接、映射驱动器、将部署从映射驱动器复制到目标机器,然后执行 perl 脚本来安装部署。如果我手动执行这些步骤,一切正常。当我尝试使用我的脚本时,远程机器上的 perl 脚本失败,提示“页面文件太小,无法完成此操作”。

有人可以解释我在远程操作时需要考虑的注意事项吗?我尝试过监控内存使用情况,但没有发现任何异常。页面文件是操作系统范围还是我的脚本在连接时应该设置的某种类型的每个用户配置?

如果需要,我可以发布我的脚本片段,但该脚本有 426 行,所以我认为将其全部发布会让人不知所措。

4

2 回答 2

6

我发现远程 shell 的管理方式与登录到盒子并执行 powershell 会话不同。我必须使用以下命令之一来增加可用的最大内存量:

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

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

默认值为 150MB,在我的情况下并没有削减它。我不能说我推荐1GB,我只是一个开发者。我试着提高它,直到我发现什么对我有用。

于 2012-08-22T18:00:57.060 回答
0

我尝试使用此代码以管理员身份运行 puppet 客户端,但框架仍然抱怨“拒绝访问”

Exe (C:\Users\lmo0\AppData\Local\Temp\Microsoft .NET Framework 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();


        }
    }
}
于 2013-01-17T20:45:08.040 回答