marcimarc85
Goto Top

Powershell PSScriptroot Verständnissfrage

Hallo,

Ich bin davon ausgegangen , dass PSScriptRoot den aktuellen ordner als Pfad setzt. Anscheinend aber das Laufwerk.

Ich habe nämlich eine Powershell Datei mit lauter Variablen, die ich in andern Powershell Files , die sich aber im selben Ordner befinden laden möchte.

Setzte ich "PSScriptroot\environment.ps1" an den Anfang jedes Scripts. funktioniert das aber leider nicht.
kann ich denn den Ordner , in dem das Script ausgeführt wird, als Location festlegen?

Content-Key: 445876

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

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: erikro
erikro 29.04.2019 um 09:02:21 Uhr
Goto Top
Moin,

in der Systemvariablen $PSScriptRoot steht der volle Pfad auf das Powershellskript, in dem die Variable aufgerufen wird.

Zitat von @MarciMarc85:
Setzte ich "PSScriptroot\environment.ps1" an den Anfang jedes Scripts. funktioniert das aber leider nicht.
kann ich denn den Ordner , in dem das Script ausgeführt wird, als Location festlegen?

Was willst Du denn erreichen?

Liebe Grüße

Erik
Mitglied: MarciMarc85
MarciMarc85 29.04.2019 aktualisiert um 09:15:57 Uhr
Goto Top
Na ich habe ein Script "tuetwas.ps1" in dem etwas gemacht werden soll. die variablen, die in "tuetwas.ps1" verwendet werden, sind in "environment.ps1" definiert. beide Scripte legen im Selben Ordner.

bei Batch Scripten hab ich einfach "call %~dp0\environment.bat" zu beginn der Batch-Datei geschrieben um die definierten Variablen aus environment.bat im jeweiligen Script zu nutzen.
Das will ich jetzt in gleicher Weise mit Powershell erreichen.
Mitglied: 139374
139374 29.04.2019 aktualisiert um 09:26:13 Uhr
Goto Top
"PSScriptroot\environment.ps1"
Da fehlt das Dollarzeichen vor der Variablen und ein Punkt zum Dot-Sourcing ...
. "$PSScriptroot\environment.ps1"  
Mitglied: erikro
erikro 29.04.2019 um 09:24:44 Uhr
Goto Top
Moin,

. $psscriptroot\environment.ps1

hth

Erik
Mitglied: Kraemer
Kraemer 29.04.2019 um 09:25:37 Uhr
Goto Top
. (Join-Path -Path $PSScriptRoot -ChildPath "environment.ps1")  
Mitglied: MarciMarc85
MarciMarc85 29.04.2019 um 09:36:06 Uhr
Goto Top
Zitat von @139374:

"PSScriptroot\environment.ps1"
Da fehlt das Dollarzeichen vor der Variablen und ein Punkt zum Dot-Sourcing ...
> . "$PSScriptroot\environment.ps1"  
> 

. "$PSScriptRoot\environment.ps1"  

". : Die Benennung "\environment.ps1" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt"
Mitglied: erikro
Lösung erikro 29.04.2019 um 09:39:54 Uhr
Goto Top
Zitat von @MarciMarc85:
. "$PSScriptRoot\environment.ps1"  

". : Die Benennung "\environment.ps1" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt"

Dann ist sie nicht im selben Verzeichnis wie das Skript oder heißt anders.
Mitglied: 139374
Lösung 139374 29.04.2019 aktualisiert um 10:05:40 Uhr
Goto Top
Entweder es gibt das Script im selben Verzeichniss wie das Quelllscript nicht, du hast einen Schreibfehler, oder du testest das ganze ungespeichert in der ISE. Die Variable ist nur gefüllt wenn das Script auch gespeichert wurde.