2

我正在尝试将 Get-QADGroup MSproject 中的搜索结果输出到一个变量中,然后对每个返回的结果运行 Get-QADGroupMember,并输出所有组中组合的用户 ID 的计数,如表所示。

我知道我可以导出到 CSV,然后导入和 Measure-Object,如下所示:

Get-QADGroupMember MSprojectXP > C:\Temp\group2.csv
Get-Content c:\temp\group2.csv | Measure-Object -Line 

我的输出是:

 Lines Words    Characters     Property
 ----- -----    ----------     --------
   123                                                                        

我希望有人能就使用变量完成相同功能的最佳方式向我提供建议。

4

2 回答 2

0

它看起来很简单,我可能不知道你想要什么,但如果我理解正确,这应该可以

$a=(get-qadgroupmember msprojectxp)

$a.count

或者

$a=(get-qadgroupmember msprojectxp|select name)

$a.count

它只是相同的答案,但更详细

$vGroupName="你的域名\msprojectxp"

$a=(get-qadgroupmember $vGroupName -type 'user' -indirect)

$a.count

这样,除了可以使用数组之外,您还可以计算所有嵌套成员,并且可以从中输出您想要的任何内容

于 2013-09-04T00:08:49.053 回答
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");

我个人的偏好是在使用命令行脚本时不使用消息框,因为它不是控制台环境的“原生”。在这种情况下,单行就足够了(为清楚起见,换行符假设已加载管理单元):

$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";

这对我不起作用,但这似乎是由于我的一个小组出现问题 - 如果我过滤掉那个问题组,它工作正常。

于 2013-09-04T00:10:37.850 回答