让我首先说我是一名没有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文件中,当我尝试使用$ File属性构建$ fullPath时,我得到空值。
非常感谢任何帮助。
答案 0 :(得分: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 ...
}
}
}
第一次尝试的基本问题是在$ Server循环中,你需要迭代$ Farm的子项,并且在$ File循环中你需要迭代$ Server的子项。