我正在使用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
我做错了什么?
答案 0 :(得分:1)
运行脚本时,您应检查$ PSCommandPath的输出。当你调用时,它可能不指向C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker
:
Split-Path C:\Anwendungen\PowershellAddOn\Modules\PSScriptVersionChecker
您将获得C:\Anwendungen\PowershellAddOn\Modules
。
答案 1 :(得分:1)
$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