使用 Crescendo 是一种快速、可靠的方法来 放大 命令行工具以生成类似于 cmdlet 的体验。 很多时候,你需要使用的工具与你尝试自动化的技术直接相关。 这使得工具选择变得简单。 但是,并非所有工具的工作方式都相同。 若要在开发 cmdlet 时优化投资,请考虑以下条件:
可生成良好候选项的命令行工具
原始工具难以使用。
如果该工具易于使用并提供所需的信息,则无需创建 cmdlet。 但是,命令行工具并非总是如此。 许多命令行工具都有其自己独特的语法、参数和输出,使得不熟悉的管理员很难使用该工具的命令。 将命令转换为 cmdlet 可提供 cmdlet 发现、语法一致性和作为对象的结构化输出的所有优势。
命令行工具输出难以在自动化中使用。
命令行工具将其信息作为字符串数据输出到屏幕。 这不是 PowerShell 在管道中期望的结构化数据 (对象) ,这会阻止你使用 PowerShell cmdlet,例如
Where-Object
和ForEach-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 配置。