2016-06-21 145 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