我正在尝试使用PowerShell在远程服务器上安装msi文件。
服务器1是我的构建服务器,服务器2是我的应用服务器。 当构建服务器完成构建时,我想触发powershell脚本以将最新版本安装到我的应用程序服务器。
我正在使用以下命令创建会话并执行安装:
# Create session to Application Server
$Session = New-PSSession -Name <ApplicationServer> -ComputerName <ApplicationServer> -Auth CredSSP -cred OURDOMAIN\MyUser
# Prepare expression and create script block
$Script = "Invoke-Expression 'msiexec /i <InstallerFile> /qn /L*v C:\Temp\install_fail.log'"
$ScriptBlock = [Scriptblock]::Create($Script)
# Execute in the session
Invoke-Command -ScriptBlock $ScriptBlock -Session $Session
# Clean up the session
Remove-PSSession $Session
日志出现以下错误(请参阅附件install_fail.log以获取完整日志)
MSI (s) (C4:1C) [17:08:05:333]: Note: 1: 1708
MSI (s) (C4:1C) [17:08:05:333]: Product: WindowsService1 -- Installation failed.
MSI (s) (C4:1C) [17:08:05:335]: Windows Installer installed the product. Product Name: WindowsService1. Product Version: 8.0.0.0. Product Language: 1033. Manufacturer: MyCompany. Installation success or error status: 1603.
当我在powershell命令promt上启动会话并执行安装时,安装成功(请参阅附件install_success.log以获取完整日志): ENTER-PSSession -ComputerName Invoke-Expression'msiexec / i / qn / L * v C:\ Temp \ install_success.log' 出口
当我在两种情况下打印whoami时,它会返回OURDOMAIN \ MyUser。
Microsoft列出了有关1603的以下内容:(http://support.microsoft.com/kb/834484) 您尝试安装Windows Installer程序包的文件夹已加密。
该文件夹未加密
包含您尝试安装Windows Installer程序包的文件夹的驱动器将作为替代驱动器进行访问。
驱动器是服务器硬盘上的分区
SYSTEM帐户对您尝试安装Windows Installer程序包的文件夹没有完全控制权限。您会注意到该错误消息,因为Windows Installer服务使用SYSTEM帐户来安装软件。
SYSTEM帐户对驱动器和所有文件夹具有完全控制权。
请告知......
答案 0 :(得分:0)
您是否尝试过使用PSEXEC?或者你使用PowerShell是有原因的吗?我发现远程安装比尝试使用PowerShell更容易。
只需PSEXEC进入服务器CMD。在本地复制文件,然后运行MSIExec进行安装。答案 1 :(得分:0)
@AudioDroid:我最后编写了第二个PowerShell脚本,该脚本在服务器上运行,查看新msi文件的特定文件夹。该脚本运行实际执行安装任务的第一个脚本。