user2654059
user2654059

Reputation: 13

Changing the Export-CSV output output format

I am working on a PowerShell script that will output a list od system admins to a CSV file using the Export-Csv command. The portion of the script that gets the data is:

Foreach ($Computer in $Computers){
  $Online = Test-Connection -ComputerName $Computer -Quiet
  if ($Online -eq "True"){
    $GroupName = Get-WmiObject win32_group -ComputerName $Computer | ? {$_.SID -eq 'S-1-5-32-544'} | Select-Object name -ExpandProperty name
    $LocalGroup =[ADSI]"WinNT://$Computer/$GroupName"
    $GroupMembers = @($LocalGroup.psbase.Invoke("Members"))
    $Members = $GroupMembers | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
    foreach ($Member in $Members){
      $obj = New-Object System.Object
      $obj | Add-Member -MemberType NoteProperty -Name "Computer" -Value $Computer
      $obj | Add-Member -MemberType NoteProperty -Name "AdminGroupMembers" -Value $Member
      $obj
    }
  }
}

}

Get-Admins | Export-Csv -NoTypeInformation c:\scripts\adm.csv -Encoding UTF8

The current output is formatted looks like this:

"Computer1", "Admin1"
"Computer1", "Admin2"
"Computer1", "Admin3"
"Computer1", "Admin4"
"Computer2", "Admin1"
"Computer2", "Admin2"
"Computer3", "Admin1"

I am trying to get the output to look like this:

"Computer1", "Admin1" , "Admin2" , "Admin3" , "Admin4"
"Computer2", "Admin1" , "Admin2"  
"Computer3", "Admin1" , "Admin2" , "Admin3"

Any Ideas?

Upvotes: 0

Views: 849

Answers (1)

Ansgar Wiechers
Ansgar Wiechers

Reputation: 200483

Your output format is not CSV, so Export-Csv is not a suitable tool for you. Try this instead:

Get-Admins | group { $_.Computer } | % {
  '{0},{1}' -f @($_.Group.Computer)[0], ($_.Group.AdminGroupMembers -join ',')
} | Out-File 'output.csv'

For PowerShell v2 you'll need to manually expand the group properties:

Get-Admins | group { $_.Computer } | % {
  $computer = @($_.Group | select -Expand Computer)[0]
  $admins   = ($_.Group | select -Expand AdminGroupMembers) -join ','
  '{0},{1}' -f $computer, $admins
} | Out-File 'output.csv'

Upvotes: 1

Related Questions