通过get-QADGroup迭代get-QADUser

时间:2014-09-26 17:30:01

标签: powershell

我希望迭代$ user中$ group的每一行。我相信我应该使用一个阵列,但我很难搞清楚它。

以下是我正在尝试做的基础知识。

$group = get-qadgroup -sizelimit 20 | select name

$user = Get-QADuser -memberof $group | %{
  New-Object PSObject -Property @{
    MemberOf = $group
    Name = $_.Name
    FirstName = $_.Firstname
    LastName = $_.Lastname
    AccountIsDisabled = $_.AccountIsDisabled
    DN = $_.DN
  }
}
$user | Select MemberOf, Name, FirstName, LastName, AccountIsDisabled, DN

编辑:非常抱歉,我应该补充一点,我只能使用get-QADGroup和get-QADUser。

1 个答案:

答案 0 :(得分:0)

我认为你有点倒退了。我没有使用Quest cmdlet,但您可以使用标准的ActiveDirectory cmdlet:

$Group = Get-ADGroup <name> -prop Members
$Members = $Group.Members | ForEach{
    $User = Get-ADUser $_
    [PSCustomObject][Ordered]@{
        'First Name' = $User.givenName
        'Last Name' = $User.sn
        'Group' = $Group.Name
        'Account Enabled' = $user.enabled
        'Distinguished Name' = $User.dn
    }
}

然后$ Members将包含您在问题中描述的对象数组。如果您想要的不仅仅是小组,那么,我不确定您为什么会这样,以及您希望如何管理数据。这只是一个巨大的CSV转储,以显示所有用户和他们所属的组或什么?

现在我想起来了,这可能会给团体成员而不是用户带来错误,但我想你可以把它放到try / catch或其他东西来避免问题。

编辑:好的,使用Get-QADUser:

Get-QADUser -ShowProgress -Activity 'Retrieving all domain users' -ProgressThreshold 0 -SizeLimit 0 | ForEach{
    $User = $_
    $User.MemberOf | ForEach{
        [PSCustomObject][Ordered]@{
            'First Name' = $User.givenName
            'Last Name' = $User.sn
            'Group' = $_
            'Account Enabled' = $user.enabled
            'Distinguished Name' = $User.dn
        }
    }
} | Export-CSV "C:\Path\To\AllUsersGroups.csv" -NoType