Powershell : Сценарий Создания Пользователя

#powershell

Вопрос:

У меня есть скрипт, который в целом работает хорошо, но один из параметров отображается не так, как должен.

Скрипт :

 # Create user account in AD. After execution, you will ask to set the password.
New-ADUser `
    -Name "John Travolta" `
    -GivenName "John" `
    -Surname "Travolta" `
    -UserPrincipalName "JohnT"`
    -DisplayName "John Travolta" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "CLASS" `
    -Title "Actor" `
    -State "ON" `
    -City "Kitchener" `
    -Description "Bold dude from face off" `
    -EmployeeNumber "4" `
    -Department "Paramount Cinema" `
    -Country "CA" `
    -PostalCode "N2B G5T" `
    -SamAccountName "JohnT"`
    -MobilePhone "519-7218652"`
    -Enabled $True

#Add user to the specific OU.
$MOVEOU = Move-ADObject -Identity "CN=John Travolta,CN=Users,DC=class,DC=com" -TargetPath "OU=paramount cinema,DC=class,DC=com"
if ($moveou -eq "error") {
    Write-Host "Move ADObject failed" -ForegroundColor DarkRed
}
else {
    Write-Host "Move ADObject completed" -ForegroundColor Cyan
}

#Add user to the specific group
$MoveToGroup = Add-ADGroupMember -Identity SG-ParamountCinema -Members JohnT
if ($movetogroup -eq "error") {
    Write-Host "Add ADGroupMember Failed" -ForegroundColor DarkRed
}
else {
    Write-Host "Add ADGroupMember completed" -ForegroundColor Cyan
}
 

Результат хороший, но в случае ошибки он не показывает «Не удалось» темно-красным цветом, только успех.

Пожалуйста, помогите, спасибо!

Комментарии:

1. Вы всегда можете добавить -ErrorAction Stop параметр и обернуть все в a Try{}Catch{} . Такие как Try{$MoveToGroup = Add-ADGroupMember -Identity SG-ParamountCinema -Members JohnT -ErrorAction Stop;Write-Host "Add ADGroupMember completed" -ForegroundColor Cyan}Catch{Write-Host "Add ADGroupMember Failed" -ForegroundColor DarkRed}

Ответ №1:

По умолчанию, в случае успеха Add-ADGroupmember не выводит никаких результатов. Поэтому присвоение «ничего $MoveToGroup » никогда не будет равнозначно «ошибке». Это, вероятно, то же самое для Move-ADObject . Независимо от выходных данных, это неправильный способ обработки ошибок. Вам следует взглянуть на about_Try_Catch_Finally, но вот как это может выглядеть:

 Try {
    $MoveToGroup = Add-ADGroupMember -Identity SG-ParamountCinema -Members JohnT -ErrorAction Stop -passThru
    Write-Host "Add ADGroupMember completed" -ForegroundColor Cyan
}
Catch {
    Write-Host "Add ADGroupMember Failed" -ForegroundColor DarkRed
}
 

Обратите внимание на добавление -passThru . Хотя вам не нужно назначать какие-либо выходные данные переменной для обработки ошибок, я не знаю, нужен ли объект группы в другом месте. Обычно -passThru командлету предписывается создать объект, с которым он работал. Так что, если переменная $MoveToGrou нужна в другом месте и т. Д…

Как правило, использование обратных ссылок для продолжения строки не одобряется. Вместо этого попробуйте плюхнуться. Это может выглядеть примерно так:

 $Params = @{
    Name                  = "John Travolta"
    GivenName             = "John"
    Surname               = "Travolta"
    UserPrincipalName     = "JohnT"
    DisplayName           = "John Travolta"
    AccountPassword       = (Read-Host -AsSecureString "Input User Password")
    ChangePasswordAtLogon = $True
    Company               = "CLASS"
    Title                 = "Actor"
    State                 = "ON"
    City                  = "Kitchener"
    Description           = "Bold dude from face off"
    EmployeeNumber        = "4"
    Department            = "Paramount Cinema"
    Country               = "CA"
    PostalCode            = "N2B G5T"
    SamAccountName        = "JohnT"
    MobilePhone           = "519-7218652"
    Enabled               = $True
    Path                  = "OU=paramount cinema,DC=class,DC=com"
}

New-ADUser @Params
 

Кроме того, вам не нужно перемещать пользователя по факту. Просто используйте -Path параметр в New-ADUser команде. Создайте его именно там, где вы хотите, чтобы он был.