Frage zur Powershell
Hallo Gemeinde,
warum funktioniert das nicht:
C:\Users\Administrator>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Program Files\Scripte\Datenbackup.ps1"
C:\Program : Die Benennung "C:\Program" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den
Vorgang.
In Zeile:1 Zeichen:1
+ CategoryInfo : ObjectNotFound: (C:\Program:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Das hier aber schon ?
C:\Users\Administrator>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Programme\Scripte\Datenbackup.ps1"
Mit was für Anführungszeichen muss ich arbeiten, damit es funktioniert ?
In einem englischsprachigen System habe ich keinen Ordner Programme.
Danke und Grüße,
Henere
warum funktioniert das nicht:
C:\Users\Administrator>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Program Files\Scripte\Datenbackup.ps1"
C:\Program : Die Benennung "C:\Program" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den
Vorgang.
In Zeile:1 Zeichen:1
C:\Program Files\Scripte\Datenbackup.ps1
~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Program:String) , CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException
Das hier aber schon ?
C:\Users\Administrator>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "C:\Programme\Scripte\Datenbackup.ps1"
Mit was für Anführungszeichen muss ich arbeiten, damit es funktioniert ?
In einem englischsprachigen System habe ich keinen Ordner Programme.
Danke und Grüße,
Henere
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294399
Url: https://administrator.de/forum/frage-zur-powershell-294399.html
Ausgedruckt am: 07.04.2025 um 15:04 Uhr
13 Kommentare
Neuester Kommentar

Weil im Pfad Leerzeichen sind braucht die Powershell wenn man in einer Batch den Parameter -command benutzt Hochkommas den Pfad und das & sagt der Powershell das es ein Befehl bzw. Skriptblock ist
Andere Variante wenn es nur ein simples Skript ist was gestartet werden soll
Das geht alles 100%, Herr Frührentner...
Gruß jodel32
Ich verweise auch mal auf @colinardo's Kurzeinführung dazu
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
Wenn man dem Script Parameter übergeben möchte:
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
Man kann auch mehrere Scripte hintereinander ausführen lassen:
Weitere Parameter zeigt einem ein
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -Executionpolicy Bypass -command "&'c:\Program Files\Scripte\Datenbackup.ps1'"
Andere Variante wenn es nur ein simples Skript ist was gestartet werden soll
powershell.exe -Executionpolicy Bypass -File "c:\Program Files\Scripte\Datenbackup.ps1"
Das geht alles 100%, Herr Frührentner...
Gruß jodel32
Ich verweise auch mal auf @colinardo's Kurzeinführung dazu
Anleitung: Wie starte ich Powershell-Scripte
- Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
- Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl
Set-ExecutionPolicy RemoteSigned -Force
ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden:Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
- Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
- Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1"
Starten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:"C:\Pfad\script.ps1"
.\script.ps1
Starten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
powershell -?
in einer Konsole an.
Starten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
?? Die muss man nur einmalig anpassen,
die im Skript zu hinterlegen ist also völliger Blödsinn, denn wenn das Script bereits läuft bringt das setzen dieser nichts mehr ...!
Ab und zu mal die Doku lesen wäre nicht verkehrt, anstatt PS durch Trial & Error zu lernen.
die im Skript zu hinterlegen ist also völliger Blödsinn, denn wenn das Script bereits läuft bringt das setzen dieser nichts mehr ...!
Ab und zu mal die Doku lesen wäre nicht verkehrt, anstatt PS durch Trial & Error zu lernen.
Zitat von @114757:
Ab und zu mal die Doku lesen wäre nicht verkehrt, anstatt PS durch Trial & Error zu lernen.
Naja, ich habe mir PowerShell auch (mehr oder weniger) durch Trial & Error beigebracht und behaupte einfach mal, dass ich mittlerweile brauchbare Resultate damit erziehle (Wenn auch zugegebenermaßen manchmal mit mehr Codezeilen als es tatsächlich benötigen würde)Ab und zu mal die Doku lesen wäre nicht verkehrt, anstatt PS durch Trial & Error zu lernen.

Aber wenn ich einen Befehl benutze den ich nicht ganz verstehe, dann schaue ich zumindest erst mal in die Referenz um zu sehen was die Vorraussetzungen dafür sind in schreibe ihn nicht blind ist Skript ohne zu verstehen was er überhaupt bedeutet.
Die Executionpolicy "im Skript selber" zu setzen ist aber schon sehr sehr schräg das musst du zugeben
Wie soll sie ausgeführt werden wenn die Ausführung von Skripten auf einem unkonfigurierten Systen ja noch verboten ist...
Die Executionpolicy "im Skript selber" zu setzen ist aber schon sehr sehr schräg das musst du zugeben
Wie soll sie ausgeführt werden wenn die Ausführung von Skripten auf einem unkonfigurierten Systen ja noch verboten ist...

Zitat von @Henere:
Hat aber funktioniert, beim ersten Aufruf hat er gefragt, ob er das im System eintragen soll.
Hat aber funktioniert, beim ersten Aufruf hat er gefragt, ob er das im System eintragen soll.
Aber nur weil du die Execution Policy schon mal außerhalb eines Skriptes in einer Konsole ausgeführt hast, deswegen funktioniert das jetzt!
Es reicht die Policy einmalig für das System zu setzen.
Zitat von @Henere:
Einspruch euer Ehren, hatte ich niemals per Hand gemacht. Wie gesagt, die Abfrage kam beim ersten Probelauf des scriptes.
Richtig, und danach ist diese Zeile obsolet in dem Skript.Einspruch euer Ehren, hatte ich niemals per Hand gemacht. Wie gesagt, die Abfrage kam beim ersten Probelauf des scriptes.