0

早上好,

我只想打印 VM 名称,以便可以在另一个程序的 CLI 中使用它。我们根据虚拟机的使用情况使用备份计划。为此,我们将“测试”之类的内容写入 Vm 的注释中。

例如:

我有:
VM1 测试
VM2 Linux
VM3 测试
VM4 测试

另一个命令行(来自 cloudberry)处理备份计划,如下所示:

./cbb editHyperVPlan -n 备份名称 -v VM1 -v VM3 -v VM4

问题是,我想自动制作它,所以我不必每次有人制作新的 VM 时都将自己的 VM 放入列表中。

但是 Cloudberry CLI 似乎不支持 Powershell 命令(它在 powershell 上工作)。

所以我的想法是我尝试将 VM1 VM3 和 VM4 打印到 -v -v -v ...这可能吗?抱歉,如果这写得令人困惑,我真的无法更好地解释它..

编辑:我使用这个命令来获取我需要的虚拟机:Get-VM | Where-Object { $_.Notes -like ' Test '}

4

2 回答 2

0

尝试这个:

$cmd = '& ./cbb editHyperVPlan -n backupname '
 Get-VM | Where-Object {$_.Notes -like 'Test'} | ForEach {
  $cmd += "-v $($_.vmname) "
}

命令存储在变量 $cmd 中。执行使用Invoke-Expression $cmd

于 2020-04-24T09:56:20.237 回答
0

或者像这样的东西:

'./cbb editHyperVPlan -n backupname -v {0}' -f ((Get-VM | Where-Object {$_.Notes -like 'Test'}).Name -join '-v ')
于 2020-04-25T10:21:07.837 回答