PowerShell:获取成员所属的所有组,包括组类型

PowerShell:获取成员所属的所有组,包括组类型,powershell,active-directory,Powershell,Active Directory,我有一个脚本,它为我提供了一个组中的所有成员所需的某些信息。我希望使用相同的格式,但用于指定用户名所属的所有组。我需要关于每个组的信息,例如组类型(即安全性、通讯组列表)。我该怎么做?我希望每个组有一个不同的行,列中有关于每个组的信息 Add-PSSnapin Quest.ActiveRoles.ADManagement $myCol = @() ForEach ($Group in (Get-QADGroup "CN=research,OU=Security,OU=Groups,DC=x

我有一个脚本,它为我提供了一个组中的所有成员所需的某些信息。我希望使用相同的格式,但用于指定用户名所属的所有组。我需要关于每个组的信息,例如组类型(即安全性、通讯组列表)。我该怎么做?我希望每个组有一个不同的行,列中有关于每个组的信息

Add-PSSnapin Quest.ActiveRoles.ADManagement

$myCol = @()
  ForEach ($Group in (Get-QADGroup "CN=research,OU=Security,OU=Groups,DC=xxx,DC=com" -GroupType Security))
{
ForEach ($Member in (Get-QADGroupMember $Group -SizeLimit 0))
    { 
    $myObj = "" | Select Group, Type, Member, Email, Username, Department
    $myObj.Group = $Group.Name
    $myObj.Type = $Group.groupType
    $myObj.Member = $Member.Name
    $myObj.Email = $Member.Email
    $myObj.Department = $Member.Department
    $myObj.Username = $Member.sAMAccountName
    $myCol += $myObj
    }
}
 $myCol | Export-Csv -Path "C:\Users\sdevito\Desktop\test.csv" -NoTypeInformation
或者。我发现有一段代码做了一些类似的事情,但每组都在同一行,不同的列中。我不知道如何编辑此代码以使每个组位于新行上

$alist = "Name`tAccountName`tDescription`tEmailAddress`tLastLogonDate`tManager`tTitle`tDepartment`tCompany`twhenCreated`tAcctEnabled`tGroups`n"
$userlist = Get-ADUser sdevito -Properties * | Select-Object -Property Name,SamAccountName,Description,EmailAddress,LastLogonDate,Manager,Title,Department,Company,whenCreated,Enabled,MemberOf | Sort-Object -Property Name
$userlist | ForEach-Object {
$grps = $_.MemberOf | Get-ADGroup | ForEach-Object {$_.Name} | Sort-Object
$arec = $_.Name,$_.SamAccountName,$_.Description,$_.EmailAddress,$_LastLogonDate,$_.Manager,$_.Title,$_.Department,$_.Company,$_.whenCreated,$_.Enabled
$aline = ($arec -join "`t") + "`t" + ($grps -join "`t") + "`n"
$alist += $aline
}
$alist | Out-File C:\Users\sdevito\Desktop\testt.csv

比如说:

#Requires -Version 3.0

Add-PSSnapin Quest.ActiveRoles.ADManagement

function Get-UsersGroups {
    [cmdletbinding()]
    param (
        [Parameter(Position=0,Mandatory)][string]$Identity,
        [Parameter(Position=1)][ValidateSet('all','nested','normal')][string]$MemberType
    )

    $user = Get-QADUser -Identity $Identity

    switch ( $MemberType ) {
        'all' { $groups = $user.AllMemberOf }
        'nested' { $groups = $user.NestedMemberOf }
        default { $groups = $user.MemberOf }
    }

    foreach ( $group in $groups ) {
        $groupinfo = Get-QADGroup -Identity $group
        $props = [ordered]@{
            Group = $groupinfo.Name
            Type = $groupinfo.GroupType
            Member = $user.Name
            Email = $user.Email
            Department = $user.Department
            Username = $user.sAMAccountName
        }
        $obj = New-Object -TypeName PSObject -Property $props
        $obj
    }
}

Get-UsersGroups -Identity bob | Export-Csv -Path "C:\Users\sdevito\Desktop\test.csv" -NoTypeInformation

我在尝试运行时遇到这些错误。这可能是我的版本吗?另外,在哪里输入特定用户名<代码>命名参数后缺少“=”运算符。在第8行,字符:40在“,”之后缺少表达式。在第8行,函数声明中缺少30个函数体。在第32行char:2中,我只是将代码复制并粘贴回powershell,以确保我第一次没有oops某些东西,并且它继续为我工作,但我认为它至少需要版本3。我会仔细看看,确保在复制/粘贴过程中没有丢失什么东西。在最后一行中,我们实际调用Get UsersGroups函数,-Identity参数后面的“bob”是用户名。我更新到3.0,它工作得非常好!我非常感激!既然你在这方面很有帮助,你知道有没有一种方法可以使用多个用户名?就像导入一个用户ID列表,然后导出一个包含所有用户组的csv文件一样?因为它是作为函数编写的,所以这很容易做到。在最后一行(这是调用函数的部分),假设您在一个数组中获取用户ID(我们称之为$userarray),您可以执行如下操作:
Foreach($userarray中的用户){get UsersGroups-Identity$user}| Export Csv-Path“C:\Users\sdevito\Desktop\test.Csv”-NoTypeInformation