Powershell: Beenden in If Anweisung ohne das Fenster zu schließen
Hallo,
ich möchte einen Ordner auf den Inhalt von xml files prüfen.
Sind keine XML Files enthalten soll der Text wie Oben eingeblendet werden und das Script an der stelle abgebrochen werden.
Jedoch soll sich das PowerShell Fenster nicht schließen, damit der Nutzer die Fehlermeldung lesen kann.
Ich habe mich bereits belesen und wenn ich ein einfaches einfüge wird wohl auch das Fenster geschlossen.
Irgendwelche Tipps?
ich möchte einen Ordner auf den Inhalt von xml files prüfen.
if (!(Test-Path "I:\AppsProj\EMSY\S_322\Transfer\488_ERS\2020\*.xml"))
{
Write-Host "Es sind keine XML Datein zur Verarbeitung vorhanden." -ForegroundColor Red
}
Sind keine XML Files enthalten soll der Text wie Oben eingeblendet werden und das Script an der stelle abgebrochen werden.
Jedoch soll sich das PowerShell Fenster nicht schließen, damit der Nutzer die Fehlermeldung lesen kann.
Ich habe mich bereits belesen und wenn ich ein einfaches
Exit
Irgendwelche Tipps?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666919
Url: https://administrator.de/contentid/666919
Ausgedruckt am: 24.11.2024 um 05:11 Uhr
14 Kommentare
Neuester Kommentar
Read-Host
return
Bzw. Das Read-Host vor das Return setzen wenn nach Enter beendet werden soll.
Jepp so war's gedacht
Alternativ mach doch einfach:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
if (!(Test-Path "I:\AppsProj\EMSY\S_322\Transfer\488_ERS\2020\*.xml"))
{
[System.Windows.Forms.MessageBox]::Show("Es sind keine XML Datein zur Verarbeitung vorhanden.","Keine Daten vorhanden",0)
}
Zitat von @Doskias:
Alternativ mach doch einfach:
Dann brauchst du trotzdem noch ein "Return" wenn nachfolgende Schritte nicht abgearbeitet werden sollen , oder man packt den Rest stattdessen in den else Teil.Alternativ mach doch einfach:
>
> [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
> if (!(Test-Path "I:\AppsProj\EMSY\S_322\Transfer\488_ERS\2020\*.xml"))
> {
> [System.Windows.Forms.MessageBox]::Show("Es sind keine XML Datein zur Verarbeitung vorhanden.","Keine Daten vorhanden",0)
> }
>
Zitat von @148121:
Dann brauchst du trotzdem noch ein "Return" wenn nachfolgende Schritte nicht abgearbeitet werden sollen , oder man packt den Rest stattdessen in den else Teil.
Dann brauchst du trotzdem noch ein "Return" wenn nachfolgende Schritte nicht abgearbeitet werden sollen , oder man packt den Rest stattdessen in den else Teil.
Das stimmt, aber genau dafür gibt es IF ja schließlich. Wenn ich keine Daten zum verarbeiten habe, darf der Teil natürlich nicht im IF-Teil stehen, sondern gehört in den Else teil. Wenn ich in einer IF-Anweisung das Skript beenden muss, dann hab ich das Konzept an sich noch nicht verstanden.
Also in dem Fall
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
if (!(Test-Path "I:\AppsProj\EMSY\S_322\Transfer\488_ERS\2020\*.xml"))
{
# Hier den Code, der ausgeführt wird, wenn die Bedingung erfüllt ist, also keine Datei vorliegt
[System.Windows.Forms.MessageBox]::Show("Es sind keine XML Datein zur Verarbeitung vorhanden.","Keine Daten vorhanden",0)
}
else
{
# Hier den Code hin der ausgeführt wird, wenn eine XML-Datei vorliegt
}
Ergebnis: man baucht kein Exit und bekommt eine Meldung, wenn keine Daten vorliegen.
Wenn ich in einer IF-Anweisung das Skript beenden muss, dann hab ich das Konzept an sich noch nicht verstanden.
Es gibt einige Gründe für solche Konstrukte mit Return um z.B. ein unendliches Verschachteln von IF-Abfragen zu vermeiden .So kann man den Code "flach" halten ohne das die Einrückungen im schlimmsten Falls so weit aus dem Fenster wandern das man die Übersicht verliert.
Alternativ baut man ein Try Catch um die Aktionen und wirft bei einem selbst erkannten Fehler ne Exception mit throw 'BlaBlub Error' und springt damit automatisch in den Catch-Teil und überspringt den Rest des produktiven Skripts.
Viele Wege führen nach Rom.
Zitat von @148121:
Verschachteln von IF-Abfragen ist schon so eine Sache, da hast du recht. Die versuche ich auch zu vermeiden. Allerdings würde ich dabei dann eher auf das Else verzichten oder mit neuen Hilfsvariablen arbeiten.Wenn ich in einer IF-Anweisung das Skript beenden muss, dann hab ich das Konzept an sich noch nicht verstanden.
Es gibt einige Gründe für solche Konstrukte mit Return um z.B. ein unendliches Verschachteln von IF-Abfragen zu vermeiden .So kann man den Code "flach" halten ohne das die Einrückungen im schlimmsten Falls so weit aus dem Fenster wandern das man die Übersicht verliert.
Das ist das schlimmste nach dem goto Befehl Alternativ baut man ein Try Catch um die Aktionen und wirft bei einem selbst erkannten Fehler ne Exception mit throw 'BlaBlub Error' und springt damit automatisch in den Catch-Teil und überspringt den Rest des produktiven Skripts.
Finde ich besser als Mittels IF-Anweisung das Skript zu verlassenViele Wege führen nach Rom.
Es geht nicht um den Weg nach Rom, sondern darum wie man auf dem Weg dahin sitzt
Hallo
Hier 5 Möglichkeiten für dich:
https://www.itnator.net/eine-pause-in-powershell-script-verwenden/
Gruß joehuaba
Hier 5 Möglichkeiten für dich:
https://www.itnator.net/eine-pause-in-powershell-script-verwenden/
Gruß joehuaba
Zitat von @Hacktrist:
Wenn ich einfüge wird dem Nutzer der Text wie gewünscht angezeigt. Jedoch hat er dann folgende Einblendung:
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
Das soll aber wenn möglich nicht sein, da der weitere Code dinge ausführt die sowieso nicht funktionieren.
Wenn ich
PAUSE
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
Das soll aber wenn möglich nicht sein, da der weitere Code dinge ausführt die sowieso nicht funktionieren.
o.k. nach PAUSE käme ja dann Dein EXIT.
pause
exit