Powershell 批量创建新联系人并添加到发行版
我有一个使用PS和CSV创建批量外部联系人的脚本。我想调整它,不仅创建联系人,而且还将联系人添加到任何指定的发行版Powershell 批量创建新联系人并添加到发行版,powershell,csv,active-directory,Powershell,Csv,Active Directory,我有一个使用PS和CSV创建批量外部联系人的脚本。我想调整它,不仅创建联系人,而且还将联系人添加到任何指定的发行版 foreach($contact in (import-csv c:\users\ME\desktop\contactstest.csv)){ $properties = @{ type = 'Contact' name = $contact.firstname + ", " + $contact.la
foreach($contact in (import-csv c:\users\ME\desktop\contactstest.csv)){
$properties = @{
type = 'Contact'
name = $contact.firstname + ", " + $contact.lastname
OtherAttributes = @{'mail' = "$($contact.email)"}
Path = "OU=External Contacts,DC=Company,DC=org"
}
New-ADObject @properties
}
如果我有以下列的CSV。这可以吗
Firstname/lastname/email/Group
CSV位于DC的桌面上
CSV示例 第一,最后,电子邮件,小组
比利,鲍勃,bb@aol.com,emailist1我现在知道第一次出了什么问题。
我的意思是让你用我的代码块替换新的ADObject@properties行。由于您也将其保留在中,因此代码尝试创建联系人两次,导致出现错误消息并跳过将联系人添加到组中的部分 如果您的CSV如下所示:
first,last,email,group
billy,bob,bb@aol.com,emailist1
jane,doe,jd@somewhereintheworld.com,emaillist1;emaillist5
注:第二个触点添加到两个组中,用分号分隔代码>
以下是完整的代码:
foreach ($contact in (import-csv c:\users\ME\desktop\contactstest.csv)) {
# create a hash table for splatting the parameters to New-ADObject
$properties = @{
type = 'Contact'
name = $contact.firstname + ", " + $contact.lastname
OtherAttributes = @{'mail' = "$($contact.email)"}
Path = "OU=External Contacts,DC=Company,DC=org"
}
# create the contact and capture the resulting object
$newContact = New-ADObject @properties -PassThru -ErrorAction SilentlyContinue
if ($newContact) {
# if success, add this contact to the group(s)
$contact.Group -split ';' | ForEach-Object {
Add-ADGroupMember -Identity $_ -Members $newContact
}
}
else {
Write-Warning "Could not create contact $($contact.lastname)"
}
}
另外,您还可以将PassThru和ErrorAction参数包括到splatting散列中:
$properties = @{
type = 'Contact'
name = $contact.firstname + ", " + $contact.lastname
OtherAttributes = @{'mail' = "$($contact.email)"}
Path = "OU=External Contacts,DC=Company,DC=org"
PassThru = $true
ErrorAction = 'SilentlyContinue'
}
将-PassThru
添加到新的ADObject cmdlet并捕获新创建的联系人。然后在执行这些批量添加时,在的-Members
参数中使用该对象。某些联系人将添加到多个组/并非所有联系人都添加到同一组。如果您的联系人需要加入多个组,请将其添加到csv的组列中,并用类似的字符分隔代码>。然后在该字符的代码拆分中,对每个对象执行一个ForEach Object
循环,将addgroupmember
行作为标识参数。请查看我的编辑,我已将其添加到我的答案中。我刚刚得到一个错误,该对象已经创建(即使我清除CSV并添加一个新联系人,但该联系人在AD中不存在)这会创建新联系人,但不会添加到组中(尽管消息表明它无法创建对象)@someguy2121您输入了所有不同的属性,不是吗(姓名、邮件等)?您的CSV是否使用逗号作为分隔符?(未指定,导入Csv采用逗号)您是在DC上运行此操作吗?如果不是,所有系统可能需要一段时间才能同步,因此您可能要到几分钟后才能看到新对象。我将正在运行的代码放入答案中,因为我的字符已用完。@someguy2121不要将我的答案复制为新答案。.您没有回答我的问题。请编辑您的问题,然后重试ost是csv的前几行。你用斜杠作为分隔符吗?我已经这样做了。