我正在編寫一個簡單的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