2012-02-09 78 views
2

我想使用Invoke-Command powershell cmdlet安装MSI安装程序。从PowerShell中的本地计算机上,并从正确的目录,下面的工作:从Powershell执行远程安静MSI安装

./setup /quiet 

下似乎并没有工作:

$script = 
{ 
    param($path) 
    cd "$path" 
    & ./setup /quiet 
    return pwd 
} 
return Invoke-Command -ComputerName $product.IPs -ScriptBlock $script -Args $sourcePath 

为了测试我的工作本地机器通过“。”为-ComputerName参数。在传递给Invoke-Command之前,路径已经验证正确,并且在此代码的不同版本上生成的错误指示路径是正确的。我还尝试了使用和不使用远程调用上的“&”进行设置。其他Invoke-Command调用正在工作,所以我怀疑这是一个权限问题。我已经验证了来自pwd调用的返回是预期的目录。

如何使安装正常工作?

回答

0

您可以尝试使用开始处理您的脚本块:

CD $路径 启动过程中的setup.exe -arg“/安静”

不知道如果你想要或需要等待。查看Start-Process的帮助。

+0

我会在早上给它一个镜头。我确实尝试过启动过程,但从你的例子中我得到了错误的语法。 – PatrickV 2012-02-10 03:02:16

+0

那么,我想这是更好,但仍然无法正常工作。相同的行为 - 从本地Powerhell工作,但不能通过Invoke-Command与本地机器通话。在这一点上我最好的猜测是,这是一个权限问题,通过远程调用运行安装程序。 – PatrickV 2012-02-10 19:41:57

+0

这可能是。我遇到了拒绝通过远程桌面会话进行安装的应用程序。在远程计算机上设置一次性计划任务以运行安装如何? – 2012-02-13 13:17:01

0

我试图远程执行本地机器上的脚本时出现了奇怪的问题。换句话说,远程PowerShell的本地机器。它回来了一个错误,似乎说PowerShell远程处理没有在机器上启用,但它是。我可以从另一台机器远程运行脚本到目标,但是当使用远程处理到同一个盒子时,问题就会出现。

  • 确认WinRM服务正在运行。
  • 验证PowerShell远程处理已启用,如Enable-PSRemoting -force
  • 例如,验证您的powershell执行策略是否足够松散,如Set-ExecutionPolicy Unrestricted。如果政策设置为RemoteSigned,则可能是问题所在。

您可能还想验证您正在运行脚本的用户(本地,但使用远程处理)有权“作为服务登录”或作为批处理作业。就在那里猜测,如果上面的列表没有解决任何问题。