Powershell: PSScriptRoot als SYSTEM Benutzer
Hallo Community
Ich habe ein Powershell Script, welches als SYSTEM Benutzer ausgeführt wird.
Nun funktioniert die $PSScriptRoot Variable als SYSTEM Benutzer nicht. Wird das Powershell Skript als Benutzer oder Administrator ausgeführt, dann funktioniert diese Variable.
Wie kann ich diese $PSScriptRoot Variable so definieren, dass diese auch als SYSTEM Benutzer läuft?
Im Voraus vielen Dank
Ich habe ein Powershell Script, welches als SYSTEM Benutzer ausgeführt wird.
Nun funktioniert die $PSScriptRoot Variable als SYSTEM Benutzer nicht. Wird das Powershell Skript als Benutzer oder Administrator ausgeführt, dann funktioniert diese Variable.
Wie kann ich diese $PSScriptRoot Variable so definieren, dass diese auch als SYSTEM Benutzer läuft?
Im Voraus vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 861147195
Url: https://administrator.de/contentid/861147195
Ausgedruckt am: 19.11.2024 um 06:11 Uhr
7 Kommentare
Neuester Kommentar
Moin,
grundsätzlich funktioniert sie auch dort.
Ich nehme an du startest das Skript als geplanten Task? Wie genau sieht dein Aktionsreiter denn aus?
So funktioniert es auf jeden Fall:
Gruß Thomas
grundsätzlich funktioniert sie auch dort.
Ich nehme an du startest das Skript als geplanten Task? Wie genau sieht dein Aktionsreiter denn aus?
So funktioniert es auf jeden Fall:
Programm starten | "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" |
Argumente | -File "C:\Pfad\zum\Skript.ps1" |
Gruß Thomas
Servus
Das gehört wohl eher in die Kategorie "Sagen und Mythen" , guckst du
Variante A mit psexec Script als SYSTEM ausgeführt:
Und das ganze auch als Task
Fazit: Works as designed .
Alternativ zu $psscriptroot kommst du auch immer so an den Pfad des Skripts (ab PS 3.0)
oder ab < PS 3.0
Aber Achtung mit dem letzeren innerhalb von Funktionen, dort hat dieser Befehl nicht den gewünschten Inhalt.
Grüße Uwe
Zitat von @Ralus67:
Hallo Community
Ich habe ein Powershell Script, welches als SYSTEM Benutzer ausgeführt wird.
Nun funktioniert die $PSScriptRoot Variable als SYSTEM Benutzer nicht. Wird das Powershell Skript als Benutzer oder Administrator ausgeführt, dann funktioniert diese Variable.
Hallo Community
Ich habe ein Powershell Script, welches als SYSTEM Benutzer ausgeführt wird.
Nun funktioniert die $PSScriptRoot Variable als SYSTEM Benutzer nicht. Wird das Powershell Skript als Benutzer oder Administrator ausgeführt, dann funktioniert diese Variable.
Das gehört wohl eher in die Kategorie "Sagen und Mythen" , guckst du
Variante A mit psexec Script als SYSTEM ausgeführt:
Und das ganze auch als Task
Fazit: Works as designed .
Wie kann ich diese $PSScriptRoot Variable so definieren, dass diese auch als SYSTEM Benutzer läuft?
Die funktioniert ohne irgendeine Änderung, aber diese spezielle Variable ist nur gefüllt wenn sie aus einem Skript heraus verwendet wird. Auf einer interaktiven Konsole ist diese leer.Alternativ zu $psscriptroot kommst du auch immer so an den Pfad des Skripts (ab PS 3.0)
Split-Path $PSCommandPath
Split-Path $MyInvocation.MyCommand.Path
Grüße Uwe
Zitat von @Ralus67:
Nun funktioniert die $PSScriptRoot Variable als SYSTEM Benutzer nicht. Wird das Powershell Skript als Benutzer oder Administrator ausgeführt, dann funktioniert diese Variable.
Natürlich funktioniert PSScriptRoot auch als System. Verwende uch schon seit Jahren und gab nie Probleme damit.
Wir der Name schon sagt geht's halt nur in einem Script.
Willst du dein Problem nicht etwas genauer beschreiben?
EDIT:
Ach! Hast du ja eh schon. In der Commandline des STask noch ergänzen:
Powershell -executionpolicy Bypass -file ...
Hat sich bewährt.
Grüße!
Zitat von @Ralus67:
Der Aufgabenplaner hab ich angepasst. Leider funktioniert es immer noch nicht. Die Variable wird nicht erkannt. Hättest du allenfalls eine Idee? Ev. können wir kurz eine Remote Session starten, so dass du das bei mir direkt siehst.
Hast du den Post von @colinardo überhaupt mal gelesen?Der Aufgabenplaner hab ich angepasst. Leider funktioniert es immer noch nicht. Die Variable wird nicht erkannt. Hättest du allenfalls eine Idee? Ev. können wir kurz eine Remote Session starten, so dass du das bei mir direkt siehst.
Die Variable funktioniert, das kannst du auch leicht testen, indem du statt deinem Skript folgendes laufen lässt:
"`$PSScriptRoot = $PSScriptVariable" | Out-File "$PSScriptRoot\test.log"
Mit anderen Worten: Es muss an dem Inhalt deines Skripts liegen, dass da irgendetwas nicht so funktioniert, wie du dir das vorstellst. Da du uns dein Skript bislang nicht offenbart hast, ist derzeit keine weitere Hilfestellung möglich.
Gruß Thomas