簡體   English   中英

使用Powershell獲取與現有Active Directory計算機相關的可用主機名

[英]Get available Hostnames related to existing Active Directory Computers using Powershell

我想運行一個帶有SCCM任務序列的Powershell腳本,在該腳本序列中輸入了一個按命名約定命名的特定主機名,在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

它工作正常,但僅處理輸入的文本后的最后一個數字。 (在運行該代碼之前,將出現一個文本框,在其中輸入所需的主機名(不帶數字)並將其存儲在變量$ enteredHostname中)。

我們公司的命名約定如下:“ HostnameXXXX”。 例如:主機名0005,主機名0015,主機名0150等。 但是此代碼僅提供-> Hostname5,Hostname15,Hostname150,..

如何調整代碼以符合我們的命名約定,以便正確顯示主機名?

我自己還沒弄清楚。 我是Powershell的新手,僅使用了幾周

強烈建議

格式運算符(-f)允許填充數字。 在這種情況下,填充將在數字前面提供額外的零。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM