hainoon
Goto Top

Auslesen und Vergleichen Zweiter CSV Dateien Powershell

Hallo zusammen,
ich arbeite im Moment an einem Script zum auslesen und vergleichen von Usern in der AD.
Das ganze habe ich so gebastelt das mir 2 CSV Dateien erstellt werden, jedoch ist mein Problem das ich beim Vergleichen nicht weiterkomme.
Die Dateien haben beide jeweils nur 1 Spalte.
Die Datei 1 heißt: export2.csv (1 Zeile; Spalte: Name)
Die Datei 2 heißt: export.csv (1 Zeile; Spalte: sAMAccountName)

hier möchte ich einzig und allein das mir ausgegeben wird welcher Eintrag in beiden Dateien vorhanden ist.

Könnt ihr mir helfen ?

Ich habe schon viel ausprobiert aber bekomme immer noch eine leere Datei raus.


Hier mein Code( ich weiß das hier noch einiges überflüssig ist aber ich bin noch ganz neu :D
import-module activedirectory

[String] $folder

Get-ChildItem -Path $folder -recurse | select Name| Select-Object Name | Export-csv U:\export2.csv -Encoding "unicode" -NoTypeInformation -Delimiter ";"  #Verzeichnisse auslesen  


#CSV Liste namen der AD
$liste = Get-ADUser -filter * -properties sAMAccountName | select sAMAccountName, @{Name="Manager";Expression={(get-aduser -id .Manager -prop sAMAccountName).Displayname}}  

$liste | Select-Object sAMAccountName | Export-csv U:\export.csv -encoding "unicode" -NoTypeInformation -Delimiter ";"   
#Liste wird auf U: abgelegt


$export2_csv = Import-CSV 'U:\export2.csv' -delimiter ";"   

$export_csv = Import-CSV 'U:\export.csv' -delimiter ";"   

$csv_out = 'U:\out.csv'   

$host_csv | ?{($ipm_csv | select -Expand sAMAccountName ) -notcontains $_.'sAMAccountName'} | export-csv $csv_out -Delimiter ";" -NoTypeInformation -Encoding Default  

Content-ID: 332737

Url: https://administrator.de/forum/auslesen-und-vergleichen-zweiter-csv-dateien-powershell-332737.html

Ausgedruckt am: 22.12.2024 um 13:12 Uhr

132692
132692 21.03.2017 aktualisiert um 09:42:36 Uhr
Goto Top
Hainoon
Hainoon 21.03.2017 um 10:12:11 Uhr
Goto Top
Hi,
Danke für die schnelle Antwort face-smile

Leider komme ich damit nur ansatzweise weiter.
Im Prinzip ja das was ich will.
Aber die ausgabe welcher Eintrag in beiden Dateien vorhanden ist brauche ich hier in einer weiteren CSV Datei, kannst du da vielleicht ein Beispiel geben was ich hier machen könnte ?

Das hier habe ich versucht aber ich bekomme keine Fehlermeldung aber es passiert auch nix.

Compare U:\export2.csv U:\export.csv -PassThru | ?{$_.SideIndicator -eq "<="} | Export-csv U:\export.csv -encoding "unicode" -NoTypeInformation -Delimiter ";"   
132692
Lösung 132692 21.03.2017 aktualisiert um 11:04:10 Uhr
Goto Top
Kein Wunder, man sollte erst mal die Doku lesen bevor man so einen Schwachfug probiert face-wink
# CSV Datei mit "Name" als Spalte 
$csv1 = Import-CSV 'C:\export1.csv' | select @{n="SamAccountName";e={$_.Name}}  
# CSV Datei mit "SamAccountName" als Spalte 
$csv2 = Import-CSV 'C:\export2.csv' | select SamAccountName  
compare $csv1 $csv2 -Property SamAccountName -IncludeEqual -ExcludeDifferent -passthru | export-csv 'C:\export_final.csv' -NoType -Delimiter ';' -Encoding UTF8  
Hainoon
Hainoon 21.03.2017 aktualisiert um 10:56:36 Uhr
Goto Top
Okay das Hilft mir auf jeden fall weiter zumindest habe ich jetzt etwas in der Datei.

Aber gibt es auch eine Möglichkeit das ich nur die Einträge bekomme die Drin sind ?
Weil so muss man 1.600 Zeilen Durchscrollen und es sind vielleicht 60-100 Doppelte User ?
132692
Lösung 132692 21.03.2017 aktualisiert um 11:44:07 Uhr
Goto Top
Zitat von @Hainoon:
Aber gibt es auch eine Möglichkeit das ich nur die Einträge bekomme die Drin sind ?
?? Wie was drin sind???
Obiges gibt nur die User aus die in beiden Dateien vorhanden sind sagt ja schon der Parameter -IncludeEqual und -ExcludeDifferent.

Hier siehst du es an einem Beispiel(mit Beispieldaten) das es problemlos funktioniert!
$csv1 = @"  
Name
Max Muster
Hans Fröhlich
Elke Musterfrau
"@ | ConvertFrom-CSV | select @{n='SamAccountName';e={$_.Name}}  

$csv2 = @"  
SamAccountName
Hans Fröhlich
Elke Musterfrau
"@ | ConvertFrom-CSV  

compare $csv1 $csv2 -Property SamAccountName -IncludeEqual -ExcludeDifferent -PassThru | select SamAccountName

Ergebnis wie erwartet:
SamAccountName
--------------
Hans Fröhlich
Elke Musterfrau
Hainoon
Hainoon 21.03.2017 um 11:46:12 Uhr
Goto Top
Hi,
Leider habe ich hier wohl einen nicht ganz so kleinen Denkfehler mit reingebracht :D
Dein Script Funktioniert :D ist für mich bestimmt auch in anderen Art und weisen sinnvoll.

Leider nicht in meinem jetzigen vorhaben.

Kurze Erläuterung:
Ich habe ein Verzeichnis in denen sehr viele andere sind die nach dem "SamAccountname" benannt sind.
Nun will ich Prüfen wenn der User bzw. der "SamAccountname" nicht mehr in der AD vorhanden sind.
wenn sie nicht mehr in der AD vorhanden sind brauche ich davon eine csv Datei.

Könnt ihr hier auch weiterhelfen ich hatte gedacht ich kann es mit meinem Aktuellen Script lösen aber irgendwie habe ich eine denkblockade und komme mit dem abgleich er AD nicht zurecht :/

Ich hoffe ich habe es ausreichend und verständlich formuliert.


Vielen vielen Dank für die schnelle Hilfe, ich verzweifle sonst noch :#
132692
Lösung 132692 21.03.2017 aktualisiert um 11:51:31 Uhr
Goto Top
Na dann mach einfach eine Schleife über die User und prüfe mit Get-ADUser ob sie im AD vorhanden sind, fertig:
AD User pflegen anhand einer CSV
irgendwie habe ich eine denkblockade
Sieht definitiv so aus.

Wenns das dann war, bitte noch einen Haken dran.