Kuddel071089 9 Geschrieben 22. Juni 2016 Melden Teilen Geschrieben 22. Juni 2016 (bearbeitet) Hallo zusammen, ich möchte eine CSV Datei mit Usernamen per Powershell durchsuchen, ob der Username in der CSV schon vorhanden ist. Leider habe ich keine Ahnung wie ich das anstelle. Hat jemand einen Tip für mich. Bis jetzt bin ich bis cls Write-Host "Username: " -NoNewline $Username = Read-Host $ImportFile = Import-csv "C:\test.csv" IF($ImportFile -contains $username) {Write-Host "Username vergeben"} else{ Write-Host "Username frei" } Die CSV sieht im Moemnt so aus: samaccountname meyer mueller schulz Leider sagt er immer, dass der Username frei ist, obwohl er in der CSV ist. Danke schoneinmal für die Hilfe +++EDIT+++ Okay, -contains war falsch. Mit -match funktioniert es ^^ bearbeitet 22. Juni 2016 von Kuddel071089 Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 22. Juni 2016 Melden Teilen Geschrieben 22. Juni 2016 Moin, du musst deiner If-Bedingung sagen, dass sie in der Spalte "samaccountname" nachsehen soll. Dann klappt es. Einzige Änderung also: If ($Importfile.samaccountname -contains $username) {Write-Host "Username vergeben"} Gruß, Nils Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 23. Juni 2016 Autor Melden Teilen Geschrieben 23. Juni 2016 (bearbeitet) Okay einen 1:1 Check habe ich jetzt. Für den Anfang nicht schlecht. Kann ich die CSV auch durchsuchen um einen passenden Usernamen zu finden ? Sprich: Suche nach Meyer* Ergebnis: Meyer Meyer-B Meyer-J Somit weiß ich, dass ich zb Meyer-K anlegen kann. Ich weiß nur leider nicht, wie ich die Suche anstoße ##### EDIT ##### Erster Versuch: cls $username = "Meyer" IF(Select-String -Path C:\test.csv -Pattern "$username") { Select-String -Path C:\test.csv -Pattern "$username" } Ergebnis: C:\test.csv:2:meyer C:\test.csv:5:meyer-j Wenn man jetzt irgendwie den Pfad vor dem Namen entfernen könnte, wäre das schon die Lösung bearbeitet 23. Juni 2016 von Kuddel071089 Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 23. Juni 2016 Melden Teilen Geschrieben 23. Juni 2016 Moin, bevor wir uns jetzt von Punkt zu Punkt hangeln, ohne einen Überblick zu haben, wäre es fein, wenn du beschreibst, was denn eigentlich am Ende dein Ziel ist und was die Rahmenbedingungen sind. Gruß, Nils Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 23. Juni 2016 Autor Melden Teilen Geschrieben 23. Juni 2016 Moin, bevor wir uns jetzt von Punkt zu Punkt hangeln, ohne einen Überblick zu haben, wäre es fein, wenn du beschreibst, was denn eigentlich am Ende dein Ziel ist und was die Rahmenbedingungen sind. Gruß, Nils Hallo Nils, ich bin dabei mein Skript zur Einrichtung eines neuen Users zu aktualisieren. Vor der EInrichtung müssen wir immer manuell prüfen, ob der angedachte Username bereits in unserem E-Mail Archiv enthalten ist. Von diesem Archiv habe ich einen Export aller User und muss demetnsprechend prüfen, ob der Username noch nicht verwendet wurde. Danach muss natürlich auch geprüft werden, ob der User evtl. schon im AD existiert, nur aber ohne Mail Adresse und daher nicht im Mail Archiv auftaucht. Es wäre natürlich praktisch, wenn Username "Meyer" z.b. schon vergeben ist, automatisch ein "A" von seinem Vornamen "Andreas" an den Usernamen "Meyer-A" angefügt wird, sofern dieser noch frei ist. Ich weiß nicht wie viel Aufwand das ganze macht. Primär sind für mich diese Schritt: 1. Eingabe angedachter Username 2. Check ob Username in CSV enthalten ist 3. Wenn User enthalten dann suche nach $username* in csv um die vergeben Usernamen anzuzeigen 4. Check ob Username im AD frei ist 5. Wenn nicht frei -> Get-ADUser -Filter {SamAccountName like "$username*"} | Select SamAccountName | FT -HideTableheader Keine AHnung ob ich das ganze ein wenig umständlich machen. Praktisch wäre es aufjeden fall, wenn ich nur eine Liste bekomme, welche Usernamen schon in Verwendung sind. Wenn es nicht ganz so kompliziert ist, soll der Username automatisch ausgewählt werden. Also Username= Nachname bzw. Nachname+BuchstabeVorname Zitieren Link zu diesem Kommentar
daabm 1.348 Geschrieben 23. Juni 2016 Melden Teilen Geschrieben 23. Juni 2016 Es hat sich durchaus bewährt, als Username (=samAccountName) eindeutige Merkmale wie z.B. Personalnummern zu verwenden :) Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 23. Juni 2016 Autor Melden Teilen Geschrieben 23. Juni 2016 Es hat sich durchaus bewährt, als Username (=samAccountName) eindeutige Merkmale wie z.B. Personalnummern zu verwenden :) Das die Verwendung von Personalnummern sinnvoll ist, ist natürich klar. Nur haben wir über 3000 User mit einem anderen SamAccount und die können wir nicht mal eben umstellen ;-) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 24. Juni 2016 Melden Teilen Geschrieben 24. Juni 2016 Bei über 3000 Usern könnte es m.E. durchaus sinnvoll sein, ein entspr. Usermanagement-System zu verwenden statt Scriptgebastel. Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 24. Juni 2016 Melden Teilen Geschrieben 24. Juni 2016 Moin, wenn du den Namen gegen zwei Quellen prüfen musst, würde ich zu Beginn eine gemeinsame Liste aus beiden Quellen erzeugen. Dann musst du nur einmal vergleichen und kannst einfacher eine Routine bauen, die verfügbare Namen vorschlägt. Ein Identity Management ist ja ebensowenig kurzfristig einzuführen wie eine Umstellung der Namenskonvention für Anmeldenamen. Daher ergibt der Ansatz schon Sinn. Ob er prozessual ausreichend eingebettet ist, müsst ihr natürlich selbst prüfen. Gruß, Nils Zitieren Link zu diesem Kommentar
Kuddel071089 9 Geschrieben 24. Juni 2016 Autor Melden Teilen Geschrieben 24. Juni 2016 Moin, wenn du den Namen gegen zwei Quellen prüfen musst, würde ich zu Beginn eine gemeinsame Liste aus beiden Quellen erzeugen. Dann musst du nur einmal vergleichen und kannst einfacher eine Routine bauen, die verfügbare Namen vorschlägt. Ein Identity Management ist ja ebensowenig kurzfristig einzuführen wie eine Umstellung der Namenskonvention für Anmeldenamen. Daher ergibt der Ansatz schon Sinn. Ob er prozessual ausreichend eingebettet ist, müsst ihr natürlich selbst prüfen. Gruß, Nils Hallo Nils, vielen Dank erst einmal für deine Antwort. Gutes Stichwort IDM. Haben wir auch schon mehrfach vorgeschlagen, wurde aber aus kostengründen ablehnt. Somit sind Admins jetzt selber am fummeln und am basteln. Ich werde mich dann mal ans Werk machen :-) Zitieren Link zu diesem Kommentar
Dukel 451 Geschrieben 24. Juni 2016 Melden Teilen Geschrieben 24. Juni 2016 Es gibt auch Freie IDM. Z.B. OpenIDM. Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 24. Juni 2016 Melden Teilen Geschrieben 24. Juni 2016 Moin, die Lizenzkosten sind bei einer IDM-Lösung nicht der Punkt. MIM bekommt man in der Basisversion auch "umsonst" (als Teil der Serverlizenz). Die Kosten liegen in der Konzeption, Implementierung und Einführung. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.