尝试将两个变量结果从Active Directory输出到PowerShell,并在.csv文件的一行中设置格式,并将每个返回的变量放在单独的单元格中。输入文件包含四个AD组的名称。任务是计算每个组中的用户并返回用户总数。
目标是写入.csv文件,以将输出格式设置为一个单元格中的广告组名称,并在右侧的下一个单元格中计数用户。
这是一个简单的脚本,通过读取文件并将结果返回到屏幕来构建。尝试使用Export-Csv写入文件,但未成功。添加内容是最成功的技术。
以下代码部分起作用,但是广告组名称和用户数被写入.csv文件中的同一单元格中。较早的尝试在一行上写了AD组名称,在下一行上写了用户总数。
ith
第一个结果(少量的组可以接受,但是对于大量的组则需要更可靠的解决方案。): 广告组名称一 357 广告组名称二 223 广告组名称三 155 广告组名称四 71
第二个结果(返回变量的两个值都在一个单元格中): 广告组名称一357 广告组名称2 223 广告组名称三155 广告组名称四个71
目标是写入.csv文件,以将输出格式设置为一个单元格中的广告组名称,并在右侧的下一个单元格中计数用户。
答案 0 :(得分:2)
我假设您的变量$groupfile
是Import-Csv
命令的结果。
如果我对问题的理解正确,则可以执行以下操作:
# loop through the $groupfile rows and collect the results as objects
$result = $groupfile | ForEach-Object {
$groupName = $_.adgroupname.Trim()
[PSCustomObject]@{
'GroupName' = $groupName
'UserCount' = @(Get-ADGroupMember -Identity $groupName).Count
}
}
# display on screen
$result | Format-Table -AutoSize
# export to csv
$result | Export-Csv -Path $filepath -NoTypeInformation -Force
应该输出CSV,例如
"GroupName","UserCount" "ad group name one","357" "ad group name two","223" "ad group name three","155" "ad group name four","71"
注意:Get-ADGroupMember
可以返回user
,group
和computer
类型的对象,因此可以将add的第二列命名为ObjectCount
Where-Object {$_.objectClass -eq 'user'}
函数的Get-ADGroupMember
子句仅过滤用户对象
希望有帮助