我写了一个powershell脚本,它连接到远程机器,目的是在所述机器上执行软件卷展栏。基本上它连接,映射驱动器,将卷展栏从映射驱动器复制到目标机器,然后执行perl脚本来安装卷展栏。如果我手动执行这些步骤一切正常。当我尝试使用我的脚本时,远程机器上的perl脚本失败,说“分页文件太小,无法完成此操作”。
有人可以解释我在远程操作时需要考虑的注意事项吗?我已经尝试过监控内存使用情况,但我没有看到任何异常情况。页面文件操作系统是否宽,或者是否存在某种类型的每个用户配置,我的脚本在连接时应该设置?
如果需要,我可以发布我的脚本片段,但脚本是426行,所以我认为完全发布会是压倒性的。
答案 0 :(得分:6)
我发现远程shell的管理方式与登录到框并执行powershell会话的方式不同。我必须使用以下命令之一增加可用的最大内存量:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024
winrm set winrm/config @{MaxMemoryPerShellMB="1024"}
默认值为150MB,在我的情况下没有削减它。我不能说我推荐1GB,我只是一个开发者。我试着加油,直到找到适合我的东西。
答案 1 :(得分: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();
}
}
}