我正在尝试做2件事情。
我可以使用以下方法成功获取所需的用户或计算机列表:
get-aduser -filter * -SearchBase "ou=Users,ou=xx,ou=xx,dc=xx,dc=local" | FT SamAccountName
和
Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=xx,ou=xx,dc=xx,dc=local" | FT Name
这些会产生我需要的确切详细信息,分别是用户名和主机名。
我可以使用以下方式将群组添加到我的用户名中:
Add-ADGroupMember -Identity "%GROUPNAME%" -Members MyUsername
由于出现错误,我无法将组添加到计算机:
Add-ADGroupMember:在“ DC = XX,DC = LOCAL”下找不到标识为“ COMPUTERNAME”的对象。在第1行:char:1
我什至尝试通过使用以下方法来变得聪明:
$Comps=Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=XX,ou=XX,dc=XX,dc=local" | FT Name
Add-ADGroupMember -identity $Comps -MemberOf '%GROUPNAME%'
但这只是失败。
尝试与用户相似:
$Userlist=get-aduser -filter * -SearchBase "ou=XX,ou=XX,ou=XX,ou=XX,dc=XX,dc=local" | FT SamAccountName
$Results = $Userlist | ForEach-Object {
Add-ADGroupMember -identity %GROUPNAME% -members $_
}
错误:
Add-ADGroupMember:无法绑定参数“ Members”。无法转换 类型的“ Microsoft.PowerShell.Commands.Internal.Format.FormatStartData”值 键入“ Microsoft.PowerShell.Commands.Internal.Format.FormatStartData” “ Microsoft.ActiveDirectory.Management.ADPrincipal”。
在第4行:char:105
- ...%GROUPNAME%-成员$ _
- ~~
- CategoryInfo:InvalidArgument:(:) [Add-ADGroupMember],ParameterBindingException
- FullyQualifiedErrorId:
CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
由于我复制并粘贴了许多示例并尝试进行清理,因此OU语句的位置是正确的。
目前,我不知道应该使用add-adgroupmember
还是add-adprinciplegroupmembership
,而且我发现自己在某个地方犯了基本错误。
我很高兴可以将主机名或用户名输出到txt并从其中导入,但这似乎是不必要的步骤。
请帮助!
答案 0 :(得分:2)
似乎您不必要地使用了FT
。通常,您应该返回ADConputer,ADUser或任何其他ADObject,但是使用Format-Table
可以将对象转换为Microsoft.PowerShell.Commands.Internal.Format
的实例,该实例基本上是一个表,在您的情况下不可用。
答案 1 :(得分:1)
我会使用Add-ADPrincipalGroupMember
,因为它接受要添加到组中的对象
Get-ADUser -Filter -SearchBase "ou=Users,ou=xx,ou=xx,dc=xx,dc=local" |
Add-ADPrincipalGroupMembership -MemberOf Group_Name
或添加计算机:
Get-ADComputer -LDAPFilter "(name=compu*)" -searchbase "ou=xx,ou=xx,dc=xx,dc=local" |
Add-ADPrincipalGroupMembership -MemberOf Group_Name
另外,在处理结果之前不要格式化结果。充其量讲,它会产生更多的工作,而最坏的情况下,它会破坏工作。让我们知道您的情况:) 注意:我还没有测试过