广告组和广告用户
ADGroups AND ADusers
我需要将以下内容放入 CSV 文件中:
具有以下字段的组: 组名称、组 SID、组电子邮件地址、组类型
然后对于上述每个组,我需要具有以下字段的成员用户:组名(我知道这是重复)、用户 ID、用户名字、用户姓氏、用户电子邮件。
如果有人对此有解决方案,我将永远感激不已。解决方案将是我可以学习和学习的东西,再次感谢。
我分别有两件,但卡在了那一点
Get-ADGroup -Filter * -Properties Member |
select Name, DistinguishedName, sid, GroupCategory, GroupScope,
@{Name="Members";Expression={($_.Members | Measure-Object).Count}} |
Out-GridView
#Export-Csv c:\rmm-mgmt\test.csv
我不明白为什么不能只添加用户详细信息。
对于我正在使用的用户:
Get-ADUser -Filter * -Properties * |
Select-Object name, surname, givenname, displayname, emailaddress |
Out-GridView
(在我开始导出之前使用 Out-GridView
检查结果)
如您所见,这是两条我能得到但无法将它们放在一起的信息。一个例子是我无法获取组中的成员列表。
您必须使用 ForEach-Object
并将组分配给命名变量,以便您可以在格式化每个成员的地方访问它。然后通过管道 $_.Member
进入 Get-ADUser
:
Get-ADGroup -Filter * -Properties Member | ForEach-Object {
$group = $_
$_.Member | Get-ADUser -Properties Surname,GivenName,DisplayName,EmailAddress |
Select @{N = "Group Name";E = {$group.Name}}, Surname, GivenName, DisplayName, EmailAddress
} | Out-GridView
我不太清楚您正在寻找的确切输出格式,但我相信这样的东西应该适用于您尝试做的事情。
# Create an empty array we will add our custom objects to.
$outputObjs = @()
# Get all the AD groups.
$groups = Get-ADGroup -Filter * -Properties Member |
select Name, DistinguishedName, sid, GroupCategory, GroupScope |
select -First 40
# Iterate the groups capturing the members of each group.
foreach ($group in $groups) {
$groupMembers = Get-ADGroupMember -Identity $group.Name |
? { $_.objectClass -eq "user" } |
% { Get-ADUser $_.SamAccountName } |
select name, surname, givenname, displayname, emailaddress
# Get the group member count
$memCount = 0
if ($groupMembers) { $memCount = $groupMembers.Count; }
else { $memCount = 0 }
# Iterate through the group members creating a custom object and adding it to our object array.
foreach($member in $groupMembers) {
$outputObjs += New-Object -TypeName psobject -Property (@{
'Group Name' = $group.Name;
'Group DN' = $group.DistinguishedName;
'Group SID' = $group.SID;
'Group Category' = $group.GroupCategory;
'Group Scope' = $group.GroupScope;
'Group Member Count' = $memCount
'User Name' = $member.name;
'User Surname' = $member.surname;
'User Given Name' = $member.givenname;
'User Display Name' = $member.displayname;
'User Email Address' = $member.emailaddress
})
}
}
# Convert the object array to a CSV.
$outputObjs | ConvertTo-Csv -NoTypeInformation
你的 CSV 应该是这样的
"Group Name","User Surname","User Given Name","Group Member Count","User Email Address","Group SID","User Name","Group Category","Group DN","User Display Name","Group Scope"
我需要将以下内容放入 CSV 文件中:
具有以下字段的组: 组名称、组 SID、组电子邮件地址、组类型
然后对于上述每个组,我需要具有以下字段的成员用户:组名(我知道这是重复)、用户 ID、用户名字、用户姓氏、用户电子邮件。
如果有人对此有解决方案,我将永远感激不已。解决方案将是我可以学习和学习的东西,再次感谢。
我分别有两件,但卡在了那一点
Get-ADGroup -Filter * -Properties Member |
select Name, DistinguishedName, sid, GroupCategory, GroupScope,
@{Name="Members";Expression={($_.Members | Measure-Object).Count}} |
Out-GridView
#Export-Csv c:\rmm-mgmt\test.csv
我不明白为什么不能只添加用户详细信息。 对于我正在使用的用户:
Get-ADUser -Filter * -Properties * |
Select-Object name, surname, givenname, displayname, emailaddress |
Out-GridView
(在我开始导出之前使用 Out-GridView
检查结果)
如您所见,这是两条我能得到但无法将它们放在一起的信息。一个例子是我无法获取组中的成员列表。
您必须使用 ForEach-Object
并将组分配给命名变量,以便您可以在格式化每个成员的地方访问它。然后通过管道 $_.Member
进入 Get-ADUser
:
Get-ADGroup -Filter * -Properties Member | ForEach-Object {
$group = $_
$_.Member | Get-ADUser -Properties Surname,GivenName,DisplayName,EmailAddress |
Select @{N = "Group Name";E = {$group.Name}}, Surname, GivenName, DisplayName, EmailAddress
} | Out-GridView
我不太清楚您正在寻找的确切输出格式,但我相信这样的东西应该适用于您尝试做的事情。
# Create an empty array we will add our custom objects to.
$outputObjs = @()
# Get all the AD groups.
$groups = Get-ADGroup -Filter * -Properties Member |
select Name, DistinguishedName, sid, GroupCategory, GroupScope |
select -First 40
# Iterate the groups capturing the members of each group.
foreach ($group in $groups) {
$groupMembers = Get-ADGroupMember -Identity $group.Name |
? { $_.objectClass -eq "user" } |
% { Get-ADUser $_.SamAccountName } |
select name, surname, givenname, displayname, emailaddress
# Get the group member count
$memCount = 0
if ($groupMembers) { $memCount = $groupMembers.Count; }
else { $memCount = 0 }
# Iterate through the group members creating a custom object and adding it to our object array.
foreach($member in $groupMembers) {
$outputObjs += New-Object -TypeName psobject -Property (@{
'Group Name' = $group.Name;
'Group DN' = $group.DistinguishedName;
'Group SID' = $group.SID;
'Group Category' = $group.GroupCategory;
'Group Scope' = $group.GroupScope;
'Group Member Count' = $memCount
'User Name' = $member.name;
'User Surname' = $member.surname;
'User Given Name' = $member.givenname;
'User Display Name' = $member.displayname;
'User Email Address' = $member.emailaddress
})
}
}
# Convert the object array to a CSV.
$outputObjs | ConvertTo-Csv -NoTypeInformation
你的 CSV 应该是这样的
"Group Name","User Surname","User Given Name","Group Member Count","User Email Address","Group SID","User Name","Group Category","Group DN","User Display Name","Group Scope"