Powershell komisches Verhalten mit Systemvariablen
Hallo zusammen,
mit ist heute ein Problem untergekommen, das ich nicht so richtig nachvollziehen kann. Ich hatte in einem administrativen powershell-Fenster einen offline Domänenjoin (wobei es nicht um diesen geht!) durchführen wollen:
Das führt zu einem Fehler, offenbar klappt die Auflösung der Variable systemroot nicht richtig und djoin findet die Windows-Installation nicht.
Starte ich hingegen eine cmd.exe funktioniert die Zeile (logisch):
ebenso funktioniert natürlich folgendes in Powershell:
Unter folgendem Link: https://www.dtonias.com/offline-domain-join-active-directory/ gibt es nun den Hinweis, die Zeile in Powershell wie folgt zu ändern:
das tatsächlich funktioniert.
Nur warum ist das so? Ich finde dazu nichts dokumentiert (nichts bei djoin, Powershell-Umgebungsvariablen)! Hat jemand einen Idee?
Grüße
lcer
mit ist heute ein Problem untergekommen, das ich nicht so richtig nachvollziehen kann. Ich hatte in einem administrativen powershell-Fenster einen offline Domänenjoin (wobei es nicht um diesen geht!) durchführen wollen:
PS C:\tmp> djoin /requestODJ /loadfile C:\PC.txt /windowspath %systemroot% /localos
Starte ich hingegen eine cmd.exe funktioniert die Zeile (logisch):
C:\tmp> djoin /requestODJ /loadfile C:\PC.txt /windowspath %systemroot% /localos
PS C:\tmp> djoin /requestODJ /loadfile C:\PC.txt /windowspath $env:systemroot /localos
Unter folgendem Link: https://www.dtonias.com/offline-domain-join-active-directory/ gibt es nun den Hinweis, die Zeile in Powershell wie folgt zu ändern:
PS C:\tmp> djoin --% /requestODJ /loadfile C:\RODC.txt /windowspath %systemroot% /localos
Nur warum ist das so? Ich finde dazu nichts dokumentiert (nichts bei djoin, Powershell-Umgebungsvariablen)! Hat jemand einen Idee?
Grüße
lcer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3337656560
Url: https://administrator.de/forum/powershell-komisches-verhalten-mit-systemvariablen-3337656560.html
Ausgedruckt am: 08.04.2025 um 23:04 Uhr
2 Kommentare
Neuester Kommentar
Servus Icer.
Das Stop-Parsing-Token
https://ss64.com/ps/stop-parsing.html
Grüße Uwe
Nur warum ist das so?
Weil beim Token --% alles was dahinter kommt nicht mehr durch die Powershell geparst wird, also alles was dahinter steht so ohne Änderung an den Befehl übergeben wird ohne das Variablenexpansion oder Escaping etc. nach PS Regeln stattfinden, Außnahme sind Systemvariablen nach %var% Syntax:Das Stop-Parsing-Token
https://ss64.com/ps/stop-parsing.html
Wenn ein Stop-Parsing-Token auftritt, behandelt PowerShell die verbleibenden Zeichen in der Zeile als Literal. Die einzige Interpretation, die sie ausführt, besteht darin, Werte für Umgebungsvariablen zu ersetzen, die standardmäßige Windows Notation verwenden, z%USERPROFILE%. B. .
Grüße Uwe