2011-07-13 17 views
1

如何在腳本中創建命名空間或「提供程序」而無需編寫任何C#或使用Windows Box中尚未包含的任何東西? - 或者說,我可以通過腳本的名稱來引用腳本中的變量嗎?我想避免點源生成PoSH腳本時發生衝突。 Set-Variable cmdlet沒有提供任何關於接下來的位置的線索,有沒有可能創建提供程序的cmdlet以及爲您完成的所有框架?目前我正在使用「全局」(ick)變量列表來跟蹤我定義的所有值,基本上我正在嘗試構建一個庫,在這種情況下,庫提供數據值/常量。打破全局的Powershell命名空間限制

回答

2

您可以在被調用的腳本中檢查$ myinvocation以查找腳本名稱。

聽起來好像你可以在主腳本中實現一種僞命名空間,方法是將變量列表設置爲哈希表的哈希表,然後在主腳本中將每個值引用爲$ vars.scriptname.scriptvariable 。

+0

我喜歡你的想法@mjolinor。我不是一個散列表大師,我希望找到一種機制,像提供者僞裝成一個名稱空間,或者使用散列表,因爲它們對於非powershell afficionados都很容易使用。 我在Python中生成PoSH,所以我可以將點源文件轉換爲散列哈希,並嘗試使用後者。 –

+0

在這種情況下使用散列表的一個優點是,當向父範圍內的散列表添加元素時,不必顯式限定它的範圍。 – mjolinor

+0

你可能想要考慮的其他東西是在被調用的腳本中使用here-strings來填充你的值和常量,然後使用convertfrom-stringdata將它們轉換爲散列表,以便將這些值拉回到主腳本中。 – mjolinor