【问题标题】:Set-ADGroup : An invalid dn syntax has been specifiedSet-ADGroup : 指定了无效的 dn 语法
【发布时间】:2020-12-03 21:35:00
【问题描述】:
Set-ADGroup -Identity "St.Department.146" -Replace @{"msExchRequireAuthToSendTo"=$true} -verbose

输入命令时出错。 :(

Set-ADGroup : 在 line:1 char:1 处指定了无效的 dn 语法

  • Set-ADGroup $InternalDistro -Replace @{msExchRequireAuthToSendTo = $T ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • CategoryInfo : InvalidArgument: (CN=St.Departmen...ublethink,DC=me:ADGroup) [Set-ADGroup], ArgumentExce 选项
    • FullyQualifiedErrorId:ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm ands.SetADGroup

【问题讨论】:

  • 请添加您看到的任何错误消息。 “发生错误”并没有真正的帮助。
  • 我无法复制该问题。你的哈希表和-add在同一行吗?
  • 是的,它在同一行。
  • 您的错误显示 -replace 但您发布的命令显示 -add。
  • 此外,您发布的命令包含一个 CN 或更确切地说是 SAMAccountName,而异常报告看到一个完整的 DN 包含在括号中。您的基础设施周围有些问题,我说您需要跟踪您的变量,可能您更改了分配给某处 var 的对象类型。

标签: powershell active-directory


【解决方案1】:

来自错误

指定了无效的 dn 语法

很明显,错误是由于身份参数而发生的。

你可以试试下面的:

  Set-ADGroup -Identity "CN=St.Department.146,OU=Mail Group,OU=STKGroup,DC=doublethink,DC=me"  -Replace @{"msExchRequireAuthToSendTo"=$true} -verbose

如果你想避免任何拼写错误,你可以做一个获取组,然后将它传递到下一步:

$InternalDistro = (Get-ADGroup -filter 'name -eq "St.Department.146"')
Write-Host $InternalDistro[0].DistinguishedName
Set-ADGroup -Identity $InternalDistro[0].DistinguishedName  -Replace @{"msExchRequireAuthToSendTo"=$true} -verbose

确保屏幕中有所需 DN 的输出。

【讨论】:

  • 第一个命令集-ADGroup : 未找到目录对象在第 1 行字符:1 + 集-ADGroup -Identity "CN=St.Department.146,OU=Mail Group,OU=STKGroup .. . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (CN=St.Departmen...ublethink,DC=me:ADGroup) [Set-ADGroup], ADIdentityNot FoundException + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.SetADGroup
  • 第二个命令集-ADGroup:无法验证参数“身份”的参数。参数为空。为参数提供一个有效值,然后再次尝试运行该命令。在 line:1 char:23 + Set-ADGroup -Identity $InternalDistro[0].DistinguishedName -Replace ... + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Set-ADGroup], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADGrou p
  • 奇怪!该错误表明该组在目录中不存在!我们确定我们得到了正确的 DN 或正确的组名吗?
  • 我正常得到 DistinguishedName : CN=St.Department.146,OU=Mail Group,OU=STK Group,DC=doublethink,DC=me GroupCategory : Security GroupScope : Universal Name : St.Department .146 ObjectClass:组 ObjectGUID:a2c65e1f-d731-478f-aa86-2b31cbe175cf SamAccountName:St.Department.146
【解决方案2】:

为避免Identity 参数中的错误,请尝试使用Get-ADGroup 将组查找为对象。如果成功,将组对象通过管道传递给Set-ADGroup
Get-ADGroup 返回具有默认属性DistinguishedNameGroupCategoryGroupScopeNameObjectClassObjectGUIDSamAccountNameSID 的对象

# try and find the group with that name. 
# Use double-quotes around the filter and single-quotes around the name itself.
$groupName = 'St.Department.146'
# instead of property Name, you can also try property DisplayName here
$group = Get-ADGroup -Filter "Name -eq '$groupName'" -ErrorAction SilentlyContinue
if ($group) {
    $group | Set-ADGroup -Replace @{msExchRequireAuthToSendTo = $true} -Verbose
}
else {
    Write-Warning "A group with name '$groupName' does not exist"
}

在这种情况下,很可能是组的名称与其 DisplayName 不同。在上面的代码中,如果您看到该组不存在的警告消息,请将
-Filter "Name -eq '$groupName'" 更改为-Filter "DisplayName -eq '$groupName'" 并尝试。

【讨论】:

  • @권양환 好吧,我的朋友,你对那个组有一个严重的问题。在 AD 名称和 DN 中使用点和空格总是一个坏主意,这些字符需要转义带反斜杠。使用Get-ADGroup -Identity 'CN=St\.Department\.146,OU=Mail\ Group,OU=STK\ Group,DC=doublethink,DC=me'Get-ADGroup -Identity ' a2c65e1f-d731-478f-aa86-2b31cbe175cf' 看看你会得到什么。如果这也不起作用,您可能必须重新创建该组,这次省略有问题的字符..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 2014-12-08
  • 2023-02-17
相关资源
最近更新 更多