2017-03-16 153 views
-1

我遇到了我的脚本的问题,旨在远程安装可执行文件。我的脚本的所有预备工作都很好。我从文本文件中获取大约十几台电脑的主机名。我使用PSExec来启用PSRemoting。然后将安装程序复制到远程计算机上的临时目录中。一切都很好,除了重要的部分。我无法安装它。Powershell:远程exe安装

我已经试过如下:

Invoke-Command -ComputerName remoteComp -ScriptBlock {C:\temp\installer.exe} -ArgumentList /SILENT 
Invoke-Command -ComputerName remoteComp {Start-Process C:\temp\installer.exe -ArgumentList /SILENT -Wait} 

我一直在使用新的PSSession这样的尝试:

$s = New-PSSession -ComputerName remoteComp 
Invoke-Command -Session $s -ScriptBlock {C:\temp\installer.exe} -ArgumentList /SILENT 

没有发送任何类型的错误,他们只是什么也不做。有 - 只会永远挂起的命令。如果我放了一个-Sleep,它只是等待所需的秒数,然后完成,完成任何事情。我不知道这是否重要,但是当我使用/ SILENT开关在本地计算机上运行可执行文件时,它不会请求任何提示,但会打开一个资源管理器窗口。

我试图使用PSExec.exe,但我得到了类似的结果。它只是永远挂起而没有任何错误。预先感谢任何帮助!

+0

我在各种安装程序上试过这个,有些工作取决于UAC级别。我最终写了一些东西来执行在使用我所有的静默安装命令运行批处理文件的目标机器上创建计划任务。 'SCHTASKS' – ssaviers

+0

在您的脚本块示例中没有将参数传递给您的exe。 '-ScriptBlock {C:\ temp \ installer.exe $ args [0]} -ArgumentList/SILENT'虽然可能会有更多的事情发生。这将解释为什么它会永远持续下去,因为它无法与任何用户交互。有免费的软件可以处理像PDQ Deploy这样的事情,而不是试图做自己的事情。 – Matt

+0

出现的资源管理器窗口可能会导致安装过程不结束,这就解释了为什么当你使用'-Wait'时,它永远不会结束。您可以在本地计算机上进行测试...打开任务管理器并使用无声开关运行安装程序,在任务管理器中快速找到'installer.exe'进程。当安装程序打开资源管理器窗口时,“installer.exe”进程会消失吗? –

回答

0

尝试里面的参数列表...如果exe支持它。

例如:

Invoke-Command -ScriptBlock { c:\temp\yourexe.exe /verysilent /norestart /log="c:\install.log"} 

请尝试。

+0

不幸的是,如果/ verysilent不支持,这个exe不支持/ verysilent –

+0

尝试/无声与exe一起 – VGSandz

1

这个东西多一点战斗后,我就能够创建一个批处理文件,然后使用

Invoke-Command -ComputerName remoteComp -ScriptBlock {C:\temp\installer.bat} 

成功安装的exe所有这一切在批处理文件是

installer.exe /SILENT 

另一种适用于我的方式是由ssaviers提到的,我可以使用schtasks.exe来安排一次性任务。