2010-06-28 130 views
1

我有一個主腳本正在調用其他幾個腳本,我需要將其他腳本的變量加載到主腳本中,以便將它們轉儲到html文件中。我嘗試點播我正在調用的腳本,但沒有奏效,或者我做錯了什麼。任何幫助,將不勝感激。腳本的如何將變量從一個PowerShell腳本加載到另一個腳本?

示例部分:

.\get-cluster.ps1 

$MyReport += Get-CustomHeader "Clusters not in compliance : $($CapacityInfo.count) ($MyReport += Get-HTMLTable $capacityinfo 
$MyReport += Get-CustomHeaderClose 

變量$capacityinfo存在於get-cluster.ps1腳本

回答

4

除非你的GET-cluster.ps1文件在你的根目錄,點源看起來會是這樣的:

. .\Get-Cluster.ps1 

這將執行Get-Cluster.ps1腳本與調用者使其腳本級別變量可用在來電者。

+0

感謝您的回覆。我的腳本不在根目錄中,所以我可能不會調用它。謝謝您的幫助。 – jrob24 2010-06-28 22:53:33

3

點採購將實現您的目標。但是,這是一個模糊的設計,與PowerShell CmdLet開發指南相沖突。當然,你正在編寫一個腳本,而不是一個Cmdlet,但看起來你正在嘗試遵循給定你選擇的腳本文件名的PowerShell約定。

使用動詞Get意味着您正在檢索資源。因此,如果您有一個名爲Get-Cluster.ps1的腳本,那麼它應該檢索一個或多個Cluster實例。而不是考慮以下幾點:

$clusters = .\Get-Cluster.ps1 -NonCompliantOnly 

這仍然將讓您在設定的當前範圍變量沒有所有的魔法和點採購的不確定性。我並不想說服自己,但PowerShell團隊在創建一致性方面做得很好,我認爲當我們用自己的腳本/模塊/ cmdlets擴展PowerShell時,試圖延續這一點是非常有價值的。如果您在使用點源代碼在當前範圍內設置新變量或現有變量時遇到困難,那麼我鼓勵您找到一個新動詞。

有關更多信息,請參閱Cmdlet Verbs on MSDN

+0

好點,歡呼! – 2010-06-29 14:15:17

相關問題