下午好,
我最近创建了一个 PowerShell 脚本来自动化和测试 PowerCLI 脚本,然后再在 vCenter/ESXi 主机上运行它们。
目前,我使用验证集让用户选择他们想要在哪个服务器/集群上执行他们的脚本:
param(
[string]$script = "help",
[ValidateSet("localhost", "Server1", "Server2")]
[string]$server,
[ValidateSet("DC0_C0", "DC0_C1", "DC0_C2", "Customer1")]
[string[]]$cluster,
[switch]$help
)
问题是,有时当您有大客户时,他们可能有多个集群,只需键入“customer1”并让脚本在 cluster1/2 和 4 上运行会更方便,而不是手动键入所有集群:
./viexec vminfo localhost Cluster1,Cluster3,Cluster10
./viexec vminfo localhost Customer1 #And have the script run automatically on all the right clusters.
我已经尝试使用 if 来检查变量 $cluster 的值,如果它等于“Customer1”,那么它将用适当的集群替换他的值,但我觉得这个解决方案并不优雅。而且很难配置/维护,因为用户需要修改代码,所以如果这些参数可以从外部配置文件/用户输入创建就更好了。
我还想知道是否可以从文件/csv 中检索 validateset 的参数,以避免用户自定义主 script.ps1,而是简单地将他们的服务器和集群替换/写入填充 validateset 参数的 .CSV .
希望清楚..
问候,亚历山德罗