Я хочу запустить скрипт 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, пользуюсь им всего несколько недель
Любые предложения очень важны