Я анализирую текстовый вывод из дискового массива, который перечисляет информацию о снимках LUN в предсказуемом формате.После попыток любым другим способом извлечь эти данные из массива удобным способом, единственное, что я могу сделать, - это сгенерировать этот текстовый файл и проанализировать его.Вывод выглядит так:
SnapView logical unit name: deleted_for_security_reasons
SnapView logical unit ID: 60:06:01:60:52:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Target Logical Unit: 291
State: Inactive
Это повторяется по всему файлу с одним разрывом строки между каждой группой.Я хочу определить группу, проанализировать каждую из четырех строк, создать новый объект PSObject, добавить значение для каждой строки в качестве нового NoteProperty, а затем добавить новый объект в коллекцию.
Что я могу изобразитьВыход, как только я идентифицирую первую строку в блоке из четырех строк, как обработать текст из строк второй, третьей и четвертой.Я перебираю каждую строку, нахожу начало блока и затем обрабатываю его.Вот что у меня есть, с комментариями, где волшебство идет:
$snaps = get-content C:\powershell\snaplist.txt
$snapObjects = @()
foreach ($line in $snaps)
{
if ([regex]::ismatch($line,"SnapView logical unit name"))
{
$snapObject = new-object system.Management.Automation.PSObject
$snapObject | add-member -membertype noteproperty -name "SnapName" -value $line.replace("SnapView logical unit name: ","")
#Go to the next line and add the UID
#Go to the next line and add the TLU
#Go to the next line and add the State
$snapObjects += $snapObject
}
}
Я искал Google и StackOverflow, пытаясь выяснить, как я могу ссылаться на номер строки объекта, через который я перебираюи я не могу понять это.Я могу слишком полагаться на циклы foreach, так что это влияет на мое мышление, я не знаю.