Ich weiß, ich kann einen AD-Benutzer mit Powershell verschieben. Was ich erreichen möchte, ist, eine Reihe von Benutzern basierend auf ihrer Beschreibung zu bewegen. Ich habe eine CSV-Datei und in diesem CSV ist sie ein Jahr der Graduierung Spalte. Ich möchte, dass alle Benutzer, die ein YOG von 2016 bis 2022 haben, in die High School OU gezogen sind.Move AD Benutzer mit Powershell
Ich habe noch nicht versucht, den Code zu schreiben. Ich war in der Powershell erfolgreich, Benutzerkonten auf der Grundlage von dept, aber nicht Beschreibung zu greifen. Hier ist ein paar gleichen Daten
"ID","FNAME","LNAME","BDATE","GRD","SCHID"
"111111","TEst","student1","19980601","2016","1480"
"222222","test","Student2","19980522","2017","1480"
"333333","test","Student3","19970813","2025","1479"
Ich habe voraus gegangen und hat die schoolcode auf die CSV-Datei. Ich denke, das wird viel einfacher sein, die Schüler auf der Grundlage dieser Datei zu der richtigen Ou zu bewegen. 1480 ist elem, 1479 hs. Auch hier ist der Code, den ich verwende, um die AD-Konten zu erstellen.
# Import active directory module for running AD cmdlets
Import-Module activedirectory
#Store the data from ADUsers.csv in the $ADUsers variable
$ADUsers = Import-csv userimport.csv
#Store report in log file in the $log variable
$log = "log.txt"
#Loop through each row containing user details in the CSV file
foreach ($User in $ADUsers)
{
#Read user data from each field in each row and assign the data to a variable as below
$Username = $User.ID
$Password = $User.BDATE
$Firstname = $User.FNAME
$Lastname = $User.LNAME
$Department = $User.GRD
$Company = $User.SCHID #This field refers to the OU the user account is to be moved to
#Check to see if the user already exists in AD
if (Get-ADUser -F {SamAccountName -eq $Username})
{
#If user does exist, give a warning
Write-Warning "A user account with username $Username already exist in Active Directory."
}
else
{
#User does not exist then proceed to create the new user account
"Processing started (on " + $date + "): " | Out-File $log -append
"--------------------------------------------" | Out-File $log -append
#Account will be created in the OU provided by the $OU variable read from the CSV file
New-ADUser `
-SamAccountName $Username `
-UserPrincipalName "[email protected]" `
-Name "$Firstname $Lastname" `
-GivenName $Firstname `
-Department "$Department" `
-Company "$Company" `
-EmailAddress "[email protected]" `
-Surname $Lastname `
-Enabled $True `
-Scriptpath "login.vbs" `
-DisplayName "$Firstname $Lastname" `
-Path "ou=users,ou=hs,dc=clasd,dc=net" `
-AccountPassword (convertto-securestring $Password -AsPlainText -Force) `
-ChangePasswordAtLogon $true
# Add User to Groups
#Add-ADPrincipalGroupMembership -Identity $Username -MemberOf "Elem","Elem Students"
Start-Sleep 3
# Move Users to appropiate OU based on School Code
$usr = import-csv userimport.csv
foreach ($User in $usr) {
if ($user.grd -in 2016){
Get-ADUser $User.ID | Move-ADObject -TargetPath 'OU=users,ou=hs,dc=clasd,dc=net'
}
}
}
}
Hallo, können Sie bitte etwas Code zur Verfügung stellen, den Sie versucht haben zu schreiben und eine Beispiel-CSV-Datei? – sodawillow
Ich mache mir keine Sorgen um Studenten mit dem gleichen Namen. Wenn sie den gleichen Namen haben, schaue ich mir einfach ihre ID-Nummer an, die wir für ihr Login-Konto verwenden. Alle Benutzernamen sind ihre ID-Nummer. Ich möchte nur die Schüler bewegen, wie ich sie in ihre richtige Organisationseinheit erstellen. –
Welches Format haben die AD-Benutzernamen? Wie entsprechen sie den Daten in Ihrer CSV? Ist YOG bereits in einem AD-Attribut gespeichert? –