Сценарий Powershell для создания новых пользователей и перемещения их в подразделение на основе описания пользователя не может перемещать пользователей
Этот сценарий создаст новых пользователей, но не переместит их на основании описания пользователя. Правка. Похоже, что 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" }
}
}
2 ответа
То, как вы в настоящее время структурировали свой код, означает, что он должен создать всех пользователей из файла 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, и иногда не все cmdLets поддерживают все эти параметры. Попробуйте добавить следующее перед строкой foreach, чтобы увидеть, установлена ли она "outvar count:" + $newusernames.count
, Если вы не видите число, то -outvariable не поддерживается New-ADuser
Командлет. Заполните массив следующим образом: $newusernames = Import-Csv -Path $filepath