通过Jenkins + Powershell Remote编辑XML

时间:2017-07-19 12:15:17

标签: xml powershell jenkins jenkins-plugins

首先我要说的是,这是来自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

0 个答案:

没有答案