Этот сценарий создаст новых пользователей, но не будет перемещать их в соответствии с описанием пользователя? Изменить, похоже, что Powershell показывает поле описания как пустое, но оно заполнено в Active Directory.
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][string]$filepath #Require file path to import new users
)
Import-Module ActiveDirectory #import AD module
Import-Csv -Path $filepath | New-ADUser -PassThru -OutVariable newusernames #send the new user CSV to new-ADUser and create a variable with the new user accounts.
foreach($newuser in $newusernames)
{
switch -Wildcard ($newuser.Description)
{
"*Kindergartner*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=KindergartenStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*1stGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=1stGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*2ndGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=2ndGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*3rdGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=3rdGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*4thGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=4thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*5thGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=5thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*6thGrader*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=6thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*Teacher*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=TeachersOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
"*Administration*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=AdministrationOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
"*ClassifiedStaff*" {Move-ADObject -Identity $newuser.DistinguishedName -TargetPath "OU=ClassifiedStaffOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
}
}
То, как в настоящее время структурирован ваш код, означает, что он должен создать всех пользователей из файла CSV, прежде чем перемещать кого-либо из них в их окончательное подразделение. Действительно ли сценарий завершается? Или вы прекращаете его преждевременно, когда не видите, что пользователи входят в назначенное им подразделение?
Если вы хотите, чтобы пользователи перемещались по мере их создания, вы должны либо включить Path
в выходных данных CSV, чтобы они были созданы в целевом подразделении для начала, или реструктурируйте ваш код, чтобы перемещение происходило сразу после каждого New-ADUser
вызов.
Вы также можете просто настроить вывод CSV перед вызовом New-ADUser
как это:
$tweakedCSV = Import-Csv -Path $filepath | Select *,@{L='Path';E={
switch -Wildcard $_.description {
"*Kindergartner*" { "OU=KindergartenStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*1stGrader*" { "OU=1stGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*2ndGrader*" { "OU=2ndGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*3rdGrader*" { "OU=3rdGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*4thGrader*" { "OU=4thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*5thGrader*" { "OU=5thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*6thGrader*" { "OU=6thGradeStudentsOU,OU=GrandRidgeStudents,DC=dgwphotos,DC=local" }
"*Teacher*" { "OU=TeachersOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
"*Administration*" { "OU=AdministrationOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
"*ClassifiedStaff*" { "OU=ClassifiedStaffOU,OU=GrandRidgeStaff,DC=dgwphotos,DC=local" }
}
}}
$tweakedCSV | New-ADUser
-OutVariable
был добавлен в более поздних версиях powerhsell, и иногда не все cmdLet поддерживают все эти параметры. Попробуйте добавить следующее перед строкой foreach, посмотрите, установлена ли она "outvar count:" + $newusernames.count
. Если вы не видите число, то -outvariable не поддерживается New-ADuser
командлет. Заполните массив другим способом: $newusernames = Import-Csv -Path $filepath