i'm trying to write a script to popolate uidnumber in active directory.
$SearchBase = "OU=test,DC=xxx,DC=local"
$lastuid = Get-ADUser -Filter * -searchbase $searchbase -Properties * | Where {($_.uidNumber -ne $null)} | select uidnumber | Measure-Object -Property uidnumber -Maximum | select maximum |
Format-Wide
$i= $lastuid
$nouid = Get-ADUser -Filter * -searchbase $searchbase -Properties * | Where {($_.uidNumber -eq $null)} | select samaccountname
$nouid | %{Set-ADUser $_.samAccountName -add @{uidnumber=('{0:D4}' -f $i++)}}
This do not produce error but pupulate uidnumber starting from 0, ignoring lastuid. If i use
$i= $lastuid
produce error like
"Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Int32". At C:\-\Documents\uid.ps1:16 char:15... $nouid | %{Set-ADUser $_.samAccountName -replace @{uidnumber=([int] ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidArgument: (:) [], RuntimeException
FullyQualifiedErrorId : ConvertToFinalInvalidCastException"
any suggestion?