我正在尝试在域中查找下一个可用的计算机名称。我们的计算机使用的命名格式 departmentName001查找下一个可用的计算机名称
departmentName003
departmentName004
...
departmentName999
我可以找到现有的计算机帐户,并添加1,但我不能工作为了让它开始看001,我知道使用"{0:d3}" -f
,但我没有正确使用它。谁能帮忙?
function GetComputerList($ComputerName)
{
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = “LDAP://dc=domain,dc=local”
$objSearcher.Filter = ("(&(objectCategory=computer)(name=$ComputerName))")
$colProplist = "name"
$objSearcher.PageSize = 1000
foreach ($i in $colPropList){[void]$objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
{$objComputer = $objResult.Properties; $objComputer.name}
}
$HostName = Finance
$unit="{0:d3}" -f $_
$num = GetComputerList("$HostName*") | Foreach {[int]($_.Name)} | Sort-Object | Select-Object -Last 1
$name = $HostName+($unit+($num+1))
感谢您的建议,但它不完成任务。具体来说,它移动到最大值,在那里可能有一个较小的值(例如,计算机1,3,4,5,6,7,8,9,它将使用10,而不是2)。 更重要的是,它不会填充{0:d3}所做的前导零000。因此,如果您使用'Finance'并且没有'Finance *'机器,它将以Finance1开始而不是Finance001开始,如果您使用销售名称为Sales07的名称Sales,则它将选择名称Sales48(不含前导0) – idarryl
@idarryl看我的编辑 –