chichox3
Goto Top

Powershell Pausiert mittendrin, will es aber zum Schluss

Hallo zusammen

ich habe ein kleines Problem, wenn ich folgendem Powershell Code auf der Console laufen lasse, wird die Pause noch vor der zweiten if schleife ausgelöst.
set-location '\\Muster.Corp.Mann.com\fredirect\DE\Muster\Maxmustermann\Desktop'  
 
write-host "Willkommen zur Berechtigungsauswertung von Cristu!`n"  
$User=read-host -prompt "Gewünschter AD-Username eingeben"  

If (dsquery user -samid $user) {  "Alles Klar!" }  
    else {"`nDer User wurde nicht gefunden, versuche es erneut.." }  

$x=read-host -prompt "möchtest du es auf eine Excel? [J oder N]"  

if ($x -eq 'J') {Get-ADPrincipalGroupMembership $User -server Muster.Corp.Mann.com| select name | sort-object -property name | Export-Csv -Path .\$($User)_AD.csv }  
elseif ($x -eq 'N') {  get-ADPrincipalgroupmembership $User Muster.Corp.Mann.com| select name | sort-object -property name}  
else {    "Test"        }  

Pause

Ich möchte natürlich dass es nach der Ausgabe Pausiert. Sehe aber den Fehler nicht.
Danke im voraus für eure Mühe und lieber Gruss

Cristu

Content-ID: 511836

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Kraemer
Kraemer 05.11.2019 um 17:05:08 Uhr
Goto Top
Moin,

du solltest dir mal PromptForChoice ansehen.

Gruß
mayho33
mayho33 05.11.2019 um 21:20:47 Uhr
Goto Top
Hi,

Ich würde den Teil...
if ($x -eq 'J') {Get-ADPrincipalGroupMembership $User -server Muster.Corp.Mann.com| select name | sort-object -property name | Export-Csv -Path .\$($User)_AD.csv }
elseif ($x -eq 'N') { get-ADPrincipalgroupmembership $User Muster.Corp.Mann.com| select name | sort-object -property name}
else { "Test" }


... in dieser If unterbringen:
If (dsquery user -samid $user) { "Alles Klar!" }
else {"`nDer User wurde nicht gefunden, versuche es erneut.." }

.. Und anschließend vielleicht nach diesem Beispiel anschließen:
Powershell: auf Bestätigung warten

Oder mit Start-Sleep <n millisekunden>
AndreasHoster
Lösung AndreasHoster 06.11.2019 um 08:28:02 Uhr
Goto Top
Der Fehler ist, daß Du es nicht explizit auf der Konsole ausgibst.
Die implizite Ausgabe, also einfach mit einem Rückgabe-Wert nichts machen, sorgt zwar letztendlich auch für eine Bildschirmausgabe, wird aber wohl intern anders behandelt.
Einfach mit Out-Host der PowerShell sagen, das es ausgegeben werden soll (dann sieht auch jeder, der den Code liest, das eine Bildschirmausgabe erwünscht war und nicht eventuell was vergessen wurde):
elseif ($x -eq 'N') {  get-ADPrincipalgroupmembership $User Muster.Corp.Mann.com| select name | sort-object -property Name | Out-Host}  
Dann wird es auch vor der Pause Mitteilung ausgegeben.