【发布时间】:2023-02-25 01:54:32
【问题描述】:
我有这个脚本来创建新的联系人,但这次导入时出现错误,提示“为一个只能有一个值的属性指定了多个值。”虽然我理解错误,但我没有解决方案来确定给我带来问题的属性。我试图查看 XML 文件,但它很长,而且我没有看到每个属性有多个值。有人可以帮忙吗?
# ...
Import-Module ActiveDirectory
$import = Import-Clixml ""
$potentialAttributes = @(
'givenName'
'sn'
'mail'
'displayName'
'cn'
'co'
'company'
'l'
'mailNickname'
'telephoneNumber'
'st'
'streetAddress'
'postalcode'
'physicalDeliveryOfficeName'
'mobile'
'department'
'title'
'targetaddress'
'proxyAddresses'
)
foreach($contact in $import){
$newContact=@{
path = "OU=Contacts,DC=A"
type = "Contact"
Name = $contact.name
OtherAttributes = @{}
}
foreach($attributeName in $potentialAttributes){
if(-not [string]::IsNullOrEmpty($contact.$attributeName)){
$newContact['OtherAttributes'][$attributeName] = $contact.$attributeName
}
}
New-ADObject @newContact
}
示例 XML
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="7">
<TN RefId="0" />
<MS>
<S N="name">Person, A (Company)</S>
<S N="proxyAddresses">SMTP:A.person@company.com</S>
<S N="givenName">A</S>
<S N="sn">Person</S>
<S N="mail">A.person@company.com</S>
<S N="displayName">Person, A (Company)</S>
<S N="cn">Person, A</S>
<Nil N="co" />
<S N="company">ABC</S>
<Nil N="l" />
<Nil N="mailnickname" />
<Nil N="telephoneNumber" />
<Nil N="st" />
<Nil N="streetAddress" />
<Nil N="postalcode" />
<Nil N="physicalDeliveryOfficeName" />
<Nil N="mobile" />
<Nil N="department" />
<Nil N="title" />
<Nil N="targetaddress" />
</MS>
</Obj>
</Objs>
【问题讨论】:
-
如果没有,我们无法帮助您审查 XML看到 XML:)
-
我在上面添加了一个示例。
-
您不能将
cn设置为单独的属性,它将派生自对象的名称 -
你是对的。这似乎是解决方案。奇怪,我之前包括了 CN,并且该脚本适用于我的所有其他联系人。
-
DSA 有可能忽略如果名称和 cn 值完全相同 - 但在您发布的示例中情况似乎并非如此。无论如何,最安全的选择是提供正确的名称并跳过
cn:)
标签: powershell