Я пытаюсь понять, что на самом деле означает эта ошибка. До сих пор поиск похожих запросов на помощь по этой ошибке варьировался от отсутствующих параметров, отсутствующих каналов, использования одиночных или многострочных линий, а также от проблем конкатенации, но ни один из ответов, по-видимому, не дает определенной причины. Поэтому я предполагаю, что проблема заключается в формате кода (что делает его намного сложнее отследить).
Это мой сценарий, который я пишу, чтобы переименовать активных пользователей каталога для целевого подразделения из любого формата, в котором они сейчас находятся, в формат firstname.surname.
Я создал тестовое подразделение в AD с некоторыми пользователями, которые будут вызывать ошибки, а некоторые - нет. Однако пользователи, которые не должны выдавать мне ошибку, сообщают мне, что "не найден позиционный параметр, который принимает аргумент" firstname.surname "
Я не вижу, что не так со сценарием, но, надеюсь, кто-нибудь подскажет мне.
Import-Module ActiveDirectory
$users = $null
$users = Get-ADUser -SearchBase "ou=Testing,ou=Users,dc=my,dc=domain" -Filter * -Properties *
foreach ($user in $users) {
Write-Host "Processing... $($user)"
$newname = $null
# Check first/last name is set
if (!$user.givenName -or !$user.Surname) {
Write-Host "$($user) does not have first name or last name set. Please correct, skipping user."
continue
} else {
$newname = ("$($user.givenName).$($user.Surname)")
#Check if new username already exists
if (dsquery user -samid $newname) {
Write-Host "$($user) requires altered username with initial."
if (!$user.Initials) {
Write-Host "$($user) does not have any initials set. Please correct, skipping user."
continue
}
$newname = ("$($user.givenName)$($user.Initials).$($user.Surname)")
#Check if altered new username already exists
if (dsquery user -samid $newname) {
Write-Host "$($user) requires manual change. Please correct, skipping user."
continue
}
}
try {
#Change UPN
Set-ADUser $user -userPrincipalName = $newname
#Change DN
Rename-ADObject -identity $user -Newname $newname
} catch {
Write-Host "Error when renaming $($user). Error is: $($_.Exception.Message). User requires manual change. Please correct, skipping user."
continue
}
}
}