2016-06-21 108 views
-1

我有腳本讀取xml文件,然後ping xml文件中列出的網站,並輸出到文本文件。除了它只顯示最後一個站點而不是所有站點之外,哪個更好。 xml文件:輸出缺少信息

<Servers> 
    <Server id="1"> 
     <name>server1</name> 
     <cfusion>www.cnn.com</cfusion> 
     <dotnet>www.msn.com</dotnet> 
    </Server> 
    <Server id="2"> 
     <name>server2</name> 
     <cfusion>www.yahoo.com</cfusion> 
     <dotnet>www.google.com</dotnet> 
    </Server> 
    <Server id="3"> 
     <name>server3</name> 
     <cfusion>www.wwe.com</cfusion> 
     <dotnet>www.nfl.com</dotnet> 
    </Server> 
</Servers> 

腳本:

[xml]$servers = Get-Content c:\cfusion.xml 
$collection = $() 

foreach($server in $servers.Servers.Server) { 
    $status = @{ "Cold Fusion" = $server.cfusion; "Dot Net" = $server.dotnet; "Server Name" = $server.name; } 

    if (Test-Connection $server.name -Count 1) { 
     $status["Status"] = "Online" 
    } else { 
     $status["Status"] = "Offline" 
    } 

    if (Test-Connection $server.cfusion -Count 1) { 
     $status["Cold Fusion"] = "Up" 
    } else { 
     $status["Cold Fusion"] = "Down" 
    } 

    if (Test-Connection $server.dotnet -Count 1) { 
     $status["Dot net"] = "Up" 
    } else { 
     $status["Dot Net"] = "Down" 
    } 

    New-Object -TypeName PSObject -Property $status -OutVariable serverstatus | 
     Format-table -Property "Server Name", "Status", "Cold Fusion", "Dot Net" -AutoSize | 
     Out-File c:servstatus.txt 
} 

$collection 
+0

有了正確的縮進,你可以清楚地看到你覆蓋該文件在foreach'的'每次迭代。 – sodawillow

回答

0

該腳本有可能來自格式化/複製/粘貼一些錯誤。如果您在Out-File上使用-Append參數,它可能會按預期工作。

+0

工作。非常感謝你。 –

+0

那麼你介意將答案標記爲「接受」,那麼其他用戶不會將此視爲未答覆的問題並進行調查嗎? – TToni

+0

接受。再次感謝 –

0

嘗試改變:

out-file c:servstatus.txt 

要:

out-file c:servstatus.txt -Append