Не удается получить доступ к элементу XML во время итерации цикла Powershell - PullRequest
1 голос
/ 21 июля 2011

Позвольте мне начать с того, что я стажер без опыта работы с Powershell. Я собрал этот сценарий как мог и ударил в стену.

По сути, у меня есть скрипт Powershell, который будет запрашивать список серверов и файлов в формате XML, чтобы узнать, был ли один из файлов изменен. У меня нет проблем при переборе ферм и серверов, но я ничего не получаю при доступе к атрибутам файла.

$foreach($Farm in $serverList.Environment.Farm) {
Write-Host .FARM: $Farm.Name
foreach($Server in $serverList.Environment.Farm.Server) {
Write-Host ..SERVER: $Server.Name
foreach($File in $serverList.Environment.Farm.Server.File) {

$fullPath = "\\"+$Server.Name+"\"+($File.Path).Replace(":","$")+$File.Version+"\CONFIG\"+$File.Name
$lastModified = (Get-Item $fullPath).LastWriteTime.toString()

write-host ...FILEPATH: $fullPath $lastModified

... processing if/thens ...
}    }    }

Если я просматриваю файлы 1 сервера, все работает отлично. Но когда я добавляю другой сервер в файл XML, я получаю нулевые значения, когда пытаюсь собрать $ fullPath с атрибутами $ File.

Любая помощь будет принята с благодарностью.

1 Ответ

5 голосов
/ 21 июля 2011

Без примеров данных я не могу проверить это, но попробуйте что-то вроде этого:

foreach ($Farm in $serverList.Environment.Farm) {
    Write-Host ('.FARM: ' + $Farm.Name)
    foreach ($Server in $Farm.Server) {
        Write-Host ('..SERVER: ' + $Server.Name)
        foreach($File in $Server.File) {
            $fullPath = "\\"+$Server.Name+"\"+($File.Path).Replace(":","$")+$File.Version+"\CONFIG\"+$File.Name
            $lastModified = (Get-Item $fullPath).LastWriteTime.toString()
            write-host "...FILEPATH: $fullPath $lastModified"
#            ... processing if/thens ...
        }
    }
} 

Основная проблема с вашей первой попыткой состоит в том, что в цикле $ Server вам нужно перебирать дочерние элементы $ Farm, а в цикле $ File вам нужно перебирать дочерние элементы $ Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...