У меня есть этот XML-документ в текстовом файле:
<?xml version="1.0"?>
<Objects>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="DisplayName" Type="System.String">SQL Server (MSSQLSERVER)</Property>
<Property Name="ServiceState" Type="Microsoft.SqlServer.Management.Smo.Wmi.ServiceState">Running</Property>
</Object>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="DisplayName" Type="System.String">SQL Server Agent (MSSQLSERVER)</Property>
<Property Name="ServiceState" Type="Microsoft.SqlServer.Management.Smo.Wmi.ServiceState">Stopped</Property>
</Object>
</Objects>
Я хочу выполнить итерацию каждого объекта и найти DisplayName
и ServiceState
. Как мне это сделать? Я пробовал всевозможные комбинации и изо всех сил стараюсь это исправить.
Я делаю это, чтобы преобразовать XML в переменную:
[xml]$priorServiceStates = Get-Content $serviceStatePath;
где $serviceStatePath
- это имя файла xml, показанное выше. Затем я подумал, что могу сделать что-то вроде:
foreach ($obj in $priorServiceStates.Objects.Object)
{
if($obj.ServiceState -eq "Running")
{
$obj.DisplayName;
}
}
И в этом примере мне нужна строка, выводимая с помощью SQL Server (MSSQLSERVER)