【问题标题】:Configuration for PowerShell module created via .NET framework通过 .NET 框架创建的 PowerShell 模块的配置
【发布时间】:2016-02-29 00:07:25
【问题描述】:

当您希望在 C# 中创建 PowerShell 模块时能够配置依赖项时,最佳做法是什么?

我的具体情况是我通过 C# 代码创建的 PowerShell 模块将使用 WCF 服务。因此,服务的 URL 必须是客户端可以配置的。

对此有标准方法吗?或者这将是必须自定义实现的东西吗?

【问题讨论】:

  • Uri 参数添加到您的 cmdlet 并为其提供默认值(如果需要)。

标签: wcf powershell configuration module


【解决方案1】:

执行此操作的一种标准方法是允许将值作为参数提供或默认通过 PSCmdlet 的 GetVariableValue 读取特殊变量。这就是内置的Send-MailMessage cmdlet 的作用。如果没有提供服务器,它会读取变量 PSEmailServer。

【讨论】:

    【解决方案2】:

    我可能不明白你的问题。所以我会假设几个场景:

    1. 您的 PS 模块将始终使用相同的 WCF 端点。在这种情况下,您可以对模块中的 URL 进行硬编码
    2. 可供选择的端点数量有限,并且有一些算法或最佳实践可将端点与特定用户相关联,例如根据用户所在的部门或部门等在地理上最近的用户。
    3. 选择 URL 完全取决于最终用户的偏好。

    对于案例 #2,我建议您实施算法/最佳实践并将结果保存在某个地方 - 作为模块安装的一部分。

    对于案例 #3,使用环境变量、注册表设置或用户配置文件目录之一中的文件似乎是合理的。不过,可能比您将数据保存在何处更重要的是您为用户提供的用于更改设置的界面。例如,如果你使用了环境变量,告诉用户去控制面板、系统、高级、环境、用户变量、新建...,不如提供一个简单的 PS 函数来更改 URL 更不友好。事实上,我想说的是提供一个 cmdlet/函数来执行配置是我能想到的最接近“标准”的。

    【讨论】:

    • 谢谢。 #3 就是我所指的。这会比提供读取 WCF 相关设置的配置文件更好吗?
    • “更好”,我假设您的意思是“最佳实践”。我不知道那会是什么。此外,我猜没有明确的赢家。许多 PS 用户习惯于编辑他们的配置文件,因此配置文件似乎与此一致。更好的是,为用户提供一种将设置放入个人资料的方法。我使用别名 ep 来编辑我的个人资料,因此将设置放入个人资料意味着我仍然可以使用我的别名。但是,我仍然认为设置配置的 UX(用户体验)比实现更重要。除了隐藏实现之外,您还可以验证 URL。
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多