josephusflavius
Goto Top

PowerShell-Inputs aus CSV-Datei einlesen

Hallo,

wir haben einen PowerShell-Script, mit dem wir neuen externen User anlegen.
Das Script stellt Fragen, die dann manuell beantwortet werden.

Manchmal müssen wir aber 10-20 User anlegen, wo es dann sinnvoll wäre, wenn die Inputs über CSV-Datei geliefert werden könnten.

Wie setze ich so etwas am einfachsten um?

hier ist die Stelle ich Code, wo die Inputs eingegeben werden:

.
.
 ## Einlesen der notwendigen Informationen aus der Eingabe

 $Emailadress = Read-Host "Emailadresse des neuen Users"  
 $testuser = Get-ADUser -Filter * -Properties mail | Where-Object{$_.mail -like "$Emailadress"} | Format-Table  
 if ($Null -ne $testuser){
	Write-Host -ForegroundColor "red" "Ein Benuter hat die gleiche Emailadresse wie ein bereits vorhandener Benutzer"  
	break
	}
 else
	{Write-Host "Das Skript wird fortgesetzt"}  

 $GivenName = Read-Host "Vorname des Benutzers"   
 $SurName = Read-Host "Nachname des Benutzer"  
 $Ticketnummer = Read-Host "Ticketnummer wegen dem der Benutzer angelegt wird"  
 
 $Organisation = Read-Host "Organisation/Arbeitgeber  des Benutzers?"  
 Write-Host "Es wird geprueft ob ein Benutzer mit dieser Mailadresse im Ad bereits vorhanden ist"  
.
.

Vielen Dank für eure Meinungen.

LG

JoFla

Content-ID: 4187217336

Url: https://administrator.de/contentid/4187217336

Ausgedruckt am: 24.11.2024 um 10:11 Uhr

Crusher79
Crusher79 07.10.2022 aktualisiert um 18:51:59 Uhr
Goto Top
Hallo, naja falsche Stelle die du geposted hast. Wenn es schon so läuft, fehlt dir doch nur ein CSV Import. Oder?

Die CSV wird satzweise eingelesen und jedes getrennte Element kannst du dann einfach zuweisen.

https://support.staffbase.com/hc/en-us/articles/360007108391-CSV-File-Ex ...:
https://support.staffbase.com/hc/en-us/article_attachments/360009197051/ ...

$FUserCSV = "C:\temp\username-or-email.csv"  
$delimiter = ";"  

$satz=Import-CSV -Path $FUserCSV -Delimiter $delimiter 

ForEach ($user in $satz) {
$user.Identifier
$user.'Last Name'  
}

Ergebnis:
9012
Booker
2070
Grey
...

Du kommst auch einfach an Spalten mit Leerzeichen ran. Beim Druchlaufen der Sätze muss dann dein Code für das Anlegen rein. Oder fehlt der auch noch?

In dem Fall wäre es einfach nur $user.'Login email', was du zum Vergleich ob schon vorhanden heranziehen kannst.

Das CSV Beispiel ist gar nicht verkehrt. Du siehst, es gibt hier auch welche wo E-Mail Adresse leer ist. Das kann man natürlich entsprechend noch abfangen. Gerade wenn es ein halb automatischer Prozess ist. Manche denken vlt.: Boah, schwer. Trag ich später nach. Und Rumms - schon hast du den Salat.

mfg Crusher
em-pie
em-pie 07.10.2022 um 19:08:57 Uhr
Goto Top
Moin,

Tipp:

Baue im PS-Script drei Funktionen:
Die erste bekommt die Daten (als Objekt) übergeben, verbindet sich gegen das AD und legt den/ die User an

Die zweite fragt die Daten ab, speichert sie in ein Objekt, ruft die erste auf und übergibt das Objekt.

Die dritte liest eine CSV aus, ruft die erste auf und übergibt das Objekt.

Sollen später Daten aus einem HR (webservice) abgerufen werden, macht das die vierte und übergibt alles an die erste…


So musst du nur ein ps1 pflegen, hast aber eine hohe Flexibilität

Gruß
em-pie
JosephusFlavius
JosephusFlavius 07.10.2022 um 19:08:57 Uhr
Goto Top
Vielen Dank Crusher, ich werde es testen.

LG JoFla
JosephusFlavius
JosephusFlavius 07.10.2022 um 19:10:10 Uhr
Goto Top
Danke sehr em-pie ... face-smile