Abrufen des aktuellen Standorts des PowerShell-Skripts

  1. Verwenden des Cmdlet Split-Path, um den aktuellen Speicherort des PowerShell-Skripts abzurufen
  2. Verwenden der Variablen $PSScriptRoot, um den aktuellen Speicherort des PowerShell-Skripts abzurufen
  3. Abrufen des Arbeitsverzeichnisses in Windows PowerShell zum Abrufen des aktuellen Speicherorts des PowerShell-Skripts
Abrufen des aktuellen Standorts 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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn