2017-10-15 3 views
0

Ich versuche Import-Csv "Newusers.csv", die ein Export von einem Lohnsystem ist. Ich muss dies in Active Directory importieren und muss die Spalte physicalDeliveryOfficeName in der CSV-Datei für jeden Benutzer aktualisieren.Ersetzen Sie Text in CSV von Hash-Tabelle

Momentan der Export von den Benutzern des Abrechnungssystems einen Code für den Sitename. Ich muss diesen Code durch den Site-Namen ersetzen. Ich habe eine Hashtabelle mit dem Site-Code = Site-Name. Ich habe über 100 Standorte.

$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' 
} 

Antwort

2

Ich habe mehr als 100 Standorte

In diesem Fall, dass Sie auf jeden Fall auf dem richtigen Weg sind.

den Standortcode Wert als Schlüssel verwenden, wenn die Hash-Tabelle zugreifen:

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

Danke für die schnelle Antwort. Wenn ich nur die CSV-Datei aktualisieren muss (wie dies auch für ein anderes System verwendet werden soll), muss ich den Befehl anstelle von set-aduser verwenden, um den csv zu aktualisieren. – Lee

+0

Verwenden Sie den '-Append' Parameter:' Export- Csv -Append -Pfad "C: \ xxxxx \ File.csv" ' – Manu

+0

@Manu Funktioniert nicht so. –

1

Um die Standortcodes mit Site-Namen in Ihrer CSV-Import der CSV zu ersetzen, ändern Sie die Spalte, exportieren die Daten dann an eine Rück CSV. Es gibt mehrere Möglichkeiten, wie Sie sich diesem annähern können, z. durch die gesamte Spalte ersetzt Select-Object mit einem calculated property Verwendung:

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

oder indem einfach die Werte in der Spalte in einer Schleife zu ändern:

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