使用Powershell获取与现有Active Directory计算机相关的可用主机名
我想在SCCM任务序列中运行Powershell脚本,在其中输入特定的主机名命名约定,在Active Directory中搜索并检查其可用性 我在internet上找到以下代码:使用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
$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。谢谢,这对我很有效。如果有机会,请务必标记所回答的问题。