Получить доступные имена хостов, связанные с существующими компьютерами Active Directory, используя Powershell - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу запустить скрипт Powershell в последовательности задач SCCM, в которой вводится определенное имя хоста по соглашению об именах, выполняется поиск в Active Directory и проверяется его доступность.

Я нашел следующий код в Интернете:

$Prefix = $EnteredHostname -match '^(.*?)\d*$' | Out-Null # strip possibly trailing numbers
$Prefix = $Matches[1]

$Number = 0 # initialize last Number to zero
Get-ADComputer -Filter * |
Where-Object {$_.Name -match "^$Prefix(\d+)$" }|
   Select-Object @{n='UsedNumber';e={[int]$Matches[1]}} | Sort-Object UsedNumber |
      ForEach-Object {
         While ($Number +1 -lt $_.UsedNumber){"{0}{1}" -f $Prefix,++$Number}
         $Number = $_.UsedNumber
      }
# if there was no gap get the next one.
"{0}{1}" -f $Prefix,++$Number

Работает нормально, но обрабатывает только последние цифры после введенного текста.(Перед выполнением этого кода появляется текстовое поле, в котором желаемое имя хоста без номеров вводится и сохраняется в переменной $ enterHostname).

Наше соглашение об именах нашей компании выглядит так: "HostnameXXXX".Например: Hostname0005, Hostname0015, Hostname0150 и т. Д.Но этот код обеспечивает только -> Hostname5, Hostname15, Hostname150, ..

Как я могу настроить код в соответствии с нашим соглашением об именах, чтобы имена хостов отображались правильно?

Я не мог 'сам пока не понялЯ новичок в Powershell, пользуюсь им всего несколько недель

Любые предложения очень важны

1 Ответ

1 голос
/ 29 апреля 2019

Оператор формата (`-f ') позволяет заполнять цифры.В этом случае отступ будет давать дополнительные нули перед числом.

"{0}{1:d4}" -f $Prefix,++$Number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...