【问题标题】:Powershell - Populate list of AD users in large security group that are in a particular OUPowershell - 填充特定 OU 中的大型安全组中的 AD 用户列表
【发布时间】:2020-10-07 09:32:15
【问题描述】:

我正在尝试将 AD 安全组缩小到可管理的大小,但由于 Powershell 中的显示限制,这对我来说很难。在删除所有禁用的 AD 帐户后,该组现在已降至 47,720。现在我正在尝试将其过滤到居住在此特定 OU 中的已启用用户。以下是我在控制台中成功使用的内容。

Get-ADGroup "very_large_secgroup" -properties Member | Select-Object -expandproperty member | get-aduser -Filter * -SearchBase "OU=PurgeStudents,OU=DisabledAccounts,DC=contoso,DC=com" | Select-Object SamAccountName,DistinguishedName

当我尝试计算这个,或者通过 Out-File 管道它时,我得到:

get-aduser :输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者输入及其属性与任何参数不匹配 接受管道输入。 在行:1 字符:92 + ... ty 成员 | get-aduser -Filter * -SearchBase "OU=PurgeStudents,OU=Dis ...

任何帮助将不胜感激,因为我是 Powershell 魔法的新手。

【问题讨论】:

  • 您看到此错误的原因是因为您在未使用 -Identity 参数的情况下通过管道传递到 Get-ADUser-Identity 是按值接受管道输入的内容。当您使用-Filter 时,您选择的参数集不包括-Identity
  • 所以因为我已经从已经建立的组成员列表中提取了 get-aduser,所以当我收到控制台输出时并不重要。当我尝试将整个内容导入 csv 时,它开始崩溃?
  • 我不明白你的意思。但是您不能使用语法$listOfUsers | get-aduser -filter * -searchbase OU。如果您将值列表作为输入传递到Get-ADUser,则必须保留-Filter-SearchBase

标签: powershell active-directory


【解决方案1】:

您可以过滤所有以前检索到的用户,而不是使用-Filter *。还有一个获取组成员的cmdlet:

Get-ADGroupMember -Identity "very_large_secgroup" -Recursive | Foreach-Object {Get-ADUser -Filter "Name -like $_.Name" -SearchBase "OU=PurgeStudents,OU=DisabledAccounts,DC=contoso,DC=com" | Select-Object -Properties SamAccountName, DistinguishedName}

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多