将用户/计算机的OU添加到安全组

时间:2019-10-10 12:52:56

标签: powershell

我正在尝试做2件事情。

  1. 将OU中的所有用户添加到安全组中
  2. 将OU中的所有计算机添加到安全组中

我可以使用以下方法成功获取所需的用户或计算机列表:

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并从其中导入,但这似乎是不必要的步骤。

请帮助!

2 个答案:

答案 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

另外,在处理结果之前不要格式化结果。充其量讲,它会产生更多的工作,而最坏的情况下,它会破坏工作。让我们知道您的情况:) 注意:我还没有测试过

相关问题