2011-08-12 53 views
2

我試圖在PowerGui 3.0中點源腳本文件,但我得到的是;dot-source failing oin powergui


術語」。\ PowerShell.Common.ps1' 沒有被識別爲 cmdlet,函數,腳本文件或可操作的程序的名稱。檢查名稱的拼寫,如果包含路徑,請確認路徑爲 正確,然後再試一次。在 d:\ TFS \的SharePoint \開發\部署\ AutoSPInstaller \ SP2010 \ AutoSPInstaller \ AutoSPInstallerFunctionsCustom.ps1:6 字符:31 + \ PowerShell.Common.ps1 < < < < + CategoryInfo:ObjectNotFound: (。 \ PowerShell.Common.ps1:字符串)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException


而隨後的PowerGUI不提供我的腳本函數中所述文件 - 在父腳本上下文敏感列表。

文件「PowerShell.Common.ps1」是在同一目錄AutoSPInstallerFunctionsCustom.ps1 謝謝您的幫助

回答

5

爲點源來自PowerGUI的命令行的文件,確保您的當前工​​作目錄在腳本的目錄中。你可以在PowerGUI的命令行輸入$PWD來檢查。

要從腳本引用其他腳本,你這樣做:

# Get the current script's directory 
$MyDir = Split-Path $MyInvocation.MyCommand.Definition 

# Dot-source the external script by using the current script's directory 
. "$MyDir\ScriptName.ps1" 

獲取腳本目錄確保即使當前工作目錄是不一樣的腳本的目錄,你會能夠引用文件相對於腳本的位置。

4

@Rynant指出問題是你需要引用腳本的目錄而不是你當前的目錄。但是,重要的是要注意他的代碼解決方案只是部分正確的;其實是否工作取決於你在哪裏調用它!

一個更強大的解決方案是這樣的:

function Get-ScriptDirectory 
{ 
    Split-Path $script:MyInvocation.MyCommand.Path 
} 

碰巧,我只是寫了詳細的討論分析這個非常正確獲取腳本目錄中的另一個太問題點。我將提供this link,而不是重複我冗長的回答(包含測試車輛和結果矩陣)。

0

當您從PowerGUI中瀏覽到正在使用的腳本時,會出現此問題。

而不是將調用路徑更改爲其他腳本,您可能更願意現場運行腳本,即將$PWD設置爲腳本的目錄。這很容易通過在PowerGUI中通過Windows shell在的Windows資源管理器中通過右鍵單擊上下文菜單使用來打開腳本來完成。