AD Usernamen in CSV Vergleichen mit Attribut sn und gn
Hallo Leute,
es gab hier schon ein ähnliches Problem , was gelöst würde. Hier der Code:
Ich stehe vor einem ähnlichen Problem. Leider komme ich mit SamAccountname nicht weiter. Hab es mal mit "SN" erfolglos probiert. Wenn man Vorname+Nachname Abfragen könnte wäre es perfect für mich. Geht das ?
Hintergrund: Es wurde jahrelang "Pseudo-Accounts" angelegt ( für eine dig. Anwendung ) die nie gepflegt wurden. Das SamAccountname sieht so aus " devobiMmüller ". Zusätzlich kommen noch viele User dazu noch keinen oder eben diesen "Pseudo-Accounts" AD-Account haben. Ich habe von der Perso eine Liste alles Mitarbeiterbeitenden bekommen.
Bitte helft mir.
es gab hier schon ein ähnliches Problem , was gelöst würde. Hier der Code:
Import-Module ActiveDirectory
$Ausgabepfad = "C:\temp\export_final.csv"
$users = Get-ADUser -filter *
$arr=@()
$userCSV = "c:\temp\userlist.csv"
Import-Csv $userCSV -delimiter ';' | Foreach-Object{
$csvuser= $_
if($users | Where-Object {$_.SamAccountName -eq $csvuser.SAMAccountName}) {
$arr += New-Object psobject -Property @{
SamAccountName = $csvuser.SAMAccountName
Status = 'im AD vorhanden'
}
}
else {
$arr += New-Object psobject -Property @{
SamAccountName = $csvuser.SAMAccountName
Status = 'nichtmehr im AD, nur in der Liste'
}
}
}
echo $arr
echo "Start export:"
$arr | export-csv $Ausgabepfad -NoType -Delimiter ';' -Encoding UTF8
Ich stehe vor einem ähnlichen Problem. Leider komme ich mit SamAccountname nicht weiter. Hab es mal mit "SN" erfolglos probiert. Wenn man Vorname+Nachname Abfragen könnte wäre es perfect für mich. Geht das ?
Hintergrund: Es wurde jahrelang "Pseudo-Accounts" angelegt ( für eine dig. Anwendung ) die nie gepflegt wurden. Das SamAccountname sieht so aus " devobiMmüller ". Zusätzlich kommen noch viele User dazu noch keinen oder eben diesen "Pseudo-Accounts" AD-Account haben. Ich habe von der Perso eine Liste alles Mitarbeiterbeitenden bekommen.
Bitte helft mir.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666001
Url: https://administrator.de/forum/ad-usernamen-in-csv-vergleichen-mit-attribut-sn-und-gn-666001.html
Ausgedruckt am: 23.12.2024 um 04:12 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
bitte die Frage nicht falsch verstehen, aber hast du dir das Skript eigentlich mal angeschaut was du hier gepostet hast. In Zeile 4 steht:
Was ist das Ergebnis davon?
Richtig es wird jeder User abgefragt und du erhälst folgende Infos
Was könnte in dieser Auflistung wohl der Vor- bzw. Nachname sein?
Gruß
Doskias
bitte die Frage nicht falsch verstehen, aber hast du dir das Skript eigentlich mal angeschaut was du hier gepostet hast. In Zeile 4 steht:
$users = Get-ADUser -filter *
Was ist das Ergebnis davon?
Richtig es wird jeder User abgefragt und du erhälst folgende Infos
DistinguishedName : CN=Test\, Benutzer,OU=xxxx,DC=xxx,DC=xxx
Enabled : True
GivenName : Benutzer
Name : Test, Benutzer
ObjectClass : user
ObjectGUID : [gelöscht]
SamAccountName : It-Test
SID : S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx
Surname : Test
UserPrincipalName : Test@Domäne.de
Enabled : True
GivenName : Benutzer
Name : Test, Benutzer
ObjectClass : user
ObjectGUID : [gelöscht]
SamAccountName : It-Test
SID : S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx
Surname : Test
UserPrincipalName : Test@Domäne.de
Was könnte in dieser Auflistung wohl der Vor- bzw. Nachname sein?
Gruß
Doskias
Wenn du noch mehr Felder brauchst empfehle ich dir einmal
Dann erhältst du eine alphabetische Auflistung aller AD-Felder des Benutzers. Vielleicht findest du dort ja noch andere Felder, die dir bei der Identifizierung helfen können.
Je nachdem wie eure "PSeudo-Accounts" genutzt wurden, könnte der logonCount oder das LastLogonDate ja weiterhelfen.
Gruß
Doskias
get-aduser [SamAccountName] -Properties *
Je nachdem wie eure "PSeudo-Accounts" genutzt wurden, könnte der logonCount oder das LastLogonDate ja weiterhelfen.
Gruß
Doskias
Und wo ist jetzt dein Problem? Also voran scheitert es?
Mein Vorschlag:
Zeile 1-6 definierst du die Variablen die du im Skript über rauchst (und brauchst )
Zeile 8 löscht die Log-Datei falls eine existiert
Zeile 10 liest deine CSV ein
Zeile 11 bis 20 geht dann Deine Quelldatei Zeilenweise durch und schaut ob ein Benutzer mit der Kombination vor und Nachname vorhanden ist.
Zeile 16 gibt dir das Ergebnis dann als Text aus, wenn der User nicht vorhanden ist.
Zeile 17 (auskommentiert) würde auf eine Bestätigung zum Fortfahren von dir warten.
Zeile 18 Sammelt die fehlenden User
Zeile 21 erzeugt dann aus der Sammlung eine CSV-Datei auf Basis deiner importierten CSV-Datei mit den fehlenden Einträgen
Theoretisch könntest du anstatt die CSV dann händisch abzuarbeiten das Ganze mit new-aduser auch noch automatisieren.
Gruß
Doksias
PS: Und ja ich weiß, die Foreach-Schleife ließe sich auch deutlich kürzer Fassen, aber ich persönlich finde, dass es so wie es hier steht einfacher zu erklären ist.
Nachtrag: Ich habe das ganze direkt in der ISE auf einem DC ausgeführt. Daher komme ich ohne Import-Module ActiveDirectory aus. Das muss ggf. noch ergänzt werden.
Mein Vorschlag:
$fehlende=@()
$userPfad="c:\temp\"
$userCSV="Mappe1.csv"
$user_Log="fehlt.csv"
$CSV_Log= $userPfad+$user_Log
$CSV_Path=$userPfad+$userCSV
if (Test-Path $CSV_Log) {remove-item $CSV_Log -Force}
$Liste=import-csv $CSV_Path -delimiter ';'
foreach ($datensatz in $Liste)
{
$AD_Vorhanden={}
$AD_Vorhanden=Get-ADuser -filter *|? givenname -like $datensatz.vorname | ? surname -like $datensatz.name
# $AD_Vorhanden
if ($AD_Vorhanden.length -eq 0) {write-host $datensatz.vorname $datensatz.name "existiert nicht im AD"
# pause
$fehlende=$fehlende+$datensatz
}
}
$fehlende | export-csv $CSV_Log -NoType -Delimiter ';' -Encoding UTF8
Zeile 1-6 definierst du die Variablen die du im Skript über rauchst (und brauchst )
Zeile 8 löscht die Log-Datei falls eine existiert
Zeile 10 liest deine CSV ein
Zeile 11 bis 20 geht dann Deine Quelldatei Zeilenweise durch und schaut ob ein Benutzer mit der Kombination vor und Nachname vorhanden ist.
Zeile 16 gibt dir das Ergebnis dann als Text aus, wenn der User nicht vorhanden ist.
Zeile 17 (auskommentiert) würde auf eine Bestätigung zum Fortfahren von dir warten.
Zeile 18 Sammelt die fehlenden User
Zeile 21 erzeugt dann aus der Sammlung eine CSV-Datei auf Basis deiner importierten CSV-Datei mit den fehlenden Einträgen
Theoretisch könntest du anstatt die CSV dann händisch abzuarbeiten das Ganze mit new-aduser auch noch automatisieren.
Gruß
Doksias
PS: Und ja ich weiß, die Foreach-Schleife ließe sich auch deutlich kürzer Fassen, aber ich persönlich finde, dass es so wie es hier steht einfacher zu erklären ist.
Nachtrag: Ich habe das ganze direkt in der ISE auf einem DC ausgeführt. Daher komme ich ohne Import-Module ActiveDirectory aus. Das muss ggf. noch ergänzt werden.