我正在尝试将Get-QADGroup MSproject的搜索结果输出到变量中,然后在每个返回的结果上运行Get-QADGroupMember,并输出所有组中的用户ID数量的计数,如表所示。
我知道我可以导出为CSV然后导入和测量对象,如下所示:
Get-QADGroupMember MSprojectXP > C:\Temp\group2.csv
Get-Content c:\temp\group2.csv | Measure-Object -Line
我的输出是:
Lines Words Characters Property
----- ----- ---------- --------
123
我希望有人可以告诉我使用变量来完成相同功能的最佳方法。
答案 0 :(得分:0)
看起来很简单,我可能不知道你想要什么,但如果我理解正确,这应该有效
$a=(get-qadgroupmember msprojectxp)
$a.count
或
$a=(get-qadgroupmember msprojectxp|select name)
$a.count
它只是相同的答案,但更详细
$ vGroupName = “YourDomainName \ msprojectxp”
$ a =(get-qadgroupmember $ vGroupName -type'user'-direct)
$ a.count
这样你也可以统计所有嵌套成员 除了你有一个数组可以使用,并可以输出你想要的任何东西
答案 1 :(得分:0)
如果您想要计算群组中的成员数量,则根本不需要变量。
(Get-QADGroupMember MSprojectXP).Count
但是,如果您需要成员列表进行其他处理,请将Get-QADGroupMember
的结果存储在变量中:
$MSprojectXPUsers = Get-QADGroupMember MSProjectXP
然后你就可以这样计算:
$MSProjectXPUsers.Count
根据评论/后续问题更新:
add-pssnapin Quest.ActiveRoles.ADManagement;
$TotalUsers = 0;
Get-QADGroup MSProject*|foreach-object{$TotalUsers += (Get-qadgroupmember $_.Name).Count};
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
[System.Windows.Forms.MessageBox]::Show("Total number of users in MSProject* groups`n`n$TotalUsers" , "Results");
我个人的偏好是在使用命令行脚本时不使用消息框,因为它不是控制台环境的“本机”。在这种情况下,单线程就足够了(为了清晰起见,换行符假定已经加载了snapin):
$TotalUsers = 0;Get-QADGroup MSProject*|`
foreach-object{$TotalUsers += (Get-qadgroupmember $_.Name).Count};`
"Total users in MSProject* groups: $TotalUsers";
如果你有AD模块,你也可以在没有Quest Snapin的情况下试用它。:
$TotalUsers = 0;Get-ADGroup -filter {name -like "MSProject*"}|`
foreach-object{$TotalUsers += (Get-ADGroupmember $_.DistinguishedName).Count};`
"Total users in MSProject* groups: $TotalUsers";
这对我不起作用,但这似乎是由于我的某个群组出现问题 - 如果我过滤掉一个问题群组,它就可以了。