Prüfen ob Befehl in Variable true zurück gibt
Hallo liebe Gemeinde,
sonst stiller Leser nun Fragender (Powershellbeginner).
Steinigt mich bitte nicht, aber ich habe mir die gestrige Nacht um die Ohren geschlagen, und unzählige Kombinationen versucht - leider ohne Erfolg.
Ich möchte gern in eine Variable einen Befehl speichern und den Wert ob erfolgreich prüfen.
In meinem Beispiel war die Wahl der Schleife schon ausreichend problematisch.
Hintergrund:
Ich habe einen Nutzer, bspw. Bobar Johnson und möchte im AD nachfragen ob es den UPN b.johnson schon gibt.
Falls Ja, soll der UPN auf bo.johnson "erweitert" werden und ich frage auch hier nach - gibt es diesen.
Gibt es diesen nun nicht, übernehme ich den UPN für Bob johnson und lege den Nutzer an.
Hier scheitere ich bei der Prüfung der Variable $frage. Ich weiß einfach nicht, wie ich prüfe, ob der Befehl darin erfolgreich ausgeführt wurde und ich nachfolgen die Schleife verlassen kann.
Ich hoffe, ihr könnt mir helfen.
Ein weiterer beispielhafter Versuch:
Ich erkenne einfach nicht den (vielleicht) logischen/technischen Fehler.
VG und Danke
sonst stiller Leser nun Fragender (Powershellbeginner).
Steinigt mich bitte nicht, aber ich habe mir die gestrige Nacht um die Ohren geschlagen, und unzählige Kombinationen versucht - leider ohne Erfolg.
Ich möchte gern in eine Variable einen Befehl speichern und den Wert ob erfolgreich prüfen.
In meinem Beispiel war die Wahl der Schleife schon ausreichend problematisch.
Hintergrund:
Ich habe einen Nutzer, bspw. Bobar Johnson und möchte im AD nachfragen ob es den UPN b.johnson schon gibt.
Falls Ja, soll der UPN auf bo.johnson "erweitert" werden und ich frage auch hier nach - gibt es diesen.
Gibt es diesen nun nicht, übernehme ich den UPN für Bob johnson und lege den Nutzer an.
Hier scheitere ich bei der Prüfung der Variable $frage. Ich weiß einfach nicht, wie ich prüfe, ob der Befehl darin erfolgreich ausgeführt wurde und ich nachfolgen die Schleife verlassen kann.
Ich hoffe, ihr könnt mir helfen.
$a=0
do{
$nn="johnson"
$vn="bobar"
$vnSub=$vn.substring(0,$a++)+"."+$nn+"@demo.local"
$frage = {Get-ADUser -filter 'UserPrincipalName -eq "$vnSub"'}
}
while ($frage -eq $NULL)
Ein weiterer beispielhafter Versuch:
$a=0
do{
$nn="johnson"
$vn="bobar"
$vnSub=$vn.substring(0,$a++)+"."+$nn+"@demo.local"
$frage = "{Get-ADUser -filter UserPrincipalName -eq `"$vnSub`"}"
}
while ($frage -eq "error")
Ich erkenne einfach nicht den (vielleicht) logischen/technischen Fehler.
VG und Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1422499727
Url: https://administrator.de/contentid/1422499727
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Zitat von @LeeX01:
> ...
> $exist = Get-ADUser -filter {UserPrincipalName -eq $vnSub}
> } while ($exist -eq $null)
>
Dann aber mit until 😉
until ($exist -eq $null)
while ($exist -ne $null)
Denn er will ja so lange erneut prüfen bis kein User mit einem UPN gefunden wurde, nicht immer weitermachen wenn kein User gefunden wurde.
Zitat von @149569:
Dann aber mit until 😉
oder mit while dann mittels -ne
Denn er will ja so lange erneut prüfen bis kein User mit einem UPN gefunden wurde, nicht so lange weitermachen so lange kein User gefunden wurde.
Zitat von @LeeX01:
>> ...
>> $exist = Get-ADUser -filter {UserPrincipalName -eq $vnSub}
>> } while ($exist -eq $null)
>>
Dann aber mit until 😉
> until ($exist -eq $null)
>
> while ($exist -ne $null)
>
Denn er will ja so lange erneut prüfen bis kein User mit einem UPN gefunden wurde, nicht so lange weitermachen so lange kein User gefunden wurde.
Danke das ist natürlich richtig, ich muss gestehen ich habe nur über die User Abfrage nachgedacht und die Schleife übernommen und nicht nochmal Logik geprüft.
Hallo,
Nein, du möchtest ein Object in die Variable speichern und nicht den Befehl. Bei deinem zweiten Versuch hast du das nähmlich gemacht, da hast du ein String erzeugt. Bei deinem ersten Versuch hast du ein Scriptblock verwendet. Diesen musst du natürlich noch mit der Invoke() Methode ausführen lassen....
Fazit: Nicht raten sondern lesen und verstehen! Ebenso auch mal testen! Das hättest du einfach kurz selbst rausfinden können, indem du den Einzeiler kurz in die Powershell eingegeben hättest und das Ergebnis angeschaut hättest.
MfG
Ich möchte gern in eine Variable einen Befehl speichern und den Wert ob erfolgreich prüfen.
Nein, du möchtest ein Object in die Variable speichern und nicht den Befehl. Bei deinem zweiten Versuch hast du das nähmlich gemacht, da hast du ein String erzeugt. Bei deinem ersten Versuch hast du ein Scriptblock verwendet. Diesen musst du natürlich noch mit der Invoke() Methode ausführen lassen....
Fazit: Nicht raten sondern lesen und verstehen! Ebenso auch mal testen! Das hättest du einfach kurz selbst rausfinden können, indem du den Einzeiler kurz in die Powershell eingegeben hättest und das Ergebnis angeschaut hättest.
MfG
Na dann auch mal hier rein schauen Powershell Leitfaden für Anfänger