2017-10-17 93 views
1

我得到了用戶和工作站的報告。現在,如果用戶有多個工作站,我想爲他的每個工作站分別設置一行。始終使用名稱,名稱,工作站。最後它應該作爲report-new.csv導出。用新行排序csv

CSV:

"Name","Surname","Workstation" 
"John","Doe","PC001,PC005,PC100" 
"Fonzarelli","Arthur","PC234,PC324" 
"Tribbiani","Joey","PC999" 

腳本:

$report = Import-Csv "C:\Scripts\report.csv" 

Foreach ($wst in $report) { 

    If ($wst.Workstation -match ",") { 

     New Line foreach Workstation? Export-Csv "C:\Scripts\report-new.csv" -NoTypeInformation 
    } 
} 

回答

1
$Report | ForEach {ForEach ($ws in ($_.workstation -split ",")) { 
    $_ | Select Name, SurName, @{Name = "Workstation"; Expression = {$ws}}} 
} | Export-Csv "C:\Scripts\report-new.csv" -NoTypeInformation 

結果:

Name  Surname Workstation 
----  ------- ----------- 
John  Doe  PC001 
John  Doe  PC005 
John  Doe  PC100 
Fonzarelli Arthur PC234 
Fonzarelli Arthur PC324 
Tribbiani Joey PC999 
0

可以用逗號分開Workstation屬性,並將其一起使用換行符加入。例如:

$report = Import-Csv "C:\Scripts\report.csv" 

Foreach ($wst in $report) { 

    ($wst.Workstation -split ',') -join [System.Environment]::NewLine 
} 
+0

感謝您的提示馬丁。我只是編輯我的問題。它應該始終具有相同的方案:名稱,名稱,工作站。並在最後出口。 –

+0

如果要將其導出爲CSV,則不能將每個工作站放在新行中,因爲新行代表csv中的新記錄。 –