powershell - 有没有更好的方法来获取给定 AD 组 ObjectGUID 列表的 AD 组成员?
问题描述
我有一个存储在 CSV 中的 ObjectGUID(其中 49 个)列表,我正在输出一个 CSV,其中包含这些组的所有成员的列表,格式如下:“姓氏,名字”,“AD 组名称”我让它工作(大部分时间;有时我从 Add-Content cmdlt 收到 IOException 错误),但它非常慢(8000 名成员大约需要 30 分钟)。我对 Powershell 没有很多经验,但我觉得有更好/更有效的方法来做到这一点。关于如何提高效率的任何想法?
注意:我使用“-Server”开关,因为我实际上必须跨几个不同的域运行这个脚本,所以我粘贴的代码在我的原始代码中重复了两次,使用不同的 CSV 输入,并且传递了不同的域到“-Server”开关。
#read in CSV of ObjectGUIDs
$guids = Import-CSV .\ObjectGUIDs.csv
#loop through each AD group
foreach($group in $guids) {
$group_name = Get-ADObject -identity $group.objectGUID -server myDomain
$group_name = $group_name.Name
#get list of users in current group
$users = get-adgroupmember -server myDomain -identity
$group.ObjectGUID | where {$_.objectclass -eq 'user'}
#loop through each user of the current group
foreach ($user in $users) {
#get display name of current user
$display_name = get-aduser -identity $user.objectGUID -server
myDomain -properties DisplayName
#build the current row
$row = ('"' + $display_name.DisplayName + '"' + ',' + '"' +
$group_name + '"')
add-content -path "C:\Path\to\output.csv" -value $row
}
}
正如我上面所说,这通常有效,但需要很长时间。
解决方案
在 a 中收集数据[PSCustomObject]
并Export-Csv
只使用一次应该更有效。
## Q:\Test\2018\12\27\SO_53946702.ps1
$guids = Import-CSV .\ObjectGUIDs.csv
$CsvFile = "C:\Path\to\output.csv"
$Server = myDomain
$CsvData = foreach($group in $guids) {
$GroupName = (Get-ADObject -identity $group.objectGUID -server $Server).Name
#get list of users in current group
$users = Get-ADgroupMember -Server $Server -Identity $group.ObjectGUID |
Where-Object ObjectClass -eq 'user'
foreach ($user in $users) {
[PSCustomObject]@{
DisplayName = (Get-ADuser -Identity $user.objectGUID -server $Server -Properties DisplayName).DisplayName
GroupName = $GroupName
}
}
}
$CsvData | Export-Csv $CsvFile -NoTypeInformation
推荐阅读
- c++ - 套接字接受无效参数(c++)
- ms-access - 访问 VBA:通过函数设置 ComboBox 高度
- ios - UICollectionView AutoSizingCells reloadData()上的奇怪跳转/故障
- java - 尝试安装sas软件时出现以下情况
- php - 选择查询的流明时区相关问题
- python - 给定两个“if”语句,如果其中没有一个被执行,则执行一些代码
- python - TypeError:列表索引必须是整数,而不是 str (MAPNIK)
- flutter - 在 Flutter 中推送新页面时,Navigator 堆栈上的页面会重建
- sql - 我可以在 2 个不同的表中但在 Oracle 的相同列上使用相同的索引吗
- python - Pandas 中的 lambda 函数后索引列消失