我想使用Team City和PowerShell内嵌脚本远程安装Puppet Client for Windows。使用MsiExec和Powershell远程安装Puppet
Invoke-command –computername %Machine Host Name% –ScriptBlock {Param($options) Start-Process -FilePath "msiexec.exe $options" -ArgumentList "/i C:\Temp\puppet-3.0.0.msi PUPPET_MASTER_SERVER=%Puppet Master Server% /l*v C:\Temp\puppet-3.0.0.log /qn" -Wait –Passthru}
当我从我的本地机器执行它工作得很好,但似乎TeamCity有一些问题处理报价。
**[Step 2/2] Invoke-Command : A positional parameter cannot be found that accepts argument '
[09:08:08][Step 2/2] –ScriptBlock'.
[09:08:08][Step 2/2] At line:1 char:15
[09:08:08][Step 2/2] + Invoke-command <<<< –computername vavp-pmo-agt08 –ScriptBlock {Param($option
[09:08:08][Step 2/2] s) Start-Process -FilePath msiexec.exe $options -ArgumentList /i C:\Temp\puppet
[09:08:08][Step 2/2] -3.0.0.msi PUPPET_MASTER_SERVER=vavt-pmo-sbx23.company.com /l*v C:\Temp\puppet
[09:08:08][Step 2/2] -3.0.0.log /qn -Wait –Passthru}
[09:08:08][Step 2/2] + CategoryInfo : InvalidArgument: (:) [Invoke-Command], Parameter
[09:08:08][Step 2/2] BindingException
[09:08:08][Step 2/2] + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
[09:08:08][Step 2/2] .Commands.InvokeCommandCommand
[09:08:08][Step 2/2]
[09:08:08][Step 2/2] Process exited with code 1**
没有好的脚本执行模式切换。
这一个救了我的一天。 Invoke-command -computername%puppet.client.host%-ScriptBlock {Param($ options)Start-Process -Wait -Passthru -FilePath msiexec.exe $ options“-ArgumentList”/ i C:\ Temp \ puppet-3.0 .0.msi PUPPET_MASTER_SERVER =%env.puppet.master%/ l * v C:\ Temp \ puppet-3.0.0.log/qn“} – Maverick