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

Printed on: April 23, 2024 at 06:04 o'clock

Member: erikro
erikro Apr 29, 2019 at 07:02:21 (UTC)
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
Member: MarciMarc85
MarciMarc85 Apr 29, 2019 updated at 07:15:57 (UTC)
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 Apr 29, 2019 updated at 07:26:13 (UTC)
Goto Top
"PSScriptroot\environment.ps1"
Da fehlt das Dollarzeichen vor der Variablen und ein Punkt zum Dot-Sourcing ...
. "$PSScriptroot\environment.ps1"  
Member: erikro
erikro Apr 29, 2019 at 07:24:44 (UTC)
Goto Top
Moin,

. $psscriptroot\environment.ps1

hth

Erik
Member: Kraemer
Kraemer Apr 29, 2019 at 07:25:37 (UTC)
Goto Top
. (Join-Path -Path $PSScriptRoot -ChildPath "environment.ps1")  
Member: MarciMarc85
MarciMarc85 Apr 29, 2019 at 07:36:06 (UTC)
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"
Member: erikro
Solution erikro Apr 29, 2019 at 07:39:54 (UTC)
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
Solution 139374 Apr 29, 2019 updated at 08:05:40 (UTC)
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.