Abrufen des aktuellen Standorts des PowerShell-Skripts
-
Verwenden des Cmdlet
Split-Path
, um den aktuellen Speicherort des PowerShell-Skripts abzurufen -
Verwenden der Variablen
$PSScriptRoot
, um den aktuellen Speicherort des PowerShell-Skripts abzurufen - Abrufen des Arbeitsverzeichnisses in Windows PowerShell zum Abrufen des aktuellen Speicherorts des PowerShell-Skripts
Wann immer wir auf ein gemeinsames Modul oder Skript verweisen müssen, möchten wir Pfade relativ zur aktuellen Skriptdatei verwenden. Auf diese Weise kann das Skript immer andere Skripte in der Bibliothek finden.
In diesem Artikel werden wir verschiedene Möglichkeiten besprechen, um den aktuellen Speicherort des ausgeführten PowerShell-Skripts abzurufen.
Verwenden des Cmdlet Split-Path
, um den aktuellen Speicherort des PowerShell-Skripts abzurufen
Vor PowerShell 3 gab es keine bessere Möglichkeit, die Eigenschaft MyInvocation.MyCommand.Definition
mit dem Cmdlet Split-Path
abzufragen.
Split-Path -Parent $($global:MyInvocation.MyCommand.Definition)
Das Cmdlet Split-Path
wird mit dem Parameter -Parent
verwendet, um das aktuelle Verzeichnis des ausgeführten Skripts zurückzugeben.
Beachten Sie, dass dies nur funktioniert, wenn Sie die obige Syntax in eine gespeicherte PowerShell-Datei (.ps1
) einfügen. Wenn Sie die obige Syntax in der Befehlszeile ausführen, wird eine Null
-Ausnahme zurückgegeben.
Es ist auch erwähnenswert, dass das Ausführen der obigen Syntax in PowerShells Integrated Scripting Environment (ISE) als Auswahl (Run as a Selection oder Drücken von F8) eine ParameterArgumentValidationErrorNullNotAllowed
oder eine Null-Ausnahme auslöst.
Eine einfache Lösung, um das Problem zu beheben, besteht darin, die Variable $psISE
aufzurufen und die Eigenschaft CurrentFile.FullPath
abzurufen, und von dort aus können Sie den aktuellen Speicherort des Skripts abrufen. Denken Sie daran, dass diese Syntax am besten beim Testen in der PowerShell ISE verwendet wird.
Split-Path $psISE.CurrentFile.FullPath
Verwenden der Variablen $PSScriptRoot
, um den aktuellen Speicherort des PowerShell-Skripts abzurufen
Wenn Sie PowerShell Version 3 oder höher ausführen, wurde eine automatische Variable eingeführt, um das aktuelle Datei- oder Modulverzeichnis zu speichern.
Die Variable $PSScriptRoot
gibt den Wert des Verzeichnisses des laufenden Skripts zurück.
$PSScriptRoot
Abrufen des Arbeitsverzeichnisses in Windows PowerShell zum Abrufen des aktuellen Speicherorts des PowerShell-Skripts
Nachdem wir nun besprochen haben, wie Sie den aktuellen Speicherort im Skript erhalten, würde es nicht schaden zu lernen, wie Sie das aktuelle Arbeitsverzeichnis unseres Skripts abrufen.
In Windows PowerShell v2 enthält die Variable $ExecutionContext
die Eigenschaft EngineIntrinsics
. Sie können diese Variable und Eigenschaft verwenden, um die Ausführungsobjekte zu finden, die für Cmdlets verfügbar sind, einschließlich des aktuellen Arbeitsverzeichnisses des ausgeführten Windows PowerShell-Skripts.
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath('.\')
Wenn Sie jedoch die neueste Version von Windows PowerShell ausführen, wurde zur Vereinfachung ein separates Cmdlet eingeführt. Wir können das Cmdlet Get-Location
verwenden und die Eigenschaft Path
aufrufen, um das aktuelle Arbeitsverzeichnis des Skripts abzurufen.
(Get-Location).Path
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn