Ich habe ein Skript, mit dem ich WSUS- Prozesse automatisiere , und in der letzten Phase werden alle alten / unnötigen Dateien / Objekte entfernt.
Ich möchte vor der Bereinigungsphase die Eingabetaste drücken, um mit dem Entfernen fortzufahren, oder eine andere Taste zum Beenden drücken, um den Benutzern die Möglichkeit zu geben, sie nicht auszuführen.
Der Code, den ich derzeit am Ende des Skripts habe, ist hier:
Get-WsusServer 10.1.1.25 -PortNumber 8530 | Get-WsusUpdate -Classification All -Approval Unapproved -Status FailedOrNeeded | Approve-WsusUpdate -Action Install -Target $ComputerTarget -Verbose
Write-Host "Updates have been approved!"
Write-Host "Preparing to clean WSUS Server of obsolete computers, updates, and content files."
#Part2 - WSUS Server Cleanup
##Run Cleanup Command
Get-WsusServer $WSUS_Server -PortNumber $PortNumber | Invoke-WsusServerCleanup -CleanupObsoleteComputers -CleanupObsoleteUpdates -CleanupUnneededContentFiles
Kurz vor # Part2 möchte ich die Eingabeaufforderung "Drücken Sie die Eingabetaste, um fortzufahren, oder eine andere Taste zum Abbrechen" erhalten.
Gibt es eine einfache Möglichkeit, dies zu tun?
Alles, was ich gesehen habe, scheint das Verschachteln des gesamten Skripts in einem Codeblock zu beinhalten, was ich lieber nicht tun würde. = /
quelle
Siehe Anhalten eines Skripts, bis der Benutzer eine Taste drückt
Die relevanten Skriptzeilen sind:
Sie können einen Check für die Eingabe und den Umbruch hinzufügen. Dies ist eine Schleife, wenn Sie wirklich wirklich möchten, dass nur ein Schlüssel fortgesetzt wird. Sie können auch ein anderes hinzufügen, um das Skript zu beenden. Ich würde jedoch empfehlen, den Benutzer nur daran zu erinnern, dass Strg-C beendet wird. Warum Code für etwas, das eingebaut ist?
quelle
Schreiben Sie
Pause
in jedem Schritt, in dem PowerShell ausgeführt werden soll, Ihren Code ein. PowerShell bleibt bei "Drücken Sie die Eingabetaste, um fortzufahren ...:", bis Sie Enterdie Shell / ISE drücken oder schließen .quelle
Sie können die Schreibwarnoption verwenden. ziemlich schlank:
quelle
Sie können ein
Read-Host
Cmdlet einfügen und den Eingabewert dann wie gewünscht verarbeiten.quelle
Erstellen dieser Antwort nur als Folge-Add-On basierend auf dem Kommentar des OP zur Validierung von Eingaben als Ergänzung zu den anderen guten Antworten. Es war zu lang, um an der richtigen Stelle einen Kommentar abzugeben.
Die Überprüfung der Eingabe kann auf verschiedene Arten erfolgen. Aus persönlichen Gründen verwende ich die switch- Anweisung gerne für die Eingabevalidierung, da ich sie im Allgemeinen leichter zu lesen und zu debuggen finde als eine Reihe von if else s und vielseitiger als eine Weile .
Ebenso bevorzuge ich die Verwendung von Funktionen gegenüber Schleifen, um die Validierung nicht zu bestehen, da ich den Code sauberer und wiederverwendbarer finde. Funktionen haben auch die eingebaute Möglichkeit der Parametervalidierung, bei der dies der beste Weg ist, den Inhalt einer Variablen zu validieren.
Als Beispiel hier eine einfache Funktion, die sich selbst aufruft, um die Frage neu zu formulieren, wenn die Eingabe nicht wie erwartet ist.
quelle