Powershell in Batchdatei ausführen
Powershell in Batchdatei ausführen
Ich habe in Windows 11 jetzt Powershell 7.5 installiert und möchte in einer Batchdatei pwsh.de für 7.5 ausführen und eine PS1-Datei als Parameter mitgeben die ausgeführt wird und nach deren Ende das Fenster nicht geschlossen wird. Ich habe viele Jahre nicht mehr mit Powershell gearbeitet.
-
Tante Google
- DK2000
- Legende
- Beiträge: 10240
- Registriert: 03.04.2018, 00:07
- Hat sich bedankt: 238 Mal
- Danke erhalten: 737 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Code: Alles auswählen
@echo off
cd /d %~dp0
pwsh.exe -NoExit -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0PowerShellkSkript.ps1'"
echo.
pause
Re: Powershell in Batchdatei ausführen
Vielen Dank für den Code. Ich habe gestern Abend damit einiges versucht. Aber nicht so hinbekommen damit es klappt. Ich habe PS1-Dateien jetzt mit Powershell 7 für "immer" verknüpft und damit laufen die einzigen zwei Skripte die ich habe wieder. Das habe ich mit dieser Anleitung hinbekommen:
https://www.heise.de/tipps-tricks/Windo ... &hgf=false
https://www.heise.de/tipps-tricks/Windo ... &hgf=false
- Holgi
- Guru
- Beiträge: 3342
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 429 Mal
- Danke erhalten: 582 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
bei 2 Scripten ist das sicherlich ok.
Bei sehr vielen PS-Scripten und wenn man grds. die Execution-Policy nicht von Restricted auf etwas anderes ändern möchte, bietet sich noch diese Methode an:
dein Powershell Script, nennen wir es mal John22.ps1 und dieses kleine Batch Datei zusammen in einem Ordner ablegen. Wichtig dabei: dem cmd-Script den gleichen Namen geben, wie dem PS-Script:
John22.cmd
dann einfach durch Doppelklick auf John22.cmd das Powershell Script starten.
Vorteil: der Inhalt des cmd-Scripts muss nicht geändert werden; Nachteil (wenn´s denn einer ist: der Name muss angepasst werden)
Bei sehr vielen PS-Scripten und wenn man grds. die Execution-Policy nicht von Restricted auf etwas anderes ändern möchte, bietet sich noch diese Methode an:
dein Powershell Script, nennen wir es mal John22.ps1 und dieses kleine Batch Datei zusammen in einem Ordner ablegen. Wichtig dabei: dem cmd-Script den gleichen Namen geben, wie dem PS-Script:
John22.cmd
Code: Alles auswählen
@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
Vorteil: der Inhalt des cmd-Scripts muss nicht geändert werden; Nachteil (wenn´s denn einer ist: der Name muss angepasst werden)
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- DK2000
- Legende
- Beiträge: 10240
- Registriert: 03.04.2018, 00:07
- Hat sich bedankt: 238 Mal
- Danke erhalten: 737 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Gut, würde auch gehen, aber zwei Instanzen von PowerShell muss man da auch nicht unbedingt starten.
Aber beide Versionen sollten funktionieren. Keine Ahnung, was da bei John22 nicht geklappt hat, kann ich nicht sagen. Hätte man wissen müssen, das da nicht klappt. Eventuell böse Leerzeichen im Pfad. Oder irgendetwas anderes.
Aber beide Versionen sollten funktionieren. Keine Ahnung, was da bei John22 nicht geklappt hat, kann ich nicht sagen. Hätte man wissen müssen, das da nicht klappt. Eventuell böse Leerzeichen im Pfad. Oder irgendetwas anderes.
- Holgi
- Guru
- Beiträge: 3342
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 429 Mal
- Danke erhalten: 582 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
wäre schön, wenn @John22 es zumindest mal probieren würde. Bei mir funzt das so seit Jahren.
Das mit den zwei Instanzen von PowerShell habe ich jetzt nicht verstanden. Bei mir läuft einfach das PS-Script ab mit erhöhten Rechten.
Das mit den zwei Instanzen von PowerShell habe ich jetzt nicht verstanden. Bei mir läuft einfach das PS-Script ab mit erhöhten Rechten.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- DK2000
- Legende
- Beiträge: 10240
- Registriert: 03.04.2018, 00:07
- Hat sich bedankt: 238 Mal
- Danke erhalten: 737 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Ach so, ja, am Ende das RunAs überlesen. Du startest eine Instanz von der PowerShell und in dieser startest Du eine zweite Instanz vom PowerShell mit Adminrechten. In dem Falle geht das nicht anders. Aber theoretisch müsste da auch mit einer Instanz gehen. Ne, geht nicht. Müsste man mit sudo arbeiten.
- g-force
- Elite
- Beiträge: 2818
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 427 Mal
- Danke erhalten: 449 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Ich arbeite mittlerweile viel mit Powershell in einer Unattend-Installationsumgebung innerhalb MDT und 300 Clients/Tag. Der grundlegende Aufruf des (steuenden) PS-Scripts erfolgt aber tatsächlich immernoch über CMD:
Da die Clients (Win10/11) bis Powershell 5.1 kompatibel sind, funktioniert das.
Was ich nicht weiß: Kann man gezielt eine bestimmte PS-Version aufrufen?
Code: Alles auswählen
:: PowerShell-Skript ausführen
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "\\server\netdrive$\Scripts\SteuerungsScript.ps1" -WindowStyle Maximized
Was ich nicht weiß: Kann man gezielt eine bestimmte PS-Version aufrufen?
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
- DK2000
- Legende
- Beiträge: 10240
- Registriert: 03.04.2018, 00:07
- Hat sich bedankt: 238 Mal
- Danke erhalten: 737 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Wüsste nicht, dass da noch was geht. Gibt ja nur noch die 5.1 und die 7.x. Und der Schalter "-version" hat da keine richtige Bedeutung mehr. Solange nicht die 2.0 installiert ist, geht "-version 2.0". Aber das ist ja dann auch Geschichte. Gibt dann halt nur noch das:
https://learn.microsoft.com/en-us/power ... rshell-7.5
Aber damit verhindert man höchstens, dass ein Skript für die 5.1 in der 7.x ausgeführt wird. Umgekehrt geht es aber nicht.
Und ja, gibt da mehrere Möglichkeiten, PowerShell Skripte übe eine Batch zu starten. Muss man ausprobieren, welche Methode am besten zu seien Szenario passt. Verwende ja auch gerne gsudo, um ein Skript über einen Batch mit Adminrechten zu starten. Windows bringt zwar jetzt wohl sein eigenes sudo mit. Aber das habe ich da noch nicht weiter getestet.
https://learn.microsoft.com/en-us/power ... rshell-7.5
Aber damit verhindert man höchstens, dass ein Skript für die 5.1 in der 7.x ausgeführt wird. Umgekehrt geht es aber nicht.
Und ja, gibt da mehrere Möglichkeiten, PowerShell Skripte übe eine Batch zu starten. Muss man ausprobieren, welche Methode am besten zu seien Szenario passt. Verwende ja auch gerne gsudo, um ein Skript über einen Batch mit Adminrechten zu starten. Windows bringt zwar jetzt wohl sein eigenes sudo mit. Aber das habe ich da noch nicht weiter getestet.
- g-force
- Elite
- Beiträge: 2818
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 427 Mal
- Danke erhalten: 449 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Letztendlich geht es ja nur darum, daß die Ausführung von PS-Scripten unter Windows "ab Werk" gesperrt ist, es kommt mindestens eine Abfrage zur Ausführung, eher eine Sperre. Man kann das "global" über Richtlinien erlauben oder im Einzelfall über eine CMD (mit Parametern) erlauben/erzwingen.
Einige meiner (mithilfe ChatGPT) erstellten PS-Scripte funktionierten unter einem Standard-Windows nicht, da PS 7 nicht vorhanden war. Da sollte man dann drauf achten. PS 5.1 geht auf Win10/11 immer.
Einige meiner (mithilfe ChatGPT) erstellten PS-Scripte funktionierten unter einem Standard-Windows nicht, da PS 7 nicht vorhanden war. Da sollte man dann drauf achten. PS 5.1 geht auf Win10/11 immer.
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/PzsffQNWU
Re: Powershell in Batchdatei ausführen
Es hat geklappt. Aber es wird Powershell 1 benutzt. Powershell 2 ist in den Windows Features deaktiviert. Ich habe mir aber vorgenommen Powershell 7.5 zu benutzen. So habe ich in der CMD-Datei zweimal "powershell.exe" durch "pwsh.exe" ersetzt.Holgi hat geschrieben: 15.08.2025, 17:15 bei 2 Scripten ist das sicherlich ok.
Bei sehr vielen PS-Scripten und wenn man grds. die Execution-Policy nicht von Restricted auf etwas anderes ändern möchte, bietet sich noch diese Methode an:
dein Powershell Script, nennen wir es mal John22.ps1 und dieses kleine Batch Datei zusammen in einem Ordner ablegen. Wichtig dabei: dem cmd-Script den gleichen Namen geben, wie dem PS-Script:
John22.cmddann einfach durch Doppelklick auf John22.cmd das Powershell Script starten.Code: Alles auswählen
@ECHO OFF PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
Vorteil: der Inhalt des cmd-Scripts muss nicht geändert werden; Nachteil (wenn´s denn einer ist: der Name muss angepasst werden)
- Holgi
- Guru
- Beiträge: 3342
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 429 Mal
- Danke erhalten: 582 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
super! Danke für die Rückmeldung!
Also dann:
Also dann:
Code: Alles auswählen
@ECHO OFF
pwsh.exe -NoProfile -Command "& {Start-Process pwsh.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- DK2000
- Legende
- Beiträge: 10240
- Registriert: 03.04.2018, 00:07
- Hat sich bedankt: 238 Mal
- Danke erhalten: 737 Mal
- Gender:
Re: Powershell in Batchdatei ausführen
Nein. Das ist PowerShell 5.1. Microsoft hat nie das v1.0 im Pfad oder die 1 in .ps1 geändert. PowerShell 7.5 bringt auch nur eine Handvoll eigener Module mit sich, Die meisten Module werden auch aus dem v1.0 Verzeichnis verwendet. Und nicht vergessen, dass die 7.5 nicht in jeder Hinsicht abwärtskompatibel zur 5.1 ist. Einige cmdlets fehlen ganz oder wurden durch andere cmdlets ersetzt, so dass nicht jedes Skript wie erwartet in der 7.5 läuft. Das meiste wird gehen, aber eignes halt nicht.