Ps1 Script geht nach dem Klick immer zu
Hallo
Was ist der Fehler oder Grund dass die winget_install.sp1 Datei gestartet wird, das Fenster aber nach 2 Secunden zugeht (die shell ist nur schwarz)
Versucht habe ich das und weiss nicht weiter.
1
2
3 weitere versuche
bei allen ist das selbe .. nach dem klick geht das fenster einfach nur zu .. winget ist installiert ..
Was ist der Fehler oder Grund dass die winget_install.sp1 Datei gestartet wird, das Fenster aber nach 2 Secunden zugeht (die shell ist nur schwarz)
Versucht habe ich das und weiss nicht weiter.
1
powershell
# Ausführen des Befehls "winget list"
Start-Process -FilePath "winget" -ArgumentList "list" -Wait
# Ausführen des Befehls "winget upgrade -all"
Start-Process -FilePath "winget" -ArgumentList "upgrade -all" -Wait
# Warten für 555 Sekunden, bevor die PowerShell geschlossen wird
Start-Sleep -Seconds 5000
2
powershell
# Ausführen des Befehls "winget list"
winget list
# Ausführen des Befehls "winget upgrade -all"
winget upgrade -all
# Warten auf Benutzereingabe, bevor die PowerShell geschlossen wird
pause
3 weitere versuche
# Öffne ein PowerShell-Fenster und führe die Befehle aus
# Start-Process powershell -NoExit -ArgumentList "winget list; winget upgrade -all"
# Öffne ein PowerShell-Fenster und führe die Befehle aus
# powershell -NoExit -Command "winget list; winget upgrade -all; pause"
# Öffne ein PowerShell-Fenster und führe die Befehle aus
powershell -NoExit -Command "winget list; winget upgrade -all; Read-Host -Prompt 'Drücken Sie eine beliebige Taste, um fortzufahren.'pause"
bei allen ist das selbe .. nach dem klick geht das fenster einfach nur zu .. winget ist installiert ..
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 91961545831
Url: https://administrator.de/forum/ps1-script-geht-nach-dem-klick-immer-zu-91961545831.html
Ausgedruckt am: 22.12.2024 um 09:12 Uhr
25 Kommentare
Neuester Kommentar
Hallo @bob777
wenn man
verwenden möchte muss man zusätzliche Lizenzvereinbarungen eingehen. Diese müssen proaktiv einmalig bestätigt werden. In einem Script wird das wohl so u.U. nicht gehen.
Vielleicht löst sich das Problem, indem du es einmalig in Powershell Console als Befehl so eintippt und dann eben bestätigst mit (Ja).
Kreuzberger
wenn man
windet List
Vielleicht löst sich das Problem, indem du es einmalig in Powershell Console als Befehl so eintippt und dann eben bestätigst mit (Ja).
Kreuzberger
Zitat von @kreuzberger:
verwenden möchte muss man zusätzliche Lizenzvereinbarungen eingehen. Diese müssen proaktiv einmalig bestätigt werden. In einem Script wird das wohl so u.U. nicht gehen.
windet List
geht mittlerweile mit folgenden Parametern:
--accept-source-agreements
--accept-package-agreements
https://learn.microsoft.com/de-de/windows/package-manager/winget/upgrade ...
Nachtrag:
Der Accept-Agreements Parameter und der --all Parameter können erst seit ca. dem 08.11.2022 verwendet werden:
https://github.com/microsoft/winget-cli/issues/2680
VG
@Celiko
Ich finde es etwas befremdlich, wenn ich ein Agreements akzeptieren soll, welches mir inhaltlich auf diese Weise gar nicht bekannt wird.
Kreuzberger
Ich hab mich bei wohl vertippt und falsch „windet“ geschrieben. Sorry
Ich finde es etwas befremdlich, wenn ich ein Agreements akzeptieren soll, welches mir inhaltlich auf diese Weise gar nicht bekannt wird.
Kreuzberger
Ich hab mich bei
windet
@kreuzberger
Yo, bin ich voll bei dir. Wollte nur darauf hinweisen für den TO. Evtl. will er das Global an seine Clients verteilen mit dem Gedanken: Hauptsache aktuell.
Wir nutzen auch Winget, aber nutzen ein Array von Programmnamen, die aktualisiert werden sollen mit dem automatischen Accept-Agreement Parameter.
So haben wir die Kontrolle, welche Applikationen wir über Winget updaten wollen.
VG
Yo, bin ich voll bei dir. Wollte nur darauf hinweisen für den TO. Evtl. will er das Global an seine Clients verteilen mit dem Gedanken: Hauptsache aktuell.
Wir nutzen auch Winget, aber nutzen ein Array von Programmnamen, die aktualisiert werden sollen mit dem automatischen Accept-Agreement Parameter.
So haben wir die Kontrolle, welche Applikationen wir über Winget updaten wollen.
VG
Wenn das Script per Task Scheduler ausgeführt wird dann muss das im User-Context gestartet werden, weil sonst die GUI nicht angezeigt werden kann...
Alternativ als System und Impersonation des angemeldeten Users vornehmen.
Wenn das Script ohne Fenster ausgeführt werden soll und du gerne sehen willst, was der so macht kannst du Start-Transcript nutzen.
pjumper hat das gut dargestellt:
PowerShell "Login Script" läuft als Scheduled Task nicht
Windows Server Aufgabenplanung Robocopy
VG
Alternativ als System und Impersonation des angemeldeten Users vornehmen.
Wenn das Script ohne Fenster ausgeführt werden soll und du gerne sehen willst, was der so macht kannst du Start-Transcript nutzen.
pjumper hat das gut dargestellt:
PowerShell "Login Script" läuft als Scheduled Task nicht
Windows Server Aufgabenplanung Robocopy
VG
Testen mit PowerShell ISE oder meinewegten auch Visual Studio Code und debugger.
Offenhalten kann man es auch mit
Normal reicht der Aufruf. Mitunter blenden Scripte kurz in Rot ein, dass Ressourcen nicht gefunden wurden o.ä. Diese Fehler muss man abfangen, bzw. beheben.
Anlaufstellen wären auch Ereignislog und ähnliches. Man kann ps1 Dateien auch via Batch xxx.cmd starten oder mittels VBS. Letzteres bietet noch die Möglichkeit PS1 Aufruf zu verbergen.
Zum Verbergen gibt es auch andere Mehtoden. VBS geht aber auch immer noch. Ansonsten schau dass du was siehst! Mit pause anhalten. Erstmal so debuggen Dann kommt man rasch zu einer Lösung!
VBS zum Starten - ggf. auch hidden - nehmen:
Offenhalten kann man es auch mit
pause
Normal reicht der Aufruf. Mitunter blenden Scripte kurz in Rot ein, dass Ressourcen nicht gefunden wurden o.ä. Diese Fehler muss man abfangen, bzw. beheben.
Anlaufstellen wären auch Ereignislog und ähnliches. Man kann ps1 Dateien auch via Batch xxx.cmd starten oder mittels VBS. Letzteres bietet noch die Möglichkeit PS1 Aufruf zu verbergen.
Zum Verbergen gibt es auch andere Mehtoden. VBS geht aber auch immer noch. Ansonsten schau dass du was siehst! Mit pause anhalten. Erstmal so debuggen Dann kommt man rasch zu einer Lösung!
VBS zum Starten - ggf. auch hidden - nehmen:
objShell.Run strCMD,0
Dim objShell,objFSO,objFile
Set objShell=CreateObject("WScript.Shell")
Set objFSO=CreateObject("Scripting.FileSystemObject")
'enter the path for your PowerShell Script
strPath="c:\Scripts\winsscp_bck_cp.ps1"
'verify file exists
If objFSO.FileExists(strPath) Then
'return short path name
set objFile=objFSO.GetFile(strPath)
strCMD="powershell -nologo -command " & Chr(34) & "&{" &_
objFile.ShortPath & "}" & Chr(34)
'Uncomment next line for debugging
'WScript.Echo strCMD
'use 0 to hide window
objShell.Run strCMD,0
Else
'Display error message
WScript.Echo "Failed to find " & strPath
WScript.Quit
End If
Hilft mir auf die Sprünge.. Soll ich jetzt ein Script für das Script schrieben? Das von dir startet das von mir?
Nein. Du bist doch gerade dabei ein Script zu schreiben das später mal in einem geplanten Task laufen soll. In diesem Task gibt du als Programm powershell.exe und als Optionen -ExecutionPolicy AllSigned -File c:\meinscript.ps1 an. Natürlich könntest du dein Script auch mit -Scriptblock an die Powershell übergeben und damit das Script komplett in den Task schreiben. Das wird aber ziemlich unübersichtlich.
Während du noch auf deinem Client testest musst du das Script einfach jedes Mal so starten wie oben geschrieben.
ohne dass ich in Powershell etwas tippen muss. Nur Doppelkick ist das Ziel
Powershell-Scripte werden standardmäßig im Editor geöffnet. Einfach mit Doppelklick funktioniert also nicht.
Entweder Rechtsklick und "Mit Powershell ausführen" oder eine Verknüpfung anlegen mit dem Kommando von oben
powershell -ExecutionPolicy AllSigned -File c:\meinscript.ps1
Ich glaube du solltest dich noch etwas einlesen
Das was du da verbrochen hast für nacheinander vier Befehle in der Powershell aus
Was du willst ist wahrscheinlich
Alles was hier mit "--" beginnt sind Optionen oder Schalter für winget
Manuel
powershell -NoExit -Command "winget list; winget upgrade --all; --accept-source-agreements; --accept-package-agreements;"
Das was du da verbrochen hast für nacheinander vier Befehle in der Powershell aus
- winget list
- winget upgrade --all
- --accept-source-agreements
- --accept-package-agreements
Was du willst ist wahrscheinlich
powershell -NoExit -Command "winget list; winget upgrade --all --accept-source-agreements --accept-package-agreements"
Manuel
powershell -EP ByPass -NoExit -Command "winget list; start-process winget -Argumentlist 'upgrade --all --silent --accept-source-agreements --accept-package-agreements --force' -wait -NoNewWindow"
Hi @10138557388
wenn ich hier mal reingrätschen darf.............
Ich wäre begeistert, wenn man das miniscript mal etwas dokumentieren würde um zu sehen was es da genau macht. Darüber hinaus würde ich gerne einen schritt zurück gehen in der art, als dass man Updates/installationen pariert durchführt. Also nur Microsoft Sachen update, nur spezielle software update. also zb nur den mozilla, oder nur den vlc.
Vielleicht hast du ja Laune uns da zu erhellen.
Kreuzberger
wenn ich hier mal reingrätschen darf.............
Ich wäre begeistert, wenn man das miniscript mal etwas dokumentieren würde um zu sehen was es da genau macht. Darüber hinaus würde ich gerne einen schritt zurück gehen in der art, als dass man Updates/installationen pariert durchführt. Also nur Microsoft Sachen update, nur spezielle software update. also zb nur den mozilla, oder nur den vlc.
Vielleicht hast du ja Laune uns da zu erhellen.
Kreuzberger
Zitat von @kreuzberger:
Ich wäre begeistert, wenn man das miniscript mal etwas dokumentieren würde um zu sehen was es da genau macht.
Freitag gibt's von mir nur RTFM 😋Ich wäre begeistert, wenn man das miniscript mal etwas dokumentieren würde um zu sehen was es da genau macht.
Start-Process
winget upgrade parameter
Soviel Bohei um so einen Pippifax gibt's aber auch nur Freitags ... 🖖