2015-12-14 69 views
1

林用PowerShell的挑戰掙扎調用,設置如下:PowerShell的 - 包括名爲.ps1文件 - 從其他文件夾

在C:我有ReInstall.ps1 PowerShell腳本\ update文件夾,將嘗試另一個驅動器上運行的文件夾中的腳本:

q:\test\install.ps1 

在q:\ test文件夾,我有callled Install.ps1一個PowerShell文件,試圖包括所謂InstallFunctions.ps1

. .\installfunctions.ps1 
另一個PS文件

這兩個安裝ps文件在從q:\ test \文件夾執行時很好地工作。

但是,如果我嘗試從c:\ Update文件夾運行ReInstall.ps1腳本,它很好地啓動q:\ install.ps1,但因爲無法找到Installfunctions.ps1而失敗。

它試圖在c:\ update文件夾中找到InstallFunctions.ps1,而不是q:\ test文件夾。

術語'。\ installfunctions.ps1'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。 檢查名稱的拼寫,或者如果包含路徑,請驗證路徑>是否正確,然後重試。

由於安裝ps文件位於ISO文件中,並且必須在任何情況下都能正常工作,所以我無法更改它們。所以我必須找出一種方法讓Install.ps1相信它從q:\ test文件夾運行。

回答

1

你必須找回這樣的腳本文件夾(PS 2.0):

$scriptPath = Split-Path $MyInvocation.MyCommand.Definition 

. "$scriptPath\installfunctions.ps1" 
#or . (Join-Path $scriptPath "installfunctions.ps1") 

在PS 3.0 $PSScriptRoot擁有您所需要的信息:

. "$PSScriptRoot\installfunctions.ps1" 
#or . (Join-Path $PSScriptRoot "installfunctions.ps1") 
+0

十分感謝 - 它可以很好地:-) – ThomasE

相關問題