Powershell mit batch aufrufen

Mitglied: Manrique

Manrique (Level 1) - Jetzt verbinden

30.11.2020 um 21:50 Uhr, 455 Aufrufe, 9 Kommentare

Hallo an alle,

beim Aufruf aus PoserShell ISE funktioniert folgender Code fehlerfrei:

Beim Aufruf mittels batch mit dem Befehl powershell.exe -ExecutionPolicy Bypass -Command "& 'C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1'"
kommt trotz korrektem Pfad die Fehlermeldung:

This command cannot be run due to the error: The system cannot find the file specified.

Was ist hier falsch?

Vielen Dank für eure Hilfe

Manrique
Mitglied: 146707
146707 (Level 1)
30.11.2020, aktualisiert um 23:43 Uhr
C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1
Das ist der Ordner für 64bit Programme, wenn die Powershell selbst nicht in ihrer 64Bit-Variante aus der Cmd aufgerufen wird sieht der Prozess die dort hinterlegte Datei durch die Filesystem Redirection nicht, der 32Bit PS Prozess sieht dann stattdessen den Inhalt von c:\Program Files(x86) und dort findet er das PS-Skript natürlich nicht, ergo Fehlermeldung.
Bitte warten ..
Mitglied: mayho33
01.12.2020 um 02:10 Uhr
Von extern verwendest du besser:

powershell.exe -ExecutionPolicy Bypass -file "C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1"
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
01.12.2020, aktualisiert um 10:14 Uhr
Zitat von mayho33:

Von extern verwendest du besser:

powershell.exe -ExecutionPolicy Bypass -file "C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1"
Und was soll daran jetzt "besser" sein außer das es etwas kürzer ist? Macht genau das gleiche und Ergebnis ist es auch.

Noch was: Die PS Version 2.0 hatte damals sogar einen Bug mit dem -File Parameter dort waren damals keine Pfade mit Leerzeichen möglich und man musste sogar zwingend auf die Variante des TO ausweichen ;-) face-wink. Wenn da also noch ein altes Windows 7 ohne PS Update werkeln würde hätte das auch seine Berechtigung.
Bitte warten ..
Mitglied: mayho33
02.12.2020 um 11:01 Uhr
Zitat von 146707:

Zitat von mayho33:

Von extern verwendest du besser:

powershell.exe -ExecutionPolicy Bypass -file "C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1"
Und was soll daran jetzt "besser" sein außer das es etwas kürzer ist? Macht genau das gleiche und Ergebnis ist es auch.


Das bessere daran ist, dass der File-parameter genau dafür da ist.

Noch was: Die PS Version 2.0 hatte damals sogar einen Bug mit dem -File Parameter dort waren damals keine Pfade mit Leerzeichen möglich und man musste sogar zwingend auf die Variante des TO ausweichen ;-) face-wink. Wenn da also noch ein altes Windows 7 ohne PS Update werkeln würde hätte das auch seine Berechtigung.

Pfade mit Leerzeichen waren immer möglich! Man musste den String einfach nur zwischen Anführungszeichen stellen. Dann kannte sich das cmdlet auch aus. Das gibts auch bei PS7 noch. Pfade mit Leerzeichen von extern werden nicht erkannt.

Fehler:
Geht:
Selbst W7-Rechner haben keine PS v2. mehr, wenn halbwegs Updates gemacht wurden. ;-) face-wink
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
02.12.2020, aktualisiert um 11:13 Uhr
Zitat von mayho33:
Pfade mit Leerzeichen waren immer möglich! Man musste den String einfach nur zwischen Anführungszeichen stellen.
Nein, das der Pfad in Anführungszeichen stand ist klar das war er natürlich auch, so blöd bin ich natürlich nicht!
Fehler:
Geht:
Schon klar! Das war damals aber nicht der Fehler , der Fehler lag damals in der PS selbst! Der Parameter -File konnte bei einem Build definitiv nicht mit Leerzeichen auch in korrekt mir Anführungszeichen versehenen Pfaden umgehen. Deswegen war das obige ein temporärer Workaround dafür .

Selbst W7-Rechner haben keine PS v2. mehr, wenn halbwegs Updates gemacht wurden
Klar, aber darum ging es mir nicht, obige Anwendung war einfach eine nur eine gleichwertige Alternative zum Parameter -File nicht mehr und nicht weniger.
Bitte warten ..
Mitglied: mayho33
02.12.2020, aktualisiert um 11:21 Uhr
Zitat von 146707:

C:\Program Files\Folder\Folder Server\Data\Documents\pdfPrint.ps1
Das ist der Ordner für 64bit Programme, wenn die Powershell selbst nicht in ihrer 64Bit-Variante aus der Cmd aufgerufen wird sieht der Prozess die dort hinterlegte Datei durch die Filesystem Redirection nicht, der 32Bit PS Prozess sieht dann stattdessen den Inhalt von c:\Program Files(x86) und dort findet er das PS-Skript natürlich nicht, ergo Fehlermeldung.

Da muss ich dir widersprechen. Wenn du aus einem 32-Bit-Process heraus die Junktion nutzt um einen anderen Prozess aufzuführen, wird immer der "Architektur-naheste" Prozess gewählt.

