function Get-NextComputerName {
#Workstation Name Scheme IE: NFDW0001
$sitecode ="NFDW"
$searcher= new-object System.DirectoryServices.DirectorySearcher("(&(objectClass=computer)(name=$sitecode*))")
$comps = $searcher.findall()
$names= $comps | %{$_.Properties.name}
$numbers= @($names | %{$_ -replace "$sitecode",""} | %{[int]$_} | sort)
#make sure single items still get treated as a list
$i= 0
$prev= 0 #Assume you start at "0001"... $prev should be one less than your first expected number
$next= $numbers[0]
while ( ($next- $prev) -le 1 -and $i -le ($numbers.count-1)) {
$i++
$prev= $next
$next= $numbers[$i]
}
if ($i -le $numbers.count) {
$nextopen= "$sitecode{0:0###}" -f ($prev+1)
} else {
$nextopen= "$sitecode{0:0###}" -f ($next+1)
}
write-host "Available Workstation: $nextopen"
#Mobile Name Scheme IE: NFDM0001
$sitecode ="NFDM"
$searcher= new-object System.DirectoryServices.DirectorySearcher("(&(objectClass=computer)(name=$sitecode*))")
$comps = $searcher.findall()
$names= $comps | %{$_.Properties.name}
$numbers= @($names | %{$_ -replace "$sitecode",""} | %{[int]$_} | sort)
#make sure single items still get treated as a list
$i= 0
$prev= 0 #Assume you start at "0001"... $prev should be one less than your first expected number
$next= $numbers[0]
while ( ($next- $prev) -le 1 -and $i -le ($numbers.count-1)) {
$i++
$prev= $next
$next= $numbers[$i]
}
if ($i -le $numbers.count) {
$nextopen= "$sitecode{0:0###}" -f ($prev+1)
} else {
$nextopen= "$sitecode{0:0###}" -f ($next+1)
}
write-host "Available Mobile: $nextopen"
}