2017-10-17 5 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의 새 레코드를 나타내므로 각 워크 스테이션을 새 줄에 놓을 수 없습니다. –

관련 문제