2017-04-11 5 views
1

Ich habe dieses Powershell-Skript, das einen Befehl auslöst, wenn eine Datei in einem bestimmten Verzeichnis erstellt wird. Alles funktioniert gut, aber ich kann die Powershell nicht schließen, nachdem die Aktion abgeschlossen ist. Wie kann ich das tun?Powershell-Skript beenden

Ich habe versucht, mit dieser "$ uscita" Variable zu stoppen und while, aber es funktioniert nicht. Ich habe auch versucht, am Ende der Aktion den Befehl zu beenden, aber das funktioniert nicht

+1

'$ uscita = 1 '->' $ mit: uscita = 1' –

+0

Ich habe versucht .. Die Powershell einige Fehler geben und sofort schließen .. Ich bin nicht lesen können, was ist der Fehler – seb

+0

Entfernen Sie den 'exit' und führen Sie das Skript von einer PowerShell-Eingabeaufforderung aus. –

Antwort

0

Offhand sieht es aus wie Ihre vorletzte Zeile mit der Weile ist wahrscheinlich wahr, so dass es nur im Schlafbefehl sitzt .

Versuchen Sie dies zu testen, es wird wahr zurückgegeben, wenn der letzte Befehl erfolgreich abgeschlossen wurde.

while (!$uscita) {write-output $?; sleep 5} 
+0

Ok, habe ich versucht. Wenn ich eine Datei in das Verzeichnis, das ich überwache, einfüge, gibt es mir "falsch". Aber die Schleife hört nicht auf. Es geht weiter und kehrt wahr – seb

+0

Das macht Sinn, wir kommen näher. $? sagt dir (true/false), ob der vorherige Befehl erfolgreich war. Jetzt frage ich mich: Du hast gesagt "es gib mir 'falsch'", meinst du, dass die Aussage! $ Uscita $ true zurückgibt? (Bedeutung $ uscita -eq $ false). – primohacker

+0

Ich bin mir nicht sicher, ob die Antwort, die du gepostet hast, der beste Weg ist. Setzen Sie $ uscita = 1 nicht in die Einstellung $ uscita = $ true. Dann zur Problembehandlung - while (! $ Uscita) {write-output $ uscita; Schlaf 5}. Wenn dies immer noch unendlich wiederholt wird, bedeutet dies, dass die $ uscita = $ true-Zeile nicht getroffen wird. Beginnen Sie damit, weitere Schreibausgaben in den $ -Aktionsblock oder höher zu setzen, damit Sie sehen können, wo das Problem liegt. Vergessen Sie nicht, die Funktion PhpOutput zu beheben. Unerwartetes Verhalten dort konnte verhindern, dass $ uscita gesetzt wurde. – primohacker

0

Ich habe den letzten Teil meines Codes auf diese Weise bearbeitet und jetzt funktioniert es. Nach der Aktion endet das Skript selbst. Hier ist der Code:

while (!$uscita) { 
if($? -eq $false) { 
    exit 
    } 
sleep 5}