jsysde
Goto Top

PS-Skript läuft nicht aus einem elevated cmd

Moin moin,

da es manchmal nicht ohne die guten alten Batchfiles geht, rufe ich aus einem solchen ein Powershell-Skript auf. Leider funktioniert das nur, wenn das Batchfile _nicht!_ in einem elevated prompt läuft, obwohl ich "Set-ExecutionPolicy Unrestricted" eingestellt habe...

Ok, hier die Langform:
Aus einem Batchfile (.cmd) heraus verschiebe ich mit robocopy Dateien, erstelle eine Dateiliste und rufe dann in einer Schleife (1x pro vorhandener Datei) ein Powershell-Skript auf, dass u.a. den Eigentümer der Dateien ermittelt.

robocopy benötigt elevated rights, um die NTFS-Attribute und damit den Eigentümer mitzunehmen, also starte ich das .cmd-File aus einem elevated prompt. Beim Aufruf des Powershell-Skripts aus dem .cmd-File heraus via 'powershell C:\scripts\test.ps1' erhalte ich dann die Fehlermeldung "File C:\scripts\test.ps1 cannot be loaded because the execution of scripts is disabled on this system."

Öffne ich eine Powershell mit elevated rights und führe das Powershell-Skript direkt aus, läuft es einwandfrei los. Starte ich das .cmd-File aus einem non-elevated prompt heraus, wird das Powershell-Skript ebenfalls klaglos aufgerufen, allerdings scheitert robocopy wg. den NTFS-Attributen.

Zusammengefasst:
- Set-ExecutionPolicy Unrestricted eingestellt
- Aufruf Powershell-Skript direkt klappt mit und ohne Elevation, sowohl aus der Powershell heraus als auch vom prompt via powershell .\test.ps1
- Aufruf Powershell-Skript aus einem .cmd-File heraus klappt _nicht_ im elevated prompt

Vielleicht stehe ich ja grad quer im Stall, aber ich finde keine Lösung. Achja, ich sitze an einem Windows 7 Pro 64Bit mit lokalen Adminrechten, UAC steht auf höchster Stufe. Um dem ganzen die Krone aufzusetzen: Auf einem Server 2008R2 ist das komplette Teil schon seit Wochen problemlos am Laufen (UAC eine Stufe niedriger), ich soll es nun nur um ein paar Features erweiteren und dachte mir: Hey, das machste mal lieber nicht auf dem Server, sondern auf deiner Maschine.

Jemand ne Idee hierzu?
Danke.

Cheers,
jsysde

Content-Key: 195455

Url: https://administrator.de/contentid/195455

Printed on: April 18, 2024 at 02:04 o'clock

Member: colinardo
colinardo Dec 06, 2012 updated at 09:25:07 (UTC)
Goto Top
Denke das die Execution-Policy bei Dir nur auf Userebene eingestellt ist.
Mach mal ein:
get-executionpolicy -list

dort kannst du sehen ob die Richtlinie für Scripts nur auf User- oder auch auf Machine-Ebene eingestellt ist.
ein...
Set-ExecutionPolicy -Scope LocalMachine -Policy Unrestricted
in einer elevated Powershell sollte dein Problem beheben...

Grüße Uwe
Member: jsysde
jsysde Dec 06, 2012 updated at 09:40:19 (UTC)
Goto Top
Moin Uwe,

made my day!
Danke, so viel zum Thema "quer im Stall". face-wink

Denke das die Execution-Policy bei Dir nur auf Userebene eingestellt ist.
Es war zwar anders herum, aber es hat mein Problem gelöst:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

Habe im Rahmen dessen auch gleich wieder auf RemoteSigned gestellt....

Cheers,
jsysde

EDIT:
Kurzer Nachtrag - das -Policy ist kein gültiger Parameter und muss weggelassen werden.
Member: 5t8d1e
5t8d1e Dec 07, 2012 at 15:23:48 (UTC)
Goto Top
Hallo Softmeister,

1. Frage wieso rufst du das PoShskript aus eine cmd auf, robocopy sollte doch auch unter PoSh laufen.
2. wieso nutzt du dann nicht die byPass option der powershell.exe?
powershell.exe -ExecutionPolicy Bypass

Dann klappt es auch.

Der Torsten
Member: colinardo
colinardo Dec 07, 2012 updated at 15:32:08 (UTC)
Goto Top
ähmm..... Schau bitte mal wer die Frage hier gestellt hat .... das war jsysde und nicht ich!
wie so oft gibt es unterschiedliche Wege zum Ziel, kommt halt auf die Umstände und Gegebenheiten an.
Thread ist gelöst also belassen wir's dabei...
face-wink Softmeister
Member: 5t8d1e
5t8d1e Dec 07, 2012 at 15:50:19 (UTC)
Goto Top
sir yes sir
happy WE
face-wink