2015-04-12 5 views
0

Я пытаюсь экспортировать в csv все диски для каждого компьютера из моего списка. У меня есть компьютеры, сконфигурированные с одним, буксированием древовидных дисков. Теперь, когда я экспортировать результат моего сценария CSV файл, я получаю его в отформатированных в формате списка:Powershell Export-CSV

ComputerName, Disk 
Comp1,  C: 
Comp1,  D: 
Comp2,  C: 
Comp2,  D: 

Я хотел бы знать, если есть возможность экспортировать этот список, но в виде таблицы? Если есть более одного диска в компьютере добавить столбец в таблицу, что-то вроде этого:

ComputerName, Disk1, Disk2... 
Comp1,  C:, D: 
Comp2,  C:, D: 
Comp3,  C: 

Update:

$computers = 'Comp1','Comp2' 

$out_csv [email protected]() 

foreach ($computer in $computers) { 

$disks = Get-WmiObject -Class win32_logicaldisk -ComputerName $computer| select deviceid, volumename 


    foreach ($disk in $disks) { 

     $ou = New-Object -TypeName psobject -Property @{ 

      'Computer' = $computer 
      'drive' = $disk.volumename 
      'ID' = $disk.deviceid 
     } 

     $out_csv += $ou 
    } 
} 


$out_csv | Export-Clixml -Path 'C:\Users\Administrator\disk.csv' 
+1

Ваши желаемые результаты определенно достижимы, но это поможет, если вам опубликовал сценарий, который вы использовали, чтобы помочь нам найти полезный ответ здесь. –

+0

Несомненно, просмотрите обновленное сообщение – kekimian

ответ

0

Гадкий но просто

$computers = 'Comp1','Comp2' 

$out_csv [email protected]() 

$computers | ForEach-Object{ 

    $ou = "$_" 

    Get-WmiObject -Class win32_logicaldisk -ComputerName $_ | ForEach-Object{ $ou += "," + $_.deviceid } 

    $out_csv += $ou 
} 

$out_csv | Out-File 'C:\Users\Administrator\disk.csv' 
0

Используя следующие ДАННЫЕ как c:\temp\comp.csv

ComputerName, Disk 
Comp1,  C: 
Comp1,  D: 
Comp2,  C: 
Comp2,  D: 
Comp3,  C: 
Comp3,  D: 
Comp3,  E: 
Comp4,  C: 

Вы можете использовать:

$comp = Import-Csv C:\temp\comp.txt 
$comp | Group-Object -Property computername | % {$a=$_.name; $_.group | % {$n=0;$d0="";$d1="";$d2=""}{Set-Variable -Name "D$n" -Value $_.disk;$n++}; [pscustomobject]@{ComputerName=$a;d1=$d0;d2=$d1;d3=$d2}} | Export-Csv "c:\temp\comp.csv" 

Это дает:

#TYPE System.Management.Automation.PSCustomObject 
"ComputerName","d1","d2","d3" 
"Comp1","C:","D:","" 
"Comp2","C:","D:","" 
"Comp3","C:","D:","E:" 
"Comp4","C:","","" 

Вы можете адаптировать этот способ управлять выводом из WMI CMDlet

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