Wcf 通过.NET framework创建的PowerShell模块的配置

Wcf 通过.NET framework创建的PowerShell模块的配置,wcf,powershell,configuration,module,Wcf,Powershell,Configuration,Module,在C#中创建PowerShell模块时,如果希望能够配置依赖项,那么最佳做法是什么 我的具体场景是,我通过C#代码创建的PowerShell模块将使用WCF服务。因此,服务的URL必须是客户端可以配置的 在这方面有标准的方法吗?或者这是必须自定义实现的吗?实现这一点的标准方法是允许提供一个值作为参数或默认值,以便通过PSCmdlet的GetVariableValue读取特殊变量。这就是内置的Send-MailMessagecmdlet的功能。如果没有提供服务器,它将读取变量PSEmailServ

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

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


在这方面有标准的方法吗?或者这是必须自定义实现的吗?

实现这一点的标准方法是允许提供一个值作为参数或默认值,以便通过PSCmdlet的
GetVariableValue
读取特殊变量。这就是内置的
Send-MailMessage
cmdlet的功能。如果没有提供服务器,它将读取变量PSEmailServer。

我可能不理解您的问题。因此,我将假设几个场景:

  • 您的PS模块将始终使用相同的WCF端点。在这种情况下,您可以在模块中硬编码URL
  • 您可以选择的端点数量有限,并且有一些算法或最佳实践可以将端点与特定用户关联,例如,根据用户所在的部门或部门,在地理位置上最接近的端点,等等
  • 选择URL完全取决于最终用户的偏好
  • 对于案例2,我建议您实现算法/最佳实践,并将结果保存到某个地方-作为模块安装的一部分


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

    在cmdlet中添加
    Uri
    参数,并在需要时为其提供默认值。谢谢#3是我指的。这是一种比提供一个读取WCF相关设置的配置文件更好的方法吗。我不知道那会是什么。此外,我想没有明确的赢家。许多PS用户习惯于编辑他们的配置文件,因此配置文件似乎与此一致。更好的是,为用户提供一种将设置放入其配置文件的方法。我使用别名
    ep
    来编辑我的配置文件,因此将设置放入配置文件意味着我仍然可以使用别名。但是,我仍然认为设置配置的UX(用户体验)比实现更重要。除了隐藏实现之外,还可以验证URL。