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-Key: 511836

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

Printed on: April 26, 2024 at 21:04 o'clock

Member: Kraemer
Kraemer Nov 05, 2019 at 16:05:08 (UTC)
Goto Top
Moin,

du solltest dir mal PromptForChoice ansehen.

Gruß
Member: mayho33
mayho33 Nov 05, 2019 at 20:20:47 (UTC)
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>
Member: AndreasHoster
Solution AndreasHoster Nov 06, 2019 at 07:28:02 (UTC)
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.