首先我要说的是,这是来自Powershell ISE"的100%工作脚本。 我必须通过Jenkins Job + Powershell远程编辑XML文件。
Powershell脚本远程编辑在Jenkins Windows Slave机器上运行良好。但是,当我使用 Jenkins环境变量+ Powershell插件运行它时,它会失败。看起来它没有"放" string into。powershell的.Load选项。
首先,我们使用字符串(例如)从Jenkins设置变量 XML_PATH
"**C:/Temp/settings.xml**"
其次是powershell中的代码,
$username = "domain\user"
$password = "password123"
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
$ScriptBlock = {
$test = "$env:XML_PATH"
$xml = New-Object XML
$xml.Load($test)
$SiteRoot = $xml.SelectSingleNode("//SiteRoot")
$SiteRoot.InnerText = "www.hellokitty.com:8080"
$appUrl = $xml.SelectSingleNode("//SiteUrl")
$appUrl.InnerText = "www.hellokitty.com:8080/kitty"
$xml.Save($test)
}
Invoke-Command -ComputerName $env:SERVER_NAME -ScriptBlock $ScriptBlock -Credential $Cred -ArgumentList $Cred
因此,在通过Jenkins添加变量XML_PATH并将其添加到脚本后,我从Jenkins控制台收到错误:
***Multiple ambiguous overloads found for "Load" and the argument count: "1".
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
+ PSComputerName : webserver1***
有任何建议/想法吗?再次..脚本工作100%...环境变量 $ env:XML_PATH 也可以打印正确的答案,如果你像这样运行它:
$test = "$env:XML_PATH"
Write-Host $test
BTW:我可以看到,从Jenkins到Remote Powershell以及所有字符串参数运行良好的另一个Env变量被读取:
$ ENV:SERVER_NAME