Я пытаюсь понять, что на самом деле означает эта ошибка. До сих пор поиск похожих запросов справки для этой ошибки варьировался от отсутствующих параметров, отсутствующих каналов, использования одиночных или нескольких строк, а также проблем конкатенации, но ни один из ответов, по-видимому, не дал окончательной причины. Поэтому я предполагаю, что проблема заключается в формате кода (что значительно усложняет отслеживание).Powershell: Невозможно найти позиционный параметр, который принимает аргумент «xxx»
Это мой сценарий, который я пишу, чтобы переименовывать активных пользователей каталогов на целевое OU из любого формата, в котором они сейчас находятся, в формате 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
}
}
}
В случае возникновения ошибки было бы полезно вместо того, чтобы нас угадывать. Беглый взгляд говорит, что это неправильно. Set-ADUser $ user -userPrincipalName = $ newname'. Удалите знак равенства – Matt