上一篇文章提供了选择要使用 Crescendo 进行放大的命令行工具的条件。 在本文中,我们将介绍收集有关该工具的信息的方法,以帮助你使用 Crescendo 设计 cmdlet。
对于本文中的示例,我们使用 Azure Connected Machine Agent 工具 (azcmagent
) 。 我们之所以选择此工具,是因为:
- 它易于安装和删除
- 基本使用情况不需要有效的 Azure 订阅
- 它提供有用的控制台内帮助和联机文档
- 它生成易于消耗的输出
从命令行帮助和文档开始
许多命令行工具包括用于显示帮助内容的开关或参数。 大多数新式命令行工具为该工具提供的各种用例方案提供多个级别的帮助。 例如,在不带任何参数的情况下运行 azcmagent
会显示顶级帮助,其中包含子命令的列表。
...
Usage:
azcmagent [command]
Available Commands:
check Runs connectivity checks
config Change configuration settings for this machine
connect Connects this machine to Azure
disconnect Disconnects this machine from Azure
help Help about any command
license Display the End-user license agreement file
logs Creates a .zip file containing relevant logs. This is primarily useful for troubleshooting.
show Gets machine metadata and Agent status. This is primarily useful for troubleshooting.
version Display the Hybrid Management Agent version
...
每个子命令都可以有自己的子命令和参数。 例如, config
子命令有五个子命令。
PS> azcmagent config --help
Change configuration settings for this machine
Usage:
azcmagent config [command]
Available Commands:
clear Clear a configuration property's value
get Get a configuration property's value
info Describes the config properties users can set
list List all configuration properties and values
set Set a value for a configuration property
Flags:
-h, --help help for config
--version version for config
Global Flags:
--config string config file (default is $HOME/.azcmagent.yaml)
-j, --json Output in JSON format
--log-stderr Redirect error and verbose messages to stderr
-v, --verbose Increase logging verbosity to show all logs
Use "azcmagent config [command] --help" for more information about a command.
使用命令行帮助发现可能的用例。 可以将每个 help 命令的输出重定向到一个文件,供以后在创建 Crescendo cmdlet 时参考。
提示
如果帮助内容结构一致,则可以通过分析此帮助输出来创建生成 cmdlet 的代码。 Crescendo 附带了一些实验性帮助分析器,用于说明如何完成此操作。 Experimental
请参阅 Microsoft.PowerShell.Crescendo 模块的根文件夹中的文件夹。
记下命令行工具提供的输出格式。 许多命令行工具都可以以 CSV 或 JSON 等格式输出信息。 这些结构化格式可轻松转换为 PowerShell 对象。
捕获用于分析的示例输出
确定使用 Crescendo 放大工具的哪些命令后,请从这些命令收集示例输出。 将每个命令的输出重定向到一个文件。 使用此示例数据可帮助设计 Crescendo cmdlet 的输出处理程序 (分析程序) 。
检查示例输出时,请考虑返回的数据类型。 构造对象时,应将命令行工具输出的字符串转换为 .NET 类型。 例如,时间戳信息可以转换为 .NET [DateTime]
类型。 此外,请查看用于分隔数据字段的标记的输出格式。 这些标记可用于在构造对象以进行输出时分析信息。
该工具 azcmagent
可以选择以 JSON 格式输出信息。 这使得到 PowerShell 对象的转换变得非常简单。 例如:
PS> $agentStatus = azcmagent show --json | ConvertFrom-Json
PS> $agentStatus.services
displayName serviceName status
----------- ----------- ------
GC Service gcarcservice running
Extension Service extensionservice running
Agent Service himds running
有关分析输出的更复杂的示例,请参阅 PowerShell 社区博客中的这 篇博客文章 。
注意
azcmagent
必须使用管理权限运行该工具。 这也意味着创建的模块必须使用管理权限运行。
安装 azcmagent 工具
可从以下位置下载适用于 Windows 和 Linux 的 Azure Connected Machine 代理包。
- 从 Microsoft 下载中心下载 Windows 代理的 Windows Installer 包。
- Linux 代理是从 Microsoft 的 包存储库分发的。 为分发 (RPM 或 DEB) 选择首选包格式。
有关 Azure Connected Machine 代理的详细信息,请参阅 管理和维护 Connected Machine 代理。