【问题标题】:Bulk AD Users Creation批量 AD 用户创建
【发布时间】:2015-09-12 16:29:54
【问题描述】:

我正在处理一个 PowerShell 命令,其中我有一个具有特定属性的 .csv 文件,但实际上我一直在完成它。

我的 .csv 文件的属性按以下顺序排列:

  • userPrincipalName
  • sAMAccountName
  • 密码
  • 给定名称
  • sn
  • 显示名称
  • 说明
  • 路径
  • 标题
  • 公司
  • 成员
  • 部门
  • 必须更改密码

我当前的代码是这样的:

$Users = Import-Csv -Path "C:\BulkUsers.csv"            
foreach ($User in $Users)            
{      
    $UPN = $User.userPrincipalName
    $SAM = $User.sAMAccountName
    $Password = $User.password     
    $UserFirstname = $User.givenName            
    $UserLastname = $User.sn 
    $Displayname = $User.givenName + " " + $User.sn  
    $Description = $User.description  
    $Path = $User.Path            
    $Title = $User.title
    $Company = $User.company
    $Group = $User.memberOf
    $Department = $User.department          

    New-ADUser -UserPrincipalName $UPN -SamAccountName $SAM -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -GivenName "$UserFirstname" -Surname "$UserLastname" -DisplayName "$Displayname" -Description "$Description" -Path "$Path" -title "$Title" -company "$Company" -memberOf  "$Group" -department "$Department" -ChangePasswordAtLogon $true
}

执行时出现以下错误:

New-ADUser : A parameter cannot be found that matches parameter name 'memberOf'.
At line:15 char:292
+ ... any "$Company" -memberOf  "$Group" -department "$Department" -ChangePasswordAtLo ...
+                    ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser

【问题讨论】:

  • 您是否删除并重新提出了这个问题?您是否看到 Ansgar 关于最后一个问题的观点。你在这里什么都没问。代码有什么问题?你有错误吗?您需要告诉我们您的问题是什么以及您的预期结果。
  • 是的..对不起,我忘了提到错误代码,我已经编辑了上面的帖子,现在你能帮我吗??
  • 您应该改进您已经提出的问题,而不是删除和重新发布问题。当他们同意投票时简单地删除问题必然会导致question ban迟早。
  • 嗯,感谢您强调这一点。现在,您可以帮助解决上述 memberOf 属性错误,如果我删除它,我的代码可以正常工作?那么错在哪里?
  • 耐心点,小蚱蜢。我已经在努力了。

标签: powershell active-directory powershell-3.0


【解决方案1】:

错误消息非常简单。如果您查看New-ADUser cmdlet 的文档,您会发现它没有参数-memberOf。要将新创建的用户添加到组,请使用 Add-ADGroupMember cmdlet。

$Account = New-ADUser ... -PassThru
Add-ADGroupMember -Identity $Group -Members $Account

这是假设 CSV 中的 memberOf 字段仅包含一个组名或专有名称。

附加参数-PassThru 允许您将创建的帐户对象分配给一个变量,因此您可以在组分配中使用该变量。没有那个参数New-ADUser 会静默运行(没有输出)。

【讨论】:

  • 那么在这种情况下,我将如何在我的代码中实现它?在我的 .csv 文件旁边,一个用户有多个组
  • 那么,您的代码中哪里有New-ADUser 语句?这就是你需要更换的。如果用户有多个组,您需要在循环中为所有组添加Add-ADGroupMember。但是,由于这些组来自单个 CSV 字段,您可能需要拆分该字符串以获得实际列表。
  • 非常感谢...我已经这样做了,它就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
相关资源
最近更新 更多