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