Прежде всего, я хочу указать, что я здесь новичок и довольно новичок в PowerShell (3 недели обучения), поэтому мой код и вопрос могут быть трудными для чтения ..
В любом случае, я сделал этот сценарий, и я часто проверял, действительно ли он работает, затем я забегал вперед и соединял несколько частей вместе без тестирования. Я тестировал многие части скрипта по отдельности, и мне показалось, что go неверно, когда он принимает ввод из моего CSV-файла. Цель состоит в том, чтобы автоматизировать создание пользователей (массовых пользователей) из файла csv. У вас должна быть возможность написать путь к OU с макс.1 родительским OU и, наконец, создать или добавить пользователя в существующие группы
Моя первая ошибка - это синтаксическая ошибка при попытке создать новый ou
$Users = Import-Csv -Delimiter "," -Path "C:\Users\DOA\Documents\csv.csv"
foreach ($User in $Users){
# ----------OU----------
# if OU is empty they get placed in default location
if($OU -ne "") {
$OU = $User.OU
if((Get-ADOrganizationalUnit -Filter * | Where-Object DistinguishedName -eq $OU).count -eq 0){
$OUArray1 = $OU.Split(",")
$OUArray2 = $OUArray1.Split("=")
$contain = 0
# Counts the amount of OU's in the path defined in csv
foreach ($blah in $OUArray2){
if($blah -eq "OU"){
$contain++
}
}
# If there is one parent OU
if($contain -eq 2){
$NewOUpath = "$($OUArray1[2]),$($OUArray1[3])"
New-ADOrganizationalUnit -Name $OUArray2[3] -Path $NewOUpath
$Domainpath = "$($OUArray1[2]),$($OUArray1[3])"
$NewOUpath = "$($OUArray1[1]),$($OUArray1[2]),$($OUArray1[3])"
New-ADOrganizationalUnit -Name $OUArray2[1] -Path $NewOUpath
} else {
#
$NewOUpath = "$($OUArray1[1]),$($OUArray1[2])"
$Domainpath = "$($OUArray1[1]),$($OUArray1[2])"
New-ADOrganizationalUnit -Name $OUArray2[1] -Path $NewOUpath
}
}
} else { $OU = "OU=Users,DC=Company,DC=local" }
Вторая ошибка - синтаксическая ошибка при попытке создать нового пользователя
$Password = ConvertTo-SecureString $User.Password -AsPlainText -Force
$UserProps =@{
Name = $User.Firstname + " " + $User.Lastname
GivenName = $User.Firstname
Surname = $User.Lastname
SamAccountName = $User.SAM
AccountPassword = $Password
Path = $OU
Enabled = $true
ChangePasswordAtLogon = $false
PasswordNeverExpires = $true
}
New-ADUser @UserProps -PassThru
Вот файл CSV (пока не удается вставить изображения) Файл CSV
Полный сценарий для справки https://pastebin.com/JumJKZDr
Любая помощь приветствуется