为 Crescendo 选择命令行工具

使用 Crescendo 是一种快速、可靠的方法来 放大 命令行工具以生成类似于 cmdlet 的体验。 很多时候,你需要使用的工具与你尝试自动化的技术直接相关。 这使得工具选择变得简单。 但是,并非所有工具的工作方式都相同。 若要在开发 cmdlet 时优化投资,请考虑以下条件:

可生成良好候选项的命令行工具

  • 原始工具难以使用。

    如果该工具易于使用并提供所需的信息,则无需创建 cmdlet。 但是,命令行工具并非总是如此。 许多命令行工具都有其自己独特的语法、参数和输出,使得不熟悉的管理员很难使用该工具的命令。 将命令转换为 cmdlet 可提供 cmdlet 发现、语法一致性和作为对象的结构化输出的所有优势。

  • 命令行工具输出难以在自动化中使用。

    命令行工具将其信息作为字符串数据输出到屏幕。 这不是 PowerShell 在管道中期望的结构化数据 (对象) ,这会阻止你使用 PowerShell cmdlet,例如 Where-ObjectForEach-Object。 Crescendo 可帮助你 放大 命令行工具体验,以便该工具可以参与 PowerShell 管道。

  • 命令行工具未提供足够的帮助。

    缺少帮助信息的命令行工具可能难以使用。 Cmdlet 可以包含全面的帮助信息,其中包括有关参数、说明和示例的详细信息。 Crescendo 使你能够为放大的命令创建缺失的帮助。

生成不良候选项的命令行工具

  • cmdlet 是否已存在?

    PowerShell 具有完善的模块生态系统,可扩展 PowerShell 的内置功能。 在决定使用 Crescendo 放大命令行工具之前,首先检查,看看是否已存在执行预期目标的 cmdlet。 例如,包装 Windows 命令 ipconfig.exe 以获取当前 IP 地址是一个糟糕的选择,因为模块 NetTCPIP 包含 Get-NetIPConfiguration,它通过结构化输出提供相同的信息。

  • 有更好的方法吗?

    通常,获得自动化所需的信息比创建 cmdlet 更快。 PowerShell 允许访问其他框架和库,例如 WMI 和 .NET。 可以使用其中一个库更快地获取信息,而不是花费时间放大命令行工具。

  • 输出是否简单?

    在某些情况下,命令行工具可能会生成易于在自动化中使用的输出。 如果是这种情况,投入时间创建具有结构化输出的 cmdlet 可能不值得创建放大的 cmdlet。

最佳实践

  • 通过专注于所需内容来优化时间投资。

    检查自动化命令行工具时,请记住,不需要在放大的 cmdlet 中复制该工具的所有功能。 换句话说,请专注于实现目标所需的工具功能。 如果工具有 12 个用例,而你只需要两个用例的功能,请仅为所需的两个方案创建 Crescendo 配置。

后续步骤