Сценарий 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

Другие вопросы по тегам