2011-07-21 5 views
1

Powershellエクスペリエンスを持たないインターンです。私はできるだけこのスクリプトをまとめて壁に当てました。Powershellループを繰り返し実行しているときにXML要素にアクセスできない

基本的には、サーバのXMLリスト&を照会してファイルの1つが修正されているかどうかを調べるPowershellスクリプトがあります。私は農場やサーバーを繰り返しても問題はありませんが、ファイルの属性にアクセスするときは何も得られません。

$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ファイルに別のサーバーを追加すると、$ File属性で$ fullPathを構築しようとすると、null値が返されます。

ご協力いただければ幸いです。サンプルデータなし

答えて

5

私はそれをテストしますが、このような何かをしようとすることはできません。

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 ... 
     } 
    } 
} 

あなたの最初の試みとの基本的な問題は$サーバーのループで、あなたは$の子供を反復処理する必要があるということです$ Fileループの中で$ Serverの子を反復処理する必要があります。

+0

ありがとうございました!私はあなたにupvoteを与えることができればいいが、悲しいことに私は十分な担当者がいない:( もう一度ありがとう! – mkngrm

関連する問題