Principale utente con più risposte
Errore Script powershell

Domanda
-
Premesso che ho un Domain controller Windows 2008 r2 Powershell 5.1 , parto dal fatto che i nostri utenti AD hanno il campo attributo EmployeeID con un numero univoco identificativo, vorrei che tramite uno script di powershell potessi scrivere sul campo EmployeeNumber il C.F. Ho provato con uno script ma mi da errore. Lo script importa un file .csv dove c'è l'elenco di tutti i dati utenti dell'attributo EmployeeID, una volta verificato quello, il secondo dato dovrebbe scrivere il CF sul EmployeeNumber. Qualcuno ha suggerimenti ?
====Script======Non funzionante====
Import-CSV "C:\AD\Users.csv" | % {
$EmployeeID = $_.EmployeeID
$ID = $_.EmployeeNumber
$User = Get-ADUser -Filter {EmployeeID -eq $EmployeeID}
Set-ADUser $User.samaccountname -EmployeeNumber $ID
}
Risposte
-
Ho guardato bene il tuo codice cambiato, non sarebbe mai andato...
prima ti avevo risposto dal cell ed era un po' tutto troppo piccolo!
Usa questoImport-CSV "C:\AD\users.csv" |%{ $ID = $_.EmployeeNumber $utente=$_.utente TRY { $user=Get-ADUser -Filter {samaccountname -eq $utente} Write-Host $user } Catch { Write-Host "Errore utente $utente" } TRY { Set-ADUser $User.samaccountname -EmployeeNumber $ID } Catch {
write-host "Set-ADUser $($User.samaccountname) -EmployeeNumber $Id" Write-Host "Errore settando il C.F. utente $utente - $id"
} }
Gastone Canali >
Se alcuni post rispondono al tuo quesito, ricorda di contrassegnarli come risposta e non dimenticare anche i post utili. GRAZIE! Dai un occhio ai link Click Here and Here Leaderboard Here
- Modificato GastoneCanaliModerator venerdì 8 luglio 2022 16:48
- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 11 luglio 2022 15:29
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator lunedì 18 luglio 2022 07:39
Tutte le risposte
-
Potresti riportare l'errore, sarebbe utile per cercare di capire e darti una risposta
Gastone Canali >
Se alcuni post rispondono al tuo quesito, ricorda di contrassegnarli come risposta e non dimenticare anche i post utili. GRAZIE! Dai un occhio ai link Click Here and Here Leaderboard Here -
//==== queto è l'errore =======//
Set-ADUser : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADUser' required by
parameter 'Identity'. Specified method is not supported.
At C:\ad\add_cf.ps1:6 char:12
+ Set-ADUser $user.samaccountname - EmployeeNumber $ID
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.SetADUsergrazie
-
Dall'errore sembra che il parametro $ID non sia di tipo corretto
Prova con un utente tuo es:
Set-ADUser mario.rossi -EmployeeNumber 'MRARSS00A01F205E'
Se funziona, modifica il tuo script così
.... write-host "Set-ADUser $($User.samaccountname) -EmployeeNumber $ID" Set-ADUser $User.samaccountname -EmployeeNumber $ID ....
e posta l'output della write qui
Ciao Gastone
PS: via debug tu puoi vedere tutto, la write-host è per noi, servirebbe anche $id|gm
Gastone Canali >
Se alcuni post rispondono al tuo quesito, ricorda di contrassegnarli come risposta e non dimenticare anche i post utili. GRAZIE! Dai un occhio ai link Click Here and Here Leaderboard Here
- Modificato GastoneCanaliModerator giovedì 7 luglio 2022 19:55
-
Gentile Gastone,
innanzitutto grazie per la tua risposta, il comando che hai postato
Set-ADUser mario.rossi -EmployeeNumber 'MRARSS00A01F205E' funziona ma non riesco a farlo su tutte le righe del CSV per cui mi restituisce ancora degli errori.
Ho modificato lo script così:
Import-CSV "C:\AD\Users.csv" | % {
$ID = $_.EmployeeNumber
$User = Get-ADUser -Filter {utente -eq $User.samaccountname}
Set-ADUser $User -EmployeeNumber $ID
}
ed il file csv contiene le seguenti righe:
utente, employeenumber
nome1.cognome1, codicefiscale1
nome2.cognome2, codicefiscale2
dove nome1.cognome1 e nome2.cognome2 sono gli accoutname di AD
dove sbaglio?
-
Secondo me non sbagli, c'è un problema in al alcune righe del CSV
Gastone Canali >
Se alcuni post rispondono al tuo quesito, ricorda di contrassegnarli come risposta e non dimenticare anche i post utili. GRAZIE! Dai un occhio ai link Click Here and Here Leaderboard Here -
Ho guardato bene il tuo codice cambiato, non sarebbe mai andato...
prima ti avevo risposto dal cell ed era un po' tutto troppo piccolo!
Usa questoImport-CSV "C:\AD\users.csv" |%{ $ID = $_.EmployeeNumber $utente=$_.utente TRY { $user=Get-ADUser -Filter {samaccountname -eq $utente} Write-Host $user } Catch { Write-Host "Errore utente $utente" } TRY { Set-ADUser $User.samaccountname -EmployeeNumber $ID } Catch {
write-host "Set-ADUser $($User.samaccountname) -EmployeeNumber $Id" Write-Host "Errore settando il C.F. utente $utente - $id"
} }
Gastone Canali >
Se alcuni post rispondono al tuo quesito, ricorda di contrassegnarli come risposta e non dimenticare anche i post utili. GRAZIE! Dai un occhio ai link Click Here and Here Leaderboard Here
- Modificato GastoneCanaliModerator venerdì 8 luglio 2022 16:48
- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 11 luglio 2022 15:29
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator lunedì 18 luglio 2022 07:39