在csv powershell中仅显示一次用户名

wrrgggsh  于 2022-12-15  发布在  Shell
关注(0)|答案(1)|浏览(126)

我有下面的代码,这是给我的名单,广告组的一个特定的用户是一部分

Get-Content "C:\Automation Scripts\users.txt" | Get-ADUser | ForEach{
    $user = $_
    $groups = Get-ADPrincipalGroupMembership $user
    $groups | %{ New-Object PSObject -Property @{ User = $user.SamAccountName; Group = $_.SamAccountName } }
} | Export-Csv "C:\Automation Scripts\User_Groups.csv" -NoTypeInformation

这是工作正常,我得到的结果,但结果是来像下面

"User","Group"
"A92M7202822","Domain Users"
"A92M7202822","A92GS-505-Central Team Data"
"A92M7202822","A00GRP-AdminAccounts"
"A92A7803642","Protected Users"
"A92A7803642","A00GRP-AdminAccounts"

我需要的csv格式的结果如下

User,Group
A92M7202822,"Domain Users
A92GS-505-Central Team Data
A00GRP-AdminAccounts
A92GS-505-Ids-Analytics-Share-A92DFS
A92GS-505-Data-DSICF-DEV
A92GS-505-Data-DSICF-PRD
CFRGRP-FS-FR4000_SSgt_CFIDS_RW"
A92A7803642,"Domain Users
Protected Users
A00GRP-AdminAccounts"

一个单元格用于用户,下一个单元格应包含所有组。
请让我知道对此需要做哪些更改

polkgigr

polkgigr1#

尽量不要使用New-Object,您可以使用PSCustomobject。另外,在脚本中,您使用$user.samaccountname作为用户和组的值。我用名称替换了组名称值,您可以修改它。

$output = @()
$output += Get-Content "C:\Automation Scripts\users.txt" | Get-ADUser | ForEach{
    $user = $_
    $groups = Get-ADPrincipalGroupMembership $user
    [PSCustomObject]@{
    'User'= $user.SamAccountName
    'Group' = $groups.Name
   }    
} 

$output | Export-Csv "C:\Automation Scripts\User_Groups.csv" -NoTypeInformation

另一个有效的方法是:

$users = Get-Content "C:\Automation Scripts\users.txt"
$output = foreach ($user in $users)
{
    $groups = Get-ADPrincipalGroupMembership $user

    foreach($group in $groups)
    {
        [PSCustomObject]@{
            User  = $user
            Group = $group.Name
        }
    }
}
$output | Export-Csv "C:\Automation Scripts\User_Groups.csv"  -NoTypeInformation

相关问题