我正在编写一个简单的PowerShell脚本以从本地和远程服务器获取服务的状态。我在的服务器和服务从我创建了一个XML文件中读取:根据服务器名称获取服务名称
<Settings>
<Server>
<Name>Server1</Name>
<StartOrder>1</StartOrder>
<Services>
<Service>
<Name>Service1</Name>
<StartOrder>1</StartOrder>
</Service>
<Service>
<Name>Service2</Name>
<StartOrder>2</StartOrder>
</Service>
</Services>
</Server>
</Settings>
这里是我的代码:
$xml = [xml](Get-Content $args)
function readServersfromXML() {
$xml.Settings.Server | select -ExpandProperty Name
}
function readServerServicesfromXML($server) {
$server
$xml.Settings.Server.Services.Service | Where {$_ -eq $server}
}
function getServiceStatus($server, $service) {
Get-Service -Name $service -ComputerName $server
}
$servers = (readServersfromXML)
#loop through the configxml and get status of services
foreach ($server in $servers) {
$services = (readServerServicesfromXML $server)
foreach ($service in $services) {
getServiceStatus $server $service
}
}
什么工作是在得到填充$servers
哈希值,但$services
哈希不,我不知道为什么。我的假设是readServerServicesfromXML()
函数没有找到路径,但我不知道为什么。有人能指出我正确的方向,还是提供一个更好的方法来做到这一点?最终,我将使用此脚本以XML文件(因此为startOrder
XML标记)指定的特定顺序远程启动服务。
这就像一个魅力。我很惊讶,我离我正在寻找的解决方案不太远。谢谢beatcracker对我的代码进行调整。 – todd1215