У меня есть конфигурация XML, из которой я пытаюсь прочитать информацию в скрипте Powershell. Сценарий Powershell принимает ввод от пользователя, а затем ему необходимо перейти к каждому пути. Моя конфигурация XML выглядит следующим образом:
<?xml version="1.0"?>
<Config>
<Action Name="Deploy">
<CommandPath>path to navigate</CommandPath>
<PackagePath>path of Application package</PackagePath>
<ModelName>Name of model to be deployed</ModelName>
<ServiceName>Name of Service</ServiceName>
<DeploymentServer>
<Server Name = 'Server1'></Server>
<Server Name = 'Server2'></Server>
</DeploymentServer>
</Action>
<Action Name="Update">
<CommandPath>path to navigate</CommandPath>
<PackagePath>path of Application package</PackagePath>
<ModelName>Name of model to be updated</ModelName>
<ServiceName>Name of Service</ServiceName>
<DeploymentServer>
<Server Name = 'Server1'></Server>
</DeploymentServer>
</Action>
</Config>
Если пользователь вводит Deploy, необходимо учитывать развертываемые узлы, если пользовательский ввод обновляется, то путь обновления. Код Powershell должен выполняться для каждого элемента в узле DeploymentServer для каждого элемента действия. Я пробовал, как показано ниже, но не могу получить правильную информацию об узле в Powershell.
Set-ExecutionPolicy RemoteSigned
function RunConfiguration()
{
$XML = Select-Xml -Path $configFile -XPath 'Action' | Select-Object -ExpandProperty Node
do {
$Answer = Read-Host -Prompt "Select required action ""$($XML.Action.Name -join '", "')"" "
} Until ($Answer -in ($XML.Action.Name))
Write-Host $XML.Action
$SelectedAnswer = $XML.Action | Where-Object {$_.Name -eq $UserOpt}
Write-Host $SelectedAnswer
$SelectedAnswer.DeploymentServer.Server | ForEach-Object {
$ServerName = $_.Name
Write-Host $ServerName
Invoke-Command -ComputerName $ServerName -ScriptBlock {
$Configuration = $args[0]
$Configuration.CommandPath
$Configuration.PackagePath
$Configuration.ModelName
$Configuration.ServiceName
} -ArgumentList $SelectedAnswer
}
}
}
}
$spAdminServiceName = "SPAdminV4"
$currentDir=(split-path $myinvocation.mycommand.path -parent)
$configFile = $currentDir
$configFile += "\DeployConfig.xml"
Execute-Commands $configFile
RunConfiguration()
Write-Host -f White "Press Enter key to exit..."
Read-Host
Как читать данные? Спасибо