Powershell Active Directory DisplayName - PullRequest
       0

Powershell Active Directory DisplayName

0 голосов
/ 17 марта 2020

У меня есть скрипт powershell, который создает пользователей активных каталогов на основе файла CSV. Атрибуты определены следующим образом:

    -GivenName $_.FirstName `
    -Surname $_.LastName `
    -SamAccountName $_.UserName `

Я хочу добавить атрибут DisplayName, чтобы объединить $ .FirstName и $ .LastName с пробелом между ними. Я пробовал:

    -DisplayName $_.FirstName + " " + $_.LastName  `

Но вышеописанное не работает, выдает ошибку.

Может кто-нибудь любезно предложить, как я могу определить атрибут DisplayName с именем и фамилией из данных CSV?

Спасибо

1 Ответ

3 голосов
/ 17 марта 2020

Когда PowerShell просматривает аргументы, переданные команде, каждый отдельный токен интерпретируется как отдельный входной аргумент.

Оборачивает конкатенацию строк в подвыражении ($()) чтобы передать его как одну строку:

Set-ADUser ... -DisplayName $($_.FirstName + " " + $_.LastName)

или использовать расширяемую строку:

Set-ADUser ... -DisplayName "$($_.FirstName) $($_.LastName)"

Как Примечания Lee_Dailey , вы можете использовать метод под названием "splatting" для организации аргументов параметров вместо разделения их на несколько строк:

Import-Csv users.csv |ForEach-Object {
    $parameterArgs = @{
        Name = $_.Name
        SamAccountName = $_.UserName
        GivenName = $_.FirstName
        Surname = $_.LastName
        DisplayName = $_.FirstName,$_.LastName -join ' '
    }

    # pass our parameter arguments by "@splatting"
    New-ADUser @parameterArgs
}
...