Commandlet与控制台应用程序

时间:2014-12-29 15:51:50

标签: c# powershell cmdlets

我正在寻找有关何时构建自定义PowerShell CMDLet与控制台应用程序的指导/文档,并且想知道是否存在使用CMDLet的特定界限。为了使这个问题更具体(并且可以回答),这是我的方案:

我正在尝试解决脚本数据导入问题,导入是针对提供web服务的平台完成的,该平台允许我读/写数据。

我有以下(高级别)要求:

  • 调用webservices并检索数据以检查导入的数据是否存在(并且可能需要更新)
  • 读取(csv)导入最大大小为25MB的文件
  • 读取最大大小为2MB的复杂XML映射文件
  • 需要可编写脚本(用于自动部署,自动构建过程的一部分)

我现在怀疑使用CMDLet我可以做所有这些事情,但我想知道CMDLet是否是正确的选择。我正在寻找我的特定情况的答案,但由于我刚刚开始使用CMDLets,我非常感谢有关如何在这里做出选择的其他信息。

1 个答案:

答案 0 :(得分:3)

在我看来,只有两次构建CMDlet不合适

  1. 你需要快速构建它,它只需要工作,(时间紧迫),或者没有很多知道如何使用powershell的工作人员。

    < / LI>
  2. 您需要通过Linux / Mac等Mono-Project跨平台进行可编写脚本的导入。

  3. 除此之外,我认为灵活性PowerShell可以让您轻松构建CMDlet。

    如果您在可导入的PowerShell模块中将导入逻辑构建为CMDLet,则可以在针对CMDlet的PowerShell脚本中利用整个.net框架。

    在powershell中,您可以立即获得一些要求。

    1. CSV文件,powershell可以管理CSV文件,而无需编写任何代码
    2. XML文件,powershell也可以管道XML
    3. Scriptable:Powershell是一个脚本引擎。
    4. 致电WebService:Powershell can also call web services
    5. Powershell旨在成为构建命令行控制台应用程序的更好选择。所以在我看来,利用powershell的力量从来都不是一个坏主意。

      事实上,您可以在控制台应用程序中运行整个PowerShell框架,将您的控制台应用程序转换为PowerShell命令行,并且它非常容易实现。

      Writing a Powershell Host Application

      我们的数据库项目通过自定义模块对其使用PowerShell导入逻辑。允许我这样做,

      1. Migrate-Employees -source LegacyProd -destination Prod
      2. Migrate-All -source LegacyProd -destination Prod
      3. XYZDB-GetEmployee -EmployeeID 603
      4. XYZDB-GetCustomer -CustomerID 000567
      5. XYZDB-GetCustomer |选择CustomerID,Name,Address | Out-File c:\ customerDump.txt
      6. 等等,但注意#5这是使PowerShell很棒的原因。在#5中,我获得了所有客户的转储,只选择他们的CustomerID,Name和Address,并将它们转储到文本文件中以供参考。除了GetCustomer CmdLet之外,我没有编写任何代码,剩下的就是所有的PowerShell功能。