2 Stimmen

Selbstaktualisierendes Powershell-Skript

Was wäre der beste Weg, um eine selbst aktualisierende (von SVN) Powershell-Skript haben?

Es sollte in der Lage sein, einen neuen Prozess zu starten und dann die SVN update $script; './$script' nachdem Sie sich vergewissert haben, dass der aktuelle Vorgang beendet ist.

if ((svn st -u --quiet $script) -match "\*"){
     $scriptToRun = 'SVN update $script; "./$script"'
     ##start new process that will end this process and execute $scriptToRun
}

3voto

Kev Punkte 115293

Ich dachte, das würde reichen, auch wenn es ein wenig naiv ist. Sie haben zwei Skripte - StartApp.ps1 die alle notwendigen Prüfungen auf Aktualisierungen durchführt. Nachdem es ausgeführt wurde, werden die Ketten MainApp.ps1 was die App selbst ist, würde diese aktualisiert werden.

StartApp.ps1 - startet die Anwendung, führt aber auch die Aktualisierungsprüfung durch:

# Bootstrap app
#
# Check for updates here

if(some_check_to_determine_if_update_required)
{
    # Execute whatever external source control commands required but wait until 
    # done:
    Start-Process -Wait -FilePath "<path_to_svn>" -ArgumentList <args_you_need>
}

# Launch the (now possibly updated) app
.\MainApp.ps1

1voto

Dennis Hostetler Punkte 594

Ich bin mir nicht sicher, ob es eine gute Idee ist, ein Skript selbst aktualisieren zu lassen. Sie könnten versuchen, dies über den Taskplaner zu erledigen, oder wenn das Skript es tun muss, dann teilen Sie es in 2 Teile auf, von denen der erste vom Benutzer ausgeführt wird. Halten Sie diesen Teil klein und einfach. Der zweite Teil ist das, was Sie aus svn heraus aktualisieren und er sollte den Großteil der Arbeit erledigen.

Im Grunde ein kleines Benutzerskript, das Argumente und automatische Aktualisierungen handhabt. Zweiter Teil, der den Großteil der Arbeit erledigt und automatisch aktualisiert wird.

0voto

Garr Godfrey Punkte 7382

1) Testen Sie, ob eine Aktualisierung erforderlich ist. Anhalten, wenn nicht erforderlich.

2) Benennen Sie die ausführende Skriptdatei um.

3) Kopieren Sie das aktualisierte Skript unter dem ursprünglichen Namen

4) Überprüfen Sie die Kopie: Größe, Prüfsumme oder ähnliches. Sie haben immer noch eine Chance, sich zu retten.

5) Führen Sie das neue Skript aus und beenden Sie das laufende Skript.

Sie müssen möglicherweise herausfinden, ob Sie zum Überschreiben des Skripts Administratorrechte benötigen. Wenn Sie immer mit erhöhten Rechten arbeiten, sollte das keine Rolle spielen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X