Поскольку ваши первые символы в первой строке $net
после $net = $_.Context.PostContext
содержат разделенные символы, пустая строка будет выводиться в качестве первого элемента вывода. Затем при строковом выводе каждый разделенный выходной элемент объединяется одним пробелом.
Вам необходимо выбрать не пустые строки:
$enet = $net -split "<comm:FieldValue>(\d*)</comm:FieldValue>" -ne ''
Объяснение:
-Split
символы, не окруженные ()
, удаляются из выходных данных, а оставшаяся строка разбивается на несколько элементов из каждого из этих совпадающих символов. Когда совпадающий символ начинает или заканчивает строку, выводится пустая строка. Необходимо соблюдать осторожность, чтобы удалить эти строки, если они не нужны. Trim()
не будет работать, поскольку Trim()
применяется к одной строке, а не к массиву, и не удаляет пустую строку.
Добавление -ne ''
в конец команды удаляет пустые строки. Это просто встроенное логическое условие, которое при применении к массиву выводит только те элементы, для которых условие истинно.
Ниже приведен пример условия пустой строки:
123 -split 1
23
123 -split 1 -ne ''
23