Sie benötigen eine Fortschrittsleiste, wenn Sie eine unbeaufsichtigte Installation in PowerShell durchführen

2609
Maizzer

In meinem Job installiere und installiere ich häufig dieselbe Software. Ich habe ein Skript in Powershell geschrieben, um im Stillen alles für mich zu installieren, was großartig funktioniert. Da es jedoch stumm ist, gibt es kein Feedback und jeder, der das Programm verwendet, denkt, dass es entweder angehalten ist oder nicht läuft.

Ich versuche, einen Weg zu finden, wie die stillen Installationen ausgeführt und eine Statusleiste geladen werden können. Ich habe mit diesem Code für die Fortschrittsleiste gearbeitet:

for ($i = 1; $i -le 100; $i++ ); .\Untitled11.ps1 

Aber für mein Leben kann ich nicht, dass es gleichzeitig mit den Installationen läuft. Ich habe eine Reihe verschiedener Befehle ausprobiert, z. B. Hintergrundstart und Parallelbetrieb. Die Statusleiste wird jedoch nach oder vor der Installation ausgeführt.

Irgendwelche Ideen, wie ich die Installations- und Statusleiste gleichzeitig ausführen kann? Ich bin nicht mit dem Status-Barcode verheiratet, es ist nur der, mit dem ich gearbeitet habe. Wenn es also einen einfacheren oder adaptiveren Code gibt, bin ich offen dafür.

2
Ist die Software, die Sie installieren, im MSI-Format im Hintergrund installiert? In diesem Fall können Sie die Parameter für die unbeaufsichtigte Installation möglicherweise so ändern, dass sie eine Fortschrittsleiste enthalten, anstatt vollständig still zu sein. Siehe dies: https://msdn.microsoft.com/de-de/library/windows/desktop/aa367988%28v=vs.85%29.aspx Und überprüfen Sie den Abschnitt "/ q". Stephen R. vor 8 Jahren 0
Einige sind in msi, andere sind exe. Ich habe darüber nachgedacht, einige nur mit einem Teil der Stummschaltung auszuführen, aber bei all der unterschiedlichen Software schien es zu chaotisch, sie einzeln ihre eigene Statusleiste anzeigen zu lassen. Deshalb habe ich mich dazu entschieden, während des gesamten Prozesses eine Statusleiste zu verwenden. Maizzer vor 8 Jahren 0
Was wäre, wenn Sie statt einer Fortschrittsleiste nur eine Eingabeaufforderung hätten, in der Sie einen Text wiederholen ... "Bitte warten Sie, bis die Installation abgeschlossen ist" ... und das Fenster wird nach Abschluss geschlossen. Stephen R. vor 8 Jahren 0

3 Antworten auf die Frage

1
root

Mit diesem Cmdlet können Sie keinen Live-Fortschritt der Installation einer Anwendung sehen. Write-Progresssoll den Status eines " laufenden Befehls oder Skripts " darstellen. Dieses Cmdlet kann keine Informationen zum Installationsfortschritt abrufen.

Wie in den Kommentaren erwähnt, kann es attraktiver sein, Meldungen auszugeben, um den Benutzer über den Fortschritt des Skripts zu informieren.

"This will not detect errors, but give a general sense of completion."  "Running Program A (step 1 of 3)..." (run_program_A) "Program A finished."  "Running Program B (step 2 of 3)..." (run_program_B) "Program B finished."  "Running Program C (step 3 of 3)..." (run_program_C) "Program C finished."  "Finished." 
1
Wes Sayeed

Write-Progress hat keinen wirklichen Einblick in den Installationsfortschritt Ihrer Anwendung. Es ist nur ein dummer Indikator, dass Sie sich jedes Mal erhöhen müssen, wenn Sie möchten, dass es aktualisiert wird.

Wenn Sie im Zuge des Installationsvorgangs mehrere MSI / EXE-Dateien erzeugen, müssen Sie nach jedem Schritt des Vorgangs einen Write-Progress einfügen. Sie können entweder ein Array mit dem Namen jeder MSI / EXE-Befehlszeile füllen und diese durchlaufen, oder Sie verwenden einfach mehrere Write-Progress-Anweisungen mit derselben ID-Nummer.

Die Fortschrittsleiste kann auch nur dann erhöht werden, wenn die Ausführung eines Befehls abgeschlossen ist. Wenn Sie die Installation auf ein anderes Skript verteilen, stellt dies einen Befehl dar und Sie erhalten keinen inkrementellen Fortschritt. Sie müssen Ihre einzelnen Komponenten zum selben Skript machen. In dieser Hinsicht funktioniert das auch nicht, wenn Ihre Installation ein großes Programm ist, dessen Ausführung lange dauert.

0
daren

Erstellen Sie einen Job, der das erledigt. Dadurch wird es möglich, asynchron statt synchron zu laufen. Danach können Sie den Job stoppen und entfernen.

Diese Antwort könnte durch die Bereitstellung von Schritten zum Erstellen, Stoppen und Entfernen eines Jobs erheblich verbessert werden. Damit gehe ich davon aus, dass Sie eine geplante Aufgabe meinen. Worthwelle vor 5 Jahren 1