Я написал сценарий Powershell для добавления новых пользователей в Active Directory из файла CSV. Когда я запускаю сценарий, я получаю синтаксическую ошибку в разделе кода New-ADuser. Я не понимаю, как синтаксис может быть неправильным. Мой редактор кода тоже ничего не видит. Я приложил скриншот сообщения об ошибке и файла CSV.
# Import Active Directory module
Import-Module ActiveDirectory
# Open file dialog
# Load Windows Forms
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
# Create and show open file dialog
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.InitialDirectory = $StartDir
$dialog.Filter = "CSV (*.csv)| *.csv"
$dialog.ShowDialog() | Out-Null
# Get file path
$CSVFile = $dialog.FileName
# Import file into variable
# Lets make sure the file path was valid
# If the file path is not valid, then exit the script
if ([System.IO.File]::Exists($CSVFile)) {
Write-Host "Importing CSV..."
$CSV = Import-Csv -LiteralPath "$CSVFile"
} else {
Write-Host "File path specified was not valid"
Exit
}
# Lets iterate over each line in the CSV file
foreach($user in $CSV) {
# Password
$SecurePassword = ConvertTo-SecureString "$($user.'First Name'[0])$($user.'Last Name')$($user.'Employee ID')!@#" -AsPlainText -Force
# Create new user
New-ADUser -Name $user.'Full Name' `
-GivenName $user.'First Name' `
-Surname $user.'Last Name' `
-EmailAddress $user.'Email Address' `
-DisplayName $user.'Full Name' `
-Path "$($user.'Organizational Unit')" `
-ChangePasswordAtLogon $true `
-AccountPassword $SecurePassword `
-Enabled $([System.Convert]::ToBoolean($user.Enabled))
# Write to host that we created a new user
Write-Host "Created $Username / $($user.'Email Address')"
# If groups is not null... then iterate over groups (if any were specified) and add user to groups
if ($User.'Add Groups (csv)' -ne "") {
$User.'Add Groups (csv)'.Split(",") | ForEach {
Add-ADGroupMember -Identity $_ -Members "$($user.'First Name').$($user.'Last Name')"
WriteHost "Added $Username to $_ group" # Log to console
}
}
# Write to host that we created the user
Write-Host "Created user $Username with groups $($User.'Add Groups (csv)')"
}
Read-Host -Prompt "Script complete... Press enter to exit."
Не видя, что находится внутри вашего csv, трудно определить проблему. Кажется, указывает на то, что вы передаете командлеты. Чтобы включить .Split()
в свои группы.
Вы имеете в виду
DC=co
Кроме того, вам действительно нужно изучить разбрызгивание и проверку ошибок. Вы пишете сообщение об успешном выполнении хосту после неудачной итерации.
[1] ПОЖАЛУЙСТА, не публикуйте изображения кода/ошибок/данных. Зачем? смотрите... Почему я не должен загружать изображения кода/данных/ошибок при задании вопроса? - Meta Stack Overflow — meta.stackoverflow.com/questions/285551/… ///// [2] также рассмотрите возможность использования splatting вместо всех этих вызывающих ошибки обратных кавычек. ///// [3] также добавьте первые 3 строки вашего CSV в вопрос, чтобы люди могли видеть, выглядит ли он так, как должен.