2017-10-15 1 views
0

급여 시스템에서 내보내기 인 Import-Csv "Newusers.csv"으로 보내려고합니다. 이 파일을 Active Directory로 가져와 각 사용자의 CSV 파일에서 physicalDeliveryOfficeName 열을 업데이트해야합니다.해시 테이블의 CSV 텍스트 바꾸기

현재 급여 시스템에서 내보내기는 사이트 이름의 코드를 사용합니다. 이 코드를 사이트 이름으로 바꿔야합니다. 사이트 코드 = 사이트 이름이있는 해시 테이블 있습니다. 100 개가 넘는 사이트가 있습니다.

$hashtable = @{ 
    28 = 'Example Site 1' 
    29 = 'Example Site 2' 
    36 = 'Example Site 3' 
    37 = 'Example Site 4' 
    50 = 'Example Site 5' 
    51 = 'Example Site 6' 
    52 = 'Example Site 7' 
    53 = 'Example Site 8' 
} 

답변

2

나는 100 개 이상의 사이트 위치 당신이 옳은 길을 확실히있어이 경우

있습니다.

Import-Csv newusers.csv |ForEach-Object { 
    Set-ADUser -Identity $_.username -replace @{physicalDeliveryOffice=$hashtable[$_.sitecode]} 
} 
+0

덕분 빠른 회신 :

$file = 'C:\path\to\newusers.csv' (Import-Csv $file) | Select-Object *,@{n='SiteName';e={$hashtable[$_.sitecode]}} -Exclude sitecode | Export-Csv $file -NoType 

하거나 루프 열의 값을 변경하여

. 만약 내가 csv 파일을 업데이트 할 필요가 있다면 (이것은 다른 시스템에서도 사용될 것이기 때문에) set-aduser의 inplace를 csv를 업데이트하기 위해 사용할 필요가있는 명령은 무엇입니까? – Lee

+0

'-Append' 매개 변수를 사용하십시오 :'Export- Csv -Append -Path "C : \ xxxxx \ File.csv" – Manu

+0

@Manu 이렇게 작동하지 않습니다. –

1

가 열을 수정 CSV를 가져 귀하의 CSV에서 사이트 이름으로 사이트 코드를 교체 한 후 다시 데이터를 내보내려면 : 해시 테이블에 액세스 할 때

키로 사이트 코드 값을 사용 CSV. 이를 해결할 수있는 몇 가지 방법이 있습니다. calculated property으로 Select-Object를 사용하여 열 전체를 교체해 :

$file = 'C:\path\to\newusers.csv' 
$csv = Import-Csv $file 
foreach ($record in $csv) { 
    $record.sitecode = $hashtable[$_.sitecode] 
} 
$csv | Export-Csv $file -NoType