Split-Path -Path $ PSCommandPath -Parent

时间:2018-06-12 07:29:32

标签: powershell

我正在使用PowerShell Ver。 5.1.14393.2248 我的脚本位于路径:C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker

我希望获得父路径:C:\Anwendungen\PowershellAddOn\Modules。 我跑的时候:

$destination = Split-Path -Path $PSCommandPath -Parent
$destination 

我仍会获得C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker而不是C:\Anwendungen\PowershellAddOn\Modules

我做错了什么?

2 个答案:

答案 0 :(得分:1)

运行脚本时,您应检查$ PSCommandPath的输出。当你调用时,它可能不指向C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker

Split-Path C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker

您将获得C:\Anwendungen\PowershellAddOn\Modules

答案 1 :(得分:1)

阅读about_Automatic_Variables

  
$PSCommandPath
   Contains the full path and file name of the script that is being run. 
   This variable is valid in all scripts.
…

$PSScriptRoot
   Contains the directory from which a script is being run. 

   In Windows PowerShell 2.0, this variable is valid only in script modules
   (.psm1). Beginning in Windows PowerShell 3.0, it is valid in all scripts.

使用:

$destination = Split-Path -Path (Split-Path -Path $PSCommandPath -Parent) -Parent

或者,在Windows PowerShell 3.0及更高版本中:

$destination = Split-Path -Path $PSScriptRoot -Parent