Sto cercando di capire cosa significa in realtà questo errore. Finora una ricerca di richieste di aiuto simili per questo errore va da parametri mancanti, pipe mancanti, uso di linee singole o multi e anche problemi di concatenazione, ma nessuna delle risposte sembra dare una ragione definitiva. Quindi presumo che il problema sia il formato del codice (il che rende molto più difficile rintracciare).PowerShell: impossibile trovare un parametro posizionale che accetti la discussione "xxx"
Questo è il mio script che sto scrivendo per rinominare gli utenti di directory attive per OU di destinazione da qualunque formato siano ora in un formato nome.cognome.
Ho creato un OU di test in AD con alcuni utenti che causeranno errori e altri no. Tuttavia gli utenti che non dovrebbero darmi un errore mi stanno dando "un parametro posizionale non può essere trovato che accetta argomentazione" nome.cognome "
Non riesco a vedere cosa c'è di sbagliato con lo script ma spero che qualcuno possa darmi alcuni suggerimenti .
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
}
}
}
Dove l'errore si verifica potrebbe essere utile invece di farci indovinare. Cursory glance dice che questo è sbagliato 'Set-ADUser $ user -userPrincipalName = $ newname'. Rimuovi il segno di uguale a – Matt