Удаление данных из строки в Powershell - PullRequest
0 голосов
/ 23 мая 2019

Я извлекаю имена хостов со всех компьютеров в домене AD, и текущая команда форматирует их в форме URL с именем хоста в конце.Мне просто нужны имена хостов, поэтому я хотел бы удалить все слева от последней косой черты.

(([adsi]"WinNT://$((Get-WMIObject Win32_ComputerSystem).Domain)").Children).Where({$_.schemaclassname -eq 'computer'}) | %{ $_.Path }

Выводится так, как должно, мне просто нужно простоимя хоста, поэтому вместо WinNT://subdomain.somedomain.local/hostname я просто получил hostname, который затем перенаправил бы в выходной файл.

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Вы можете использовать оператор -Split для извлечения данных:

"WinNT://subdomain.somedomain.local/hostname" -Split "/" | Select-Object -Last 1

-Split "/" разделяет значение в массив подстрок, используя / в качестве разделителя.Вы можете получить доступ к полученным частям, используя индексы массива или Select-Object.Поскольку вам нужно последнее значение, вы можете альтернативно получить доступ к [-1] индексу результирующего массива (("WinNT://subdomain.somedomain.local/hostname" -Split "/")[-1]).

См. О Split для получения дополнительной информации и примеров.

0 голосов
/ 23 мая 2019

Просто опубликовать другой вариант и кое-что еще, что может быть полезно. Вы также можете разделить строки по их последнему индексу, то есть в последний раз, когда в нем появляется символ. Оттуда вы можете использовать метод Substring, чтобы выбрать остаток строки.

$lio = "WinNT://subdomain.somedomain.local/hostname".LastIndexOf('/')
"WinNT://subdomain.somedomain.local/hostname".Substring($lin + 1) # +1 to not include the slash

Вы можете увидеть все методы для строки здесь

Для подобных вещей я бы также посоветовал взглянуть на модуль ActiveDirectory . Вы можете легко запустить Get-ADComputer и выбрать определенные поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...