使用Powershell获取与现有Active Directory计算机相关的可用主机名

使用Powershell获取与现有Active Directory计算机相关的可用主机名,powershell,active-directory,Powershell,Active Directory,我想在SCCM任务序列中运行Powershell脚本,在其中输入特定的主机名命名约定,在Active Directory中搜索并检查其可用性 我在internet上找到以下代码: $Prefix = $EnteredHostname -match '^(.*?)\d*$' | Out-Null # strip possibly trailing numbers $Prefix = $Matches[1] $Number = 0 # initialize last Number to zero

我想在SCCM任务序列中运行Powershell脚本,在其中输入特定的主机名命名约定,在Active Directory中搜索并检查其可用性

我在internet上找到以下代码:

$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
它工作正常,但只处理输入文本后的最后一个数字。 (在该代码运行之前,会出现一个文本框,其中输入了不带数字的所需主机名,并将其存储在变量$enteredHostname中)

我们公司的命名惯例是这样的:“主机名XXXX”。例如:主机名0005、主机名0015、主机名0150等。但此代码仅提供-->主机名5、主机名15、主机名150

如何根据命名约定调整代码,以便正确显示主机名

我自己还没弄明白。我是Powershell的新手,只使用了几个星期

任何sggesting都是高度敏感的

格式运算符(`-f')允许填充数字。在这种情况下,填充将在数字前面提供额外的零

"{0}{1:d4}" -f $Prefix,++$Number

您似乎可以将format语句调整为pad
$Number
<代码>“{0}{1:d4}”-f$前缀,++$Number。谢谢,这对我很有效。如果有机会,请务必标记所回答的问题。