Назад | Перейти на главную страницу

Сценарий Powershell для создания новых пользователей и перемещения их в OU на основе описания пользователя не может перемещать пользователей

Этот сценарий создаст новых пользователей, но не будет перемещать их в соответствии с описанием пользователя? Изменить, похоже, что 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