我有很多我爲長期項目編寫的powershell代碼;這些腳本執行各種各樣的功能,其中大部分功能都以某種方式依賴於項目範圍內的其他功能。目前,這個工作是由幾個包含許多函數的文件組成的。最初,爲了處理這些腳本,所有的腳本文件都是隨便點入環境中的。如何管理多文件Powershell模塊中腳本之間的依賴關係?
但是,我最近了解到Powershell 2.0引入了模塊,我想以這種方式部署這些腳本。由於模塊的內容全部加載在一起,我想分割我的文件,以便每個腳本都有自己的文件,以幫助源代碼管理。不過,我現在對腳本之間的關係有點不清楚。
我已經做了一些測試,並且似乎可以將每個函數的Export-ModuleMember命令移動到單個.ps1文件;這看起來更像是聲明他們自己的作用域的函數,如C#中的公共和私有範圍。但是,在這樣做之後,我的.psm1文件除此之外不包含任何內容:
Get-ChildItem -recurse $psScriptRoot | where { $_.Extension -eq ".ps1" } | foreach { . $_.FullName }
這看起來是否正確?所有的腳本都是源代碼的,所有的腳本都是在這個假設下互相引用的。他們應該使用相對於$ psScriptRoot的位置來引用對方嗎?
這兩種方式有什麼不同嗎?任何人都可以提供意見我還不太瞭解這些。
我有點做到這一點,但我將幾個類似功能於一體的腳本,而不是各自在自己的文件。 – JasonMArcher 2011-06-18 18:04:43