打破全局、脚本的Powershell命名空间限制
如何在不编写任何 C# 或使用 Windows Box 中尚未包含的任何内容的情况下在脚本中创建命名空间或“提供程序”? - 或者说,我可以通过点源脚本的名称来引用脚本中的变量吗?我想避免在点采购生成的 PoSH 脚本时发生冲突。 Set-Variable cmdlet 没有提供任何关于下一步该往哪里看的线索,是否有一个 cmdlet 可以创建提供程序并为您完成所有框架?目前,我正在使用“全局”(ick)变量列表来跟踪我定义的所有值,基本上我正在尝试构建一个库,在这种情况下,该库提供数据值/常量。
How can I create namespaces or "providers" in a script without writing any C#, or using anything not already inside the Windows Box? - Alternately put, can I reference variables in a script by the name of the script I dot-sourced them from? I want to avoid clashes when dot sourcing a generated PoSH script.
Set-Variable cmdlet does not give any clues as to where to look next, is there perhaps a cmdlet to create providers with all the framework done for you? At the moment I am using a "global" (ick) variable-list to track all values I define, basically I am trying to build a library, and in this case, the library supplies data values/constants.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在被调用的脚本中检查 $myinspiration 来查找脚本名称。
听起来您可以通过使变量列表成为哈希表的哈希表来在主脚本中实现一种伪命名空间,然后每个值将在主脚本中引用为 $vars.scriptname.scriptvariable。
You can check $myinvocation within the called script to find the script name.
It sounds like you could implement a kind of pseudo-namespace in the main script by making your variable list a hash table of hash tables, and then each value would be referenced in the main script as $vars.scriptname.scriptvariable.