【问题标题】:Adding Users to AD using New-ADUser and Splatting使用 New-ADUser 和 Splatting 将用户添加到 AD
【发布时间】:2017-05-31 03:30:45
【问题描述】:

我在使用 New-ADUser cmdlet 时遇到了问题。我已经能够使用 splatting 添加所有普通属性,但现在我需要添加扩展属性作为新用户参数的一部分。

我正在创建一个数组,如下所示:

$users = @{ “name” = “fred 
“givenName” = “Manfred" 
“l” = “lexington”
"extensionAttrbute1" = "Test"}

但是当我运行脚本时,它给了我以下错误:“InvalidArgument”, “ParameterBindingException”和“NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser”

实际的异常消息是这样的: “找不到与参数名称 'extensionAttribute1' 匹配的参数” 我实际上可以使用 New-ADUSer 直接添加 extensionAttribute,但作为数组的一部分添加是可能的问题。我需要在数组中以不同的方式对 extensionAttribute 进行前缀吗?

谢谢, 比亚恩

【问题讨论】:

  • 您正在创建一个哈希表。每个键值对必须后跟一个分号,例如$a=@{ key1="value1"; key2="value2" }
  • 很棒的评论。我实际上是在哈希表上使用 .Add 命令来创建单个对象。

标签: powershell active-directory


【解决方案1】:

使用Get-ADUser 获取用户并使用-Properties 参数指定您的extensionAttribute。

之后使用Set-ADUser设置extensionAttribute:

例如

$user = Get-ADUser -Identity $yourIdentity -Properties extensionAttribute1
Set-ADUser –Identity $user -Clear "extensionAttribute1"
Set-ADUser -Identity $user -Add @{ extensionAttribute1 = "your value" }

【讨论】:

  • 这是一个合理的方法。但是,我不能保证我正在与创建用户对象的 DC 对话,因此我可能无法更新用户。
【解决方案2】:

来自New-ADUser 的 TechNet。可以使用OtherAttributes 参数设置与 cmdlet 参数无关的属性值。使用此参数时,请务必在属性名称周围放置单引号,如下例所示。

$users = @{ 
    "name" = “fred 
    "givenName" = “Manfred" 
    "l" = "lexington"
    "OtherAttributes" = @{ 
        'extensionAttrbute1' = "Test"
     }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多