Go по каждому атрибуту Resource
и извлеките элемент листа из URL-адреса с помощью Split-Path
:
foreach ($url in $xml.BESAPI.Computer.Resource) {
Split-Path -Path $url -Leaf
}
Или используя Foreach-Object
если вы предпочитаете использовать конвейеры вместо перечисления foreach
:
$xml.BESAPI.Computer.Resource | ForEach-Object {
Split-Path -Path $_ -Leaf
}
Вывод:
549
550
552
551
Из документации для -Leaf
:
Указывает, что этот командлет возвращает только последний элемент или контейнер в пути. Например, по пути C: \ Test \ Logs \ Pass1.log он возвращает только Pass1.log.
Update
As @ Йерун Мостерт упомянул в комментариях, что полные URL-адреса не являются путями, поэтому Split-Path -Leaf
может вызвать проблемы.
Более безопасным решением было бы преобразовать URL-адрес в объект System.Uri
, а затем использовать вместо него свойство System.Uri.LocalPath
:
foreach ($url in $xml.BESAPI.Computer.Resource) {
Split-Path -Path ([uri]$url).LocalPath -Leaf
}
Или просто используйте split
, аналогично js2010's ответ:
foreach ($url in $xml.BESAPI.Computer.Resource) {
($url -split "/")[-1]
}