【发布时间】:2022-01-24 15:45:11
【问题描述】:
我有一个奇怪的场景,我试图使用 PowerShell 填充 .CSV 文件,但它不是传统的 .CSV 文件。我想在一个单元格中有两个包含多个值的列。
所需的 CSV 输出:
Team Name Team Users Team Access
Team 1 User 1 App 1
User 2 App 2
User 3 App 3
Team 2 User 4 App 1
User 5 App 2
User 6 App 3
因此,基本上,对于上述情况,我只想要包含所有这些信息的两行。
当我尝试使用 Export-CSV 并为用户和应用程序定义变量时,我的 CSV 如下所示:
Team Name Team Users Team Access
Team 1 System.Object[] System.Object[]
Team 2 System.Object[] System.Object[]
所以我想知道如何将对象值作为文字值或使用 Add-Content / Add-Member 之类的东西来添加基于 CSV 标头的值?
这是我当前的代码:
$RBAC_Groups = Get-ADGroup -Filter {Name -like "RBAC*"} -SearchBase "DC=example,DC=com"
ForEach ($Group in $RBAC_Groups) {
#Get AD Group Members
$Users = Get-ADGroupMember -Identity $Group.Name
#Get AD Group Member Of
$Membership = Get-ADPrincipalGroupMembership $Group.Name
$Final = New-Object psobject
$Final | Add-Member -MemberType NoteProperty -Name "RBAC Group" -Value $Group.Name
$Final | Add-Member -MemberType NoteProperty -Name "RBAC Users" -Value $Users.Name
$Final | Add-Member -MemberType NoteProperty -Name "RBAC Access" -Value $Membership.Name
$Final | Export-Csv -Path C:\Temp\RBAC_Weekly_Audit.csv -Append -NoTypeInformation
}
谢谢,
【问题讨论】:
-
请在问题中添加您要尝试的内容。
-
您确定要让它看起来像这样吗?正如您所提到的,它不是传统的,并且与 Excel 过滤器不兼容。
-
嗨@iRon,我已将代码添加到问题中,如果这有帮助,请告诉我。
-
@SantiagoSquarzon,是的,这是一个奇怪的问题,但本质上我们想为 RBAC 组、组中的成员以及他们拥有的访问权限审核/创建报告。因此组名永远只有 1 个值,而用户/访问权限将是多个值。
-
老实说,我认为使用(有点)标准化的 CSV 文件会更好。也就是说,生成一个包含六行的文件,其中每一行的第一个字段中明确包含团队名称。您将能够非常轻松地使用 excel、SQL Server 甚至 Poweshell 读取此 CSV。您可以在报告生成时形成多值组。这只是更简单的数据管理。
标签: powershell csv