2013-09-20 3 views
0

мне нужно изменить узел (истина или ложь из-за конфигурации) в XML-файл на удаленном компьютере, работая в Teamcity, написал следующую функциюTeamcity узел изменения в XML-файле

function Set-layout($hiddenfunctionality) 
{ 

$properties = Resolve-Path ".\vsphere\properties.ps1" 

. $properties 

#Read env.properties 
$configFilePath = Resolve-Path ".\environment\prod-env\env.properties" 
Write-Host $configFilePath 

$file = resolve-path("$configFilePath") 
[xml]$doc = Get-Content $file 

$node = $doc.SelectSingleNode("/project/property[@name='backend.server']") 
$backend_ip = $node.value 

$layoutRel = Resolve-Path ".\layout\layoutRel.ps1" 
#Remote-Copy $layoutRel "\\$backend_ip\install" 
Copy-Item $layoutRel "\\$backend_ip\install" 

$dom_user = [string]($domain_name+ "\" + $domain_username) 
$Connection = @{"server" = $backend_ip; "username" = $dom_user; "password" = $domain_password} 
$rem_command = 'powershell -ExecutionPolicy RemoteSigned . c:\Empower\install\layoutRel.ps1 $hiddenfunctionality' 
RemoteCommand $Connection $rem_command 

    } 

эта функция работает и это вызвать скрипт, который будет изменять значение узла «конфигурация/AppSettings/добавить [@ opentext.empower.site.enableHiddenFunctionality ключа = '»

Param ($hiddenfunctionality) 
    Write-Host "Updating C:\Program Files\Opentext\Empower\Web\Web.config" 
    [System.Xml.XmlDocument] $xd = new-object System.Xml.XmlDocument 
    $file = resolve-path("C:\Program Files\Opentext\Empower\Web\web\Web.config") 
    $xd.load($file) 
    $xd.SelectNodes("configuration/appSettings/add[@key='opentext.empower.site.enableHiddenFunctionality']").Item(0).SetAttribute('value', $hiddenfunctionality) 
    $xd.Save($file) 
    Write-Host "Done" 

В моем Teamcity конфиги сделать следующую строку

 powershell . %teamcity.build.checkoutDir%\Build\CI_2.0\vsphere\env-handler.ps1; Set-layout $true 

все это работает, но значение поля в моем файле пусто, но должно быть истинным или ложным (

и я не могу сделать статический истинным или ложным. он должен быть изменен из-за некоторых конфигураций в Teamcity

Может быть, я могу взять имя конфигурации сборки из команды teamff, если cat_1, чем запустить «true», если cat_2, чем «false», но я не знаю, как это сделать.

+0

Просто дикий удар, вы пытались заменить $ true на «true», когда вы вызываете функцию Set-Layout. Возможно, что-то происходит, когда передается переменная $ true по скриптам и функциям. –

+0

нет, я не пытаюсь, вы попробуете вызвать функцию вызова в teamcity «true» вместо $ true? –

+0

да, попробуйте это и посмотрите, что-нибудь случится –

ответ

0

Итак, я нашел, что мой скрипт layoutrel.ps1, который будет зажимать узел, не принимает параметр $ hiddenfunctionality, почему он может быть? Когда я дал за $ hiddenfunctionality = «true», он работает (

Смежные вопросы