2013-08-05 3 views
0

Я работаю над сценарием PowerShell, который выведет системные администраторы списка od в CSV-файл, используя команду Export-Csv. Часть сценария, который получает данные является:Изменение формата выходного файла экспорта-CSV

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 

выходной ток отформатированные выглядит следующим образом:

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

Я пытаюсь получить вывод выглядеть следующим образом:

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

Любые идеи?

ответ

1

Ваш выходной формат не CSV, поэтому Export-Csv не подходит для вас. Попробуйте вместо этого:

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

Для PowerShell v2 вам необходимо вручную расширить групповые свойства:

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' 
+0

Я ценю Ваше предложение, однако файл не выводит в файл CSV, просто не в формате Я бы хотел. Вы предлагаете выше, но не получаете никакой CSV-выход, который является требованием. – user2654059

+0

@ user2654059 Теперь он делает. –

+0

выходной файл имеет 9 строк с запятой в каждой строке, никаких других данных. # Экспортировать данные и давать обратную связь # -------------------------------------- -------------------------------------------------- ----------------- Get-Admins | группа {$ _. Компьютер} | % { '{0}, {1}' -f @ ($ _. Group.Computer) [0], ($ _. Group.AdminGroupMembers -join ',') } | Out-File 'c: \ scripts \ adm.csv' Write-Host "' n Скрипт завершен для онлайн-систем " – user2654059

Смежные вопросы