Если команда PowerShell сгенерировала этот вывод, вы можете просто сохранить вывод (результаты стандартного вывода) в переменной. Каждый блок данных будет объектом с парой property:value
. Итоговым результатом будет набор этих объектов. Вы можете получить доступ к каждому объекту, используя индексирование массива или условное логирование c.
# Array Indexing
$x = command
$x[0] # First object
$a = $x[0] # Storing first object in a variable
# Conditional Logic
$x = command
$a = $x | Where {$_.'Server Name' -eq 'xx1'}
# Using Select-Object
$x = command
$a = $x | Select-Object -First 1
Если вывод представляет собой одну строку, вам нужно будет выполнить некоторые операции со строкой. Вы можете разделить вывод на массив строк. Со строками, в отличие от нескалярных объектов, у вас не будет пар property:value
и, следовательно, вы потеряете большую гибкость.
# $data is single string of your output
$x = $data -split '\r?\n\s*\r?\n' # split string
$a = $x[0] # Access first output block with index [0] and store in variable
# Store each server block in a variable: $a0, $a1, $a2, etc.
0..($x.Count-1) | Foreach-Object {
Set-Variable -Name a$_ -Value $x[$_]
}
$a0 # First server
$a1 # second server
$a2 # third server
Если ваш вывод представляет собой массив строк, вы можете l oop через массив и создайте свой собственный массив элементов сервера:
# Output is an array of strings
$x = command
$a = for ($i = 0; $i -lt $x.count; $i+=7) {
,$x[$i..($i+5)]
}
$a[0] # Your first array with xx1 data
# Store each server block in a variable: $b0, $b1, $b2, etc.
0..($a.Count-1) | Foreach-Object {
Set-Variable -Name b$_ -Value $a[$_]
}
$b0 # First server
$b1 # second server
$b2 # third server
Если вы собираетесь читать вывод из файла, вы можете выбрать чтение файла как массива строк или отдельного строка. Затем вы можете применить любой из вышеперечисленных методов в зависимости от того, что вы выберете:
# Single String Read
$x = Get-Content file.txt -Raw
# Array of Strings Read
$x = Get-Content file.txt