1

系统管理员正在编写一些常见的内务管理 Power Shell 脚本。主要用于 AD 管理(更新交换详细信息、在安全组周围移动人员等)

我想使用 C# 中的这些脚本(我打算将其编写为库,供网站使用)。

我看过这篇代码项目文章,它看起来很有趣,也是一个很好的起点。

有没有人有任何 Power Shell 互操作的经验?在我一头扎进尖峰之前,谁能想到任何主要的陷阱?

额外的信息:

我很欣赏存在后勤方面的挑战,尤其是在 CI 和版本控制方面。

该计划最初是使用目录服务,通过 Web API 和 CmdLets 公开服务。不幸的是,我们在使用目录服务时遇到了困难(例如,大集合的截断结果)。

同时,我认为我应该使用系统管理员的脚本进行调查,而不是使用不一致的组合。为什么要重新发明轮子?

我已经编写了我的域模型。我打算实现存储库模式,这样我就可以抽象出 AD / Exchange 集成,以便将来实现不同的实现。

4

3 回答 3

2

如果脚本依赖于系统或用户配置文件,那么您需要首先将配置文件显式点源到您的运行空间中。

更高级别的控制(例如,从一个命令到另一个命令的会话,...访问调试输出)需要更高级/低级/复杂的工作。

除此之外,一切正常。

于 2009-04-15T16:28:25.347 回答
1

对于从已编译程序运行脚本的常见问题,我认为这种方法没有很多陷阱。我发现最大的问题往往是

  1. 防止人们移动脚本
  2. 确保人们不会在脚本中添加未反映在调用程序中的隐藏依赖项。

但我确实认为你应该考虑另一种发展模式。与其让程序引用脚本,不如将所有逻辑添加到已编译的库中。这可以很容易地链接到程序中并通过 CmdLet 暴露给 PowerShell。我发现这是在程序中的脚本之间维护共享代码的一种更简单的方法。

于 2009-04-15T13:28:40.567 回答
1

在过去的几个月里,我一直在 C# 应用程序中运行 PowerShell 代码,它运行良好,你可以用它做一些非常有趣的事情。这就是说 JaredPar 提到在应用程序外部的脚本文件中包含 PowerShell 脚本可能会很痛苦。我将所有的 PowerShell 代码放在一个库中,并将其发送到需要的地方,并且运行良好。

于 2009-04-15T14:17:24.443 回答