Я не совсем уверен в ваших мотивах, но вот более чистый способ получить ответ, который вы ищете:
Создайте PSObject, содержащий выходные данные
PSObject будетсодержать вывод w32tm.Код работает, передавая выходные данные команды через цикл, вначале мы создаем HashTable, а затем он используется для создания объекта PowerShell, которым проще манипулировать:
# Pipe the w32tm command through a foreach
# Build a hashtable object containing the keys
# $_ represents each entry in the command output, which is then split by ':'
$w32_obj = w32tm /query /status | ForEach-Object -Begin {$w32_dict = @{}} -Process {
# Ignore blank entries
if ($_ -ne '') {
$fields = $_ -split ': '
# This part sets the elements of the w32_dict.
# Some rows contain more than one colon,
# so we combine all (except 0) the split output strings together using 'join'
$w32_dict[$fields[0]] = $($fields[1..$($fields.Count)] -join ':').Trim()
}
} -End {New-Object psobject -Property $w32_dict}
Просмотр PSObject
Просто запустите это, чтобы отобразить новый PSObject, который был создан:
$w32_obj
Теперь проверьте 'Source'
Теперь мы можем запросить объект 'Source' из $w32_obj
с использованием точечной нотации: $w32_obj.Source
:
if($w32_obj.Source -eq "Local CMOS Clock"){
Write-Output "True";
}Else{
Write-Output "False";
}
Дальнейшее чтение
Здесь показано преобразование из HashTable в PSobject и наоборот
PSCustomObject to Hashtable