Chr*_*ter 7 .net c# powershell cmdlets appv
我一直在编写一些使用PowerShell Cmdlet for App-V的实用程序.有趣的是,Microsoft似乎只记录了cmdlet,而不是Powershell模块后面使用的.net程序集.
现在我熟悉P/Invoke和COM Interop,我已经学会了如何使用System.Management.Automation创建一个PowerShell会话并调用cmdlet.
但有些东西对我来说没有味道.我基本上编写自己的包装类来隐藏其余代码中的powershell调用.看起来我应该a)绕过powershell并直接进入它后面的托管库,或者b)应该有更好的机制来为PowerShell cmdlet生成互操作库.
似乎微软现在大量使用PS CmdLets,它实际上已成为一个新的互操作API.
我错过了什么吗?在这种情况下使用什么是好策略?
你对“气味”的看法是正确的。绕过 powershell 并不是编写实用程序的最佳方式,因为其背后未记录的托管库比 cmdlet 更有可能悄然更改。使用这种方法可能会给您带来麻烦。
你正试图将难以组合的事物组合起来。解决方案是引入一个代理,允许以更自然的方式将代码与 ps cmdlet 结合起来。
根据您的情况,可以创建 ps 脚本,以自然的方式与 cmdlet 进行通信并提供必要的功能。在您的 C# 代码中,您只需调用 powershell.exe 即可。如果这也不适合您,那么只需使用 System.Management.Automation 创建 powershell 会话并调用您的脚本。这种方法更安全,因为现在您可以在 powershell 代理中与记录的 ps cmdlet 进行通信(自然的 powershell 方式),并通过 c# 代码与 ps 脚本进行通信(这使您可以更好地控制代码)
| 归档时间: |
|
| 查看次数: |
502 次 |
| 最近记录: |