Запуск моего скрипта poweshell выдает ошибку и не регистрирует новых пользователей - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь привлечь пользователей, использующих Powershell, для компании, в которой я работаю, однако я сталкиваюсь с проблемой, в которой говорится, что объект каталога не найден.Может кто-нибудь помочь мне с тем, что моя ошибка и как ее исправить?

Я пытался удалить город, организационную единицу и несколько раз пытался редактировать мой файл CSV Excel, но все тесты не прошли

# Import active directory module for running AD cmdlets
Import-Module activedirectory

#Store the data from ADUsers.csv in the $ADUsers variable
$ADUsers = Import-csv C:\Users\padmin\Documents\users.csv

#Loop through each row containing user details in the CSV file 
foreach ($User in $ADUsers)
{
#Read user data from each field in each row and assign the data to a variable as below

$Username   = $User.username
$Password   = $User.password
$Firstname  = $User.firstname
$Lastname   = $User.lastname
$OU         = $User.ou #This field refers to the OU the user account is to be created in
$email      = $User.email
$streetaddress = $User.streetaddress
#$city       = $User.city
$zipcode    = $User.zipcode
$state      = $User.state
$country    = $User.country
$telephone  = $User.telephone
$jobtitle   = $User.jobtitle
$company    = $User.company
$department = $User.department
$Password = $User.Password


#Check to see if the user already exists in AD
if (Get-ADUser -F {SamAccountName -eq $Username})
{
     #If user does exist, give a warning
     Write-Warning "A user account with username $Username already exist in Active Directory."
}
else
{
    #User does not exist then proceed to create the new user account

    #Account will be created in the OU provided by the $OU variable read from the CSV file
    New-ADUser `
        -SamAccountName $Username `
        -UserPrincipalName "$Username@greenkeyllc.com" `
        -Name "$Firstname $Lastname" `
        -GivenName $Firstname `
        -Surname $Lastname `
        -Enabled $True `
        -DisplayName "$Lastname, $Firstname" `
        -Path $OU `
        #-City $city `
        -Company $company `
        -State $state `
        -StreetAddress $streetaddress `
        -OfficePhone $telephone `
        -EmailAddress $email `
        -Title $jobtitle `
        -Department $department `
        -AccountPassword (convertto-securestring $Password -AsPlainText -Force) -ChangePasswordAtLogon $True

}
}

Ожидаемые результаты - добавить пользователя в соответствующую организационную единицу (разные офисы) в локальном активном каталоге.Фактические результаты - ошибка ниже.

New-ADUser : Directory object not found
At C:\Users\padmin\Documents\bulk_users1.ps1:41 char:3
+         New-ADUser `
+         ~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CN=Bob Jake,CN=...eenkey,DC=local:String) [New-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.NewADUser

-Company : The term '-Company' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again.
At C:\Users\padmin\Documents\bulk_users1.ps1:51 char:13
+             -Company $company `
+             ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (-Company:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

1 Ответ

1 голос
/ 27 июня 2019

Строка с комментариями # в середине скрипта прерывает ожидаемое продолжение строки:

    -Path $OU `
    #-City $city `
    -Company $company `

Поместите аргументы в хеш-таблицу и разделите их вместо:

$NewADUserArgs = @{
    SamAccountName = $Username
    UserPrincipalName = "$Username@greenkeyllc.com"
    Name = "$Firstname $Lastname"
    GivenName = $Firstname
    Surname = $Lastname
    Enabled = $True
    DisplayName = "$Lastname, $Firstname"
    Path = $OU
    # City = $city
    Company = $company
    State = $state
    StreetAddress = $streetaddress
    OfficePhone = $telephone
    EmailAddress = $email
    Title = $jobtitle
    Department = $department
    AccountPassword = (convertto-securestring $Password -AsPlainText -Force)
    ChangePasswordAtLogon = $true
}

New-ADUser @NewADUserArgs

Теперь вы можете легко закомментировать одну запись в таблице аргументов, не беспокоясь о переносах строк и всех этих неприятных обратных галочках

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...