Powershell in Batchdatei ausführen

Deine Frage passt nicht in die anderen Bereiche, dann stelle sie hier.
Antworten
John22
Nachwuchs
Nachwuchs
Beiträge: 50
Registriert: 23.10.2013, 19:02
Hat sich bedankt: 4 Mal

Powershell in Batchdatei ausführen

Beitrag von John22 » 14.08.2025, 20:13

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

Powershell in Batchdatei ausführen

Beitrag von Tante Google » 14.08.2025, 20:13


Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10243
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 239 Mal
Danke erhalten: 737 Mal
Gender:

Re: Powershell in Batchdatei ausführen

Beitrag von DK2000 » 14.08.2025, 20:28

Code: Alles auswählen

@echo off
cd /d %~dp0
pwsh.exe -NoExit -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "& '%~dp0PowerShellkSkript.ps1'"
echo.
pause
Das wäre so mein Grundgerüst für solche Zwecke. .cmd und .ps1 befinden sich dabei im selben Verzeichnis.

John22
Nachwuchs
Nachwuchs
Beiträge: 50
Registriert: 23.10.2013, 19:02
Hat sich bedankt: 4 Mal

Re: Powershell in Batchdatei ausführen

Beitrag von John22 » 15.08.2025, 15:04

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

Benutzeravatar
Holgi
Guru
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

Beitrag von Holgi » 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.cmd

Code: Alles auswählen

@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
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)
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

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10243
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 239 Mal
Danke erhalten: 737 Mal
Gender:

Re: Powershell in Batchdatei ausführen

Beitrag von DK2000 » 15.08.2025, 17:30

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.

Benutzeravatar
Holgi
Guru
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

Beitrag von Holgi » 15.08.2025, 17:32

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.
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

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10243
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 239 Mal
Danke erhalten: 737 Mal
Gender:

Re: Powershell in Batchdatei ausführen

Beitrag von DK2000 » 15.08.2025, 17:56

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.

Benutzeravatar
g-force
Elite
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

Beitrag von g-force » 15.08.2025, 23:37

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:

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
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?
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

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10243
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 239 Mal
Danke erhalten: 737 Mal
Gender:

Re: Powershell in Batchdatei ausführen

Beitrag von DK2000 » 16.08.2025, 00:05

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.

Benutzeravatar
g-force
Elite
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

Beitrag von g-force » 16.08.2025, 02:54

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.
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

John22
Nachwuchs
Nachwuchs
Beiträge: 50
Registriert: 23.10.2013, 19:02
Hat sich bedankt: 4 Mal

Re: Powershell in Batchdatei ausführen

Beitrag von John22 » 16.08.2025, 19:15

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.cmd

Code: Alles auswählen

@ECHO OFF
PowerShell.exe -NoProfile -Command "& {Start-Process PowerShell.exe -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%~dpn0.ps1""' -Verb RunAs}"
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)
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.

Benutzeravatar
Holgi
Guru
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

Beitrag von Holgi » 16.08.2025, 20:41

super! Danke für die Rückmeldung!
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

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10243
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 239 Mal
Danke erhalten: 737 Mal
Gender:

Re: Powershell in Batchdatei ausführen

Beitrag von DK2000 » 16.08.2025, 21:54

John22 hat geschrieben: 16.08.2025, 19:15 Es hat geklappt. Aber es wird Powershell 1 benutzt.
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.

Antworten