将PowerShell的输出格式化为CSV文件

时间:2019-06-28 18:27:14

标签: powershell active-directory

尝试将两个变量结果从Active Directory输出到PowerShell,并在.csv文件的一行中设置格式,并将每个返回的变量放在单独的单元格中。输入文件包含四个AD组的名称。任务是计算每个组中的用户并返回用户总数。

目标是写入.csv文件,以将输出格式设置为一个单元格中的广告组名称,并在右侧的下一个单元格中计数用户。

这是一个简单的脚本,通过读取文件并将结果返回到屏幕来构建。尝试使用Export-Csv写入文件,但未成功。添加内容是最成功的技术。

以下代码部分起作用,但是广告组名称和用户数被写入.csv文件中的同一单元格中。较早的尝试在一行上写了AD组名称,在下一行上写了用户总数。

ith

第一个结果(少量的组可以接受,但是对于大量的组则需要更可靠的解决方案。): 广告组名称一 357 广告组名称二 223 广告组名称三 155 广告组名称四 71

第二个结果(返回变量的两个值都在一个单元格中): 广告组名称一357 广告组名称2 223 广告组名称三155 广告组名称四个71

目标是写入.csv文件,以将输出格式设置为一个单元格中的广告组名称,并在右侧的下一个单元格中计数用户。

1 个答案:

答案 0 :(得分:2)

我假设您的变量$groupfileImport-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可以返回usergroupcomputer类型的对象,因此可以将add的第二列命名为ObjectCount Where-Object {$_.objectClass -eq 'user'}函数的Get-ADGroupMember子句仅过滤用户对象

希望有帮助