将搜索结果输出到变量powershell

时间:2013-09-03 22:43:31

标签: powershell powershell-v2.0

我正在尝试将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                                                                        

我希望有人可以告诉我使用变量来完成相同功能的最佳方法。

2 个答案:

答案 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";

这对我不起作用,但这似乎是由于我的某个群组出现问题 - 如果我过滤掉一个问题群组,它就可以了。

相关问题