带有Splatting的New-ADUser + OtherAttributes具有可读性

时间:2019-03-22 14:43:47

标签: powershell active-directory

foreach ($Person in $People) {
    $NewUserParams = @{
        Name = $Person.Name
        Server = 'xxxx.com:389'
        Path = 'CN=Users,CN=addressBook,DC=xxxx,DC=com'
        Credential = $Credentials
        givenName = $Person.givenName
        otherAttributes = @{sn=$Person.sn}
    }
    New-ADUser @NewUserParams 
}

我要添加许多其他属性(otherAttributes),这些属性可以在formart New-ADUser -Name XXX -OtherAttributes @ {sn = xxx}中使用。但是,我试图使用splatting来使OtherAttributes以及其他必需的参数更具可读性。我不需要在整个命令中使用splatting,我的目标是分解otherAttributes,因此它不是一个长字符串。想法?

1 个答案:

答案 0 :(得分:0)

otherAttributes的值只是另一个哈希表,并且可以像其他任何哈希表一样包装:

$NewUserParams = @{
    'Name'            = $Person.Name
    'Server'          = 'server.example.com:389'
    'Path'            = 'cn=Users,cn=addressBook,dc=example,dc=com'
    'Credential'      = $Credentials
    'givenName'       = $Person.givenName
    'otherAttributes' = @{
        'sn' = $Person.sn
    }
}

我个人建议将哈希表的键放在引号中,以免引起意外,但至少在上面的示例中这不是必需的。

如果上述方法不适用于您,则需要提供有关您正在运行的代码以及所得到的错误的更多详细信息。在循环内显示生成的哈希表的内容通常有助于对具有特定值的问题进行故障排除。