Как правильно указать имя и атрибуты при создании пользователей в AD - PullRequest
0 голосов
/ 04 мая 2018

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

Цель сценария - взять имя и фамилию в качестве обязательных значений и сохранить их в $ FirstNames и $ LastNames. Затем нужно сложить их вместе и создать $ Samaccountname. Затем он передается в цикл ForEach-Object для создания учетной записи пользователя для каждого объекта, предоставленного в $ Samaccountname, с массивом, предоставляющим дополнительные атрибуты для -otherattributes.

Пожалуйста, смотрите ниже мой код:

  Param
    (
    [Parameter(Mandatory=$True)]
    [string[]]$FirstNames
    ,
    [Parameter(Mandatory=$True)]
    [string[]]$LastNames
    )

    #This will create new users with pre-set attributes based on an array.

    Import-Module ActiveDirectory

    $Samaccountnames = $FirstNames+$LastNames

    $OtherAttributes = @{
    City="Sunderland"
    Department="IT"
    Title='1st Line Analyst'
    #This is the 'Office' attribute
    office='Sunderland IT Building'
    Path='OU=Sunderland,OU=North East,OU=Lab Users,DC=*******,DC=***'
    }

    foreach($Samaccountname in $Samaccountnames)
    {
    New-ADUser -name $Samaccountname @OtherAttributes
    }

Это создало пользователей с именами Samaccount из $ firstnames. Также не применяется атрибут фамилии.

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Поскольку имя и фамилия являются обязательными - их количество будет одинаковым. Я бы порекомендовал вам создать новое имя samaccountname для каждого имени в $ FirstNames и добавить его в массив имен samaccountnames.

Param
(
[Parameter(Mandatory=$True)]
[string[]]$FirstNames
,
[Parameter(Mandatory=$True)]
[string[]]$LastNames
)

#This will create new users with pre-set attributes based on an array.

Import-Module ActiveDirectory

$Samaccountnames = @() #define $samaccountnames as an array

#for each name in $firstnames we create new samaccountname and add it to samaccountnames array
foreach ($item in (0..$Firstnames.count)) #
    {
$samaccountnames += $firstnames[$item]+$lastnames[$item] 
    }

$attributes = @{
'City'       = 'Sunderland'
'Department' = 'IT'
'Title'      = '1st Line Analyst'
'Office'     = 'Sunderland IT Building'
'Path'       = 'OU=Sunderland,OU=North East,OU=Lab Users,DC=*,DC=*'}

foreach($Samaccountname in $Samaccountnames)
{
New-ADUser -name $Samaccountname @OtherAttributes
}
0 голосов
/ 04 мая 2018

Проблема в том, что вы берете два массива и пытаетесь добавить их друг к другу. Было бы больше смысла просто взять то, что вы хотите: SamAccountName.

param(
    [Parameter(Position = 0, Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    [string[]]
    $SamAccountName
)
Import-Module -Name ActiveDirectory

$attributes = @{
    'City'       = 'Sunderland'
    'Department' = 'IT'
    'Title'      = '1st Line Analyst'
    'Office'     = 'Sunderland IT Building'
    'Path'       = 'OU=Sunderland,OU=North East,OU=Lab Users,DC=*,DC=*'
}

foreach ($Name in $SamAccountName) {
    New-ADUser -Name $Name @attributes
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...