junction - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: mayho33
02.12.2020, aktualisiert um 11:29 Uhr
Zitat von 146707:

Zitat von mayho33:
Selbst W7-Rechner haben keine PS v2. mehr, wenn halbwegs Updates gemacht wurden
Klar, aber darum ging es mir nicht, obige Anwendung war einfach eine nur eine gleichwertige Alternative zum Parameter -File nicht mehr und nicht weniger.

ja, OK! gleichwertig schon. die CMD, also %comspec% kann aber einfach nicht gut mit Apostroph, Hochkomma umgehen. Darum der "-File"-Parameter.

in Bash z.B. verwendet man deshalb ja auch den BackTick " ` ", wenn man ein Hochkomma braucht. Da steicgt die CMD aka Comspec aber total aus. ;-) face-wink
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
02.12.2020, aktualisiert um 11:32 Uhr
Zitat von mayho33:
ja, OK! gleichwertig schon. die CMD, also %comspec% kann aber einfach nicht gut mit Apostroph, Hochkomma umgehen. Darum der "-File"-Parameter.
Noch nie Probleme damit gehabt, macht der CMD gar nüscht.
in Bash z.B. verwendet man deshalb ja auch den BackTick " ` ", wenn man ein Hochkomma braucht. Da steicgt die CMD aka Comspec aber total aus. ;-) face-wink
Nö, in der Bash braucht es kein Backtick für Hochkommas wenn dann einen Backslash, ein Backtick leitet dort eine Subshell ein für ein Kommando ein. Da hast du wohl vollkommen die Umgebung verwechselt ;-) face-wink.
Bitte warten ..
Mitglied: mayho33
02.12.2020 um 11:32 Uhr
Zitat von 146707:

Zitat von mayho33:
ja, OK! gleichwertig schon. die CMD, also %comspec% kann aber einfach nicht gut mit Apostroph, Hochkomma umgehen. Darum der "-File"-Parameter.
Noch nie Probleme damit gehabt.
in Bash z.B. verwendet man deshalb ja auch den BackTick " ` ", wenn man ein Hochkomma braucht. Da steicgt die CMD aka Comspec aber total aus. ;-) face-wink
Nö In der Bash braucht es kein Backtick für Hochkommas, ein Backtick leitet dort eine Subshell ein für ein Kommando ein. Da hast du wohl die Umgebung verwechselt ;-) face-wink.


So unterschiedlich sind die Erfahrungen. Was solls! Der TO braucht ne Lösung :P
Bitte warten ..
Heiß diskutierte Inhalte
Internet
Kein Internet nach Windows 2019 Server Installation
gelöst ZygmundVor 1 TagFrageInternet25 Kommentare

Computer : HP ProLiant DL580 Gen7 , 4x CPU , 16 GB ECC Ram, 1 TB SAS Installation von - Windows 8 Server - ...

Windows 10
Vom Homeoffice auf lokale Dateien zugreifen
SayllesVor 1 TagFrageWindows 106 Kommentare

Guten Morgen, meine Frau ist im Homeoffice, ihr Arbeitgeber stellt ihr einen Access der unter Server 2016 lauft zur Verfügung. Dieser Remote zugriff funktioniert ...

Windows Server
GPO verschieben von Benutzern
gelöst AnGi1964Vor 1 TagFrageWindows Server10 Kommentare

Hallo in die Runde! Ich habe als Neuling hier gleich 2 Fragen und hoffe, das mir geholfen werden kann. 1. Ich habe bei einem ...

Outlook & Mail
Outlook 2019 stürzt bei Erhalt von Besprechungsanfrage ab
gelöst PhiltaerVor 1 TagFrageOutlook & Mail17 Kommentare

Hallo, ich habe ein ganz merkwürdiges Problem. Outlook 2019 stürzt beim Erhalt von Emails die Besprechungsanfragen enthält ab. Das Programm friert ein mit "Reagiert ...

Firewall
Kennt jemand Forcepoint Firewalls oder setzt diese sogar ein?
ZeroTrustVor 1 TagFrageFirewall2 Kommentare

Ich wäre interessiert an User Meinungen über diese Firewall Lösungen. Kenne ich absolut nicht und habe auch noch nie davon gehört, geschweige jemals damit ...

Router & Routing
Router Firewall gesucht
HamBamVor 1 TagFrageRouter & Routing9 Kommentare

Hallo zusammen, ich schaue mich für die Firma aktuell nach neuen Routern für unsere Außenstellen um. Aktuell haben wir da diese silbernen, bei Administratoren ...

Windows Server
Server 2019 - VM (DC) hängt sporadisch
zer0g2224Vor 1 TagFrageWindows Server13 Kommentare

Hallo liebe Kolleginnen und Kollegen, ich habe mal wieder eine Frage zu einem Problem: Eine VM (DC) bleibt im Betrieb sporadisch "hängen". Das äußert ...

Server-Hardware
MacOS Netzwerk für Kreativagentur
phil2goldVor 1 TagFrageServer-Hardware7 Kommentare

Grüße euch! Ich habe eine Kreativagentur, die überwiegend Social Media Content und Werbefilme produziert. In unserem neuen Büro möchte ich ein Netzwerk einrichten, in ...