我是PowerShell的新手,在定義其他文件中「包含」的某些實用程序腳本時遇到了一些問題;問題是關於路徑。讓我用一個簡單的例子來解釋這個問題:在PowerShell中正確引用腳本
想象一下,你有一些名爲utility.ps1的實用程序腳本位於/ tools下,並且你想從位於/ build下的build.ps1中調用它。現在想象一下utility.ps1調用一個名爲「utility2.ps1」的文件夾中的其他實用程序腳本。所以,
utility.ps1:
[...]
.".\utility2.ps1"
[...]
build.ps1:
[...]
."..\tools\utility.ps1"
[...]
這裏的問題是,從構建打電話時從這個最後utility.ps1然後一個用於utility2.ps1,powershell試圖從當前目錄(build)加載utility2.ps1而不是工具目錄。
我現在的解決方法是pushd .
打電話之前和popd
之後,但它聞起來不好,我知道;另一方面,如果有一天我將腳本移動到其他位置,我需要更新所有使用移動腳本的腳本......一團糟。
所以,我做的事情非常錯誤;什麼是適當的這樣做,使客戶端腳本不知道和「效用」腳本位置獨立?
'$ PSScriptRoot' – PetSerAl
能否請你解釋一下?我已經看到這個鏈接:http://stackoverflow.com/questions/6874779/powershell-include-another-script-that-has-includes,但要記住,我有一些間接的依賴關係,我不知道,從任何實用程序腳本中,$ PSScriptRoot中存儲了什麼值,所以我不能假定我應該移動到父目錄的多少個步驟等。 – Luis
** utility.ps1 **:'。「$ PSScriptRoot \ utility2.ps1」' ,** build.ps1 **:'。「$ PSScriptRoot \ .. \ tools \ utility.ps1」'。 – PetSerAl