簡體   English   中英

Powershell導出帶有列的CSV

[英]Powershell export csv with columns

我想導出帶有“ ParentGroupName”,“ MemberName”,“ DisplayName”列的csv文件

目前,它將三個數據導出到一列中。

function getGroups{

    $Groups += Get-ADGroup -Filter * -SearchBase "ou=Groups,ou=DCM,ou=NTG,dc=prod,dc=main,dc=ntgov" | Select-Object -ExpandProperty samaccountname

    return $Groups
}

Measure-Command{ 


$Groups = getGroups
write-host "Groups:" $Groups.Count 

}

Measure-Command{



$date = $(get-date).ToString("dd MMM yyyy")
$global:FileName = "Active Directory Group Membership - DCM -" + $date

$stringBuilder = New-Object System.Text.StringBuilder

foreach ($GroupName in $Groups){

        Get-ADGroupMember -Identity $GroupName | Sort-Object $_.SamAccountName | ForEach-Object {
            $ParentGroupName = (Get-ADGroup -Identity $GroupName).SamAccountName 
            $MemberName = $_.SamAccountName # Member of the Group.


            if ($_.ObjectClass -eq 'group') {



                $DisplayName = ' - '

            } elseif ($_.ObjectClass -eq 'user') {


                $a = (Get-ADUser -Identity $MemberName -Properties Displayname)
                $DisplayName = $a.DisplayName 

            }



            $null = $stringBuilder.Append("$ParentGroupName, $MemberName, $DisplayName")


        }
    } 


outputArray = $stringBuilder.ToString()


out-file C:\Users\augut\Desktop\$FileName.csv


outputArray | out-file C:\Users\augut\Desktop\$FileName.csv
}

通過手動構建CSV文件,您為自己感到頭疼。 通過為找到的具有所需記錄屬性的每個項目構造一個自定義對象,然后將其填充到數組中並將該數組導出到CSV文件,可以大大簡化此過程。

function getGroups{
    $Groups += Get-ADGroup -Filter * -SearchBase "ou=Groups,ou=DCM,ou=NTG,dc=prod,dc=main,dc=ntgov" | Select-Object -ExpandProperty samaccountname
    return $Groups
}
$Groups = getGroups
write-host "Groups:" $Groups.Count 

$date = $(get-date).ToString("dd MMM yyyy")
$global:FileName = "Active Directory Group Membership - DCM -" + $date

$results = @();

foreach ($GroupName in $Groups){
        Get-ADGroupMember -Identity $GroupName | Sort-Object $_.SamAccountName | ForEach-Object {
            $ItemProperties = @{
                "ParentGroupName" = (Get-ADGroup -Identity $GroupName).SamAccountName;
                "MemberName" = $_.SamAccountName
            }

            if ($_.ObjectClass -eq 'group') {
                $ItemProperties.Add("DisplayName","-");
            } elseif ($_.ObjectClass -eq 'user') {
                $ItemProperties.Add("DisplayName",(Get-ADUser -Identity $MemberName -Properties DisplayName).DisplayName);
            }
            $MyItem = New-Object -TypeName psobject -property $ItemProperties;
            $Results += $MyItem;
            $ItemProperties = $null;
        }
    } 
$results | export-csv -path "C:\Users\augut\Desktop\$FileName.csv" -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM