2013-08-05 2 views
0

Export-Csv 명령을 사용하여 시스템 관리자 목록을 CSV 파일로 출력하는 PowerShell 스크립트를 작성하고 있습니다. 데이터를 가져 스크립트의 일부는 다음과 같은Export-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" , "Admin2" , "Admin3" , "Admin4" 
"Computer2", "Admin1" , "Admin2" 
"Computer3", "Admin1" , "Admin2" , "Admin3" 
:

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

내가 같이 할 수있는 출력을 얻기 위해 노력하고 있어요

어떤 아이디어?

답변

1

출력 형식이 CSV가 아니므로 Export-Csv은 적합하지 않은 도구입니다. 대신이 시도 : PowerShell 용

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

은 수동으로 그룹 속성을 확장해야합니다 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