2011-07-13 18 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