2017-10-15 11 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ファイルを更新する必要がある場合(これは別のシステムにも使用されるので)、csvを更新するためにset-aduserの代わりに使う必要があるコマンドは何ですか? – Lee

+0

'-Append'パラメータを使用します:' Export- Csv -Append -Path "C:¥xxxxx¥File.csv" – Manu

+0

@Manuそのようには動作しません。 –

1

CSVをインポートし、列を変更し、バックにデータをエクスポートあなたのCSVでのサイト名とサイトコードを交換しますCSV。これにアプローチするにはいくつかの方法があります。 calculated propertySelect-Objectを使用して列全体を交換することにより:

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