2015-06-02 134 views
1

我正在尝试编写一个脚本,它将远程修补SQL实例。参照这个论坛上,我已经陷害以下行的其他服务器上远程执行.exe文件:Exe文件远程执行

Invoke-Command -ComputerName $computer -ScriptBlock { 
    & cmd /c 'D:\SQL_PATCH\SQLServer2012SP2-KB2958429-x64-ENU.exe' /qs /action=patch /allinstances /IAcceptSQLServerLicenseTerms 
} 

也试过这个问题,以及:

Invoke-Command -ComputerName $computer -ScriptBlock { 
    & 'D:\SQL_PATCH\SQLServer2012SP2-KB2958429-x64-ENU.exe' -ArgumentList "/qs", "/action=patch", "/allinstances", "/IAcceptSQLServerLicenseTerms" 
} 

一个更为奇特的是,第一个命令在Windows 2012服务器上运行良好,但在Windows 2008R2服务器上运行良好。我不知道这背后的原因是什么。

+0

尝试调用命令-ComputerName $ computer -ScriptBlock {D:\ SQL_PATCH \ SQLServer2012SP2-KB2958429-x64-ENU.exe/qs/action = patch/allinstances/IAcceptSQLServerLicenseTerms}'您还需要确保A )远程计算机启用了PowerShell Remoting B)当前PowerShell会话以管理员身份运行,并且C)您必须在远程计算机上拥有管理员权限。如果您没有管理员权限,则需要提供相应的凭据。 –

+0

@KeithHill:你给的命令不起作用。无论你说什么参数,在我开始制作这个脚本之前,都进行了检查。请建议任何其他选择。谢谢 – Lilly123

+0

用'/ q'替换'/ qs'。安装程序还在远程服务器上写入日志文件? SQL Server安装日志有一个特定的位置。 –

回答

1

以下的伎俩什么,我一直在寻找:

psexec \\$computer -s -u Adminuser -p AdminPassword E:\SQL_PATCH\SQLServer2012SP2-KB2958429-x64-ENU.exe /quiet /action=patch /allinstances /IAcceptSQLServerLicenseTerms 

这件工作的所有服务器上不管的Windows版本。 感谢大家提出宝贵的建议。

+0

当您以Adminuser登录时运行Invoke-Command?如果没有,那么应该使用Invoke-Command上的'-Credential'参数来传递Adminuser证书。 –

+0

是的,我在服务器上拥有管理员权限。不需要凭证参数 – Lilly123