【问题标题】:Can I "print" the name of a VM in Powershell?我可以在 Powershell 中“打印”虚拟机的名称吗?
【发布时间】:2020-08-07 20:02:51
【问题描述】:

早安,

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

例如:

我有:
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'}

【问题讨论】:

  • 所以你想要 before 第一个空格的部分?如果是这样,请使用.Split(' ')[0] 获取第一项。
  • 另外,你能把你的代码包装成代码格式吗?相关说明链接在您用于创建问题的同一页面上。 [咧嘴]

标签: windows powershell backup cloudberry


【解决方案1】:

试试这个:

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

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

【讨论】:

    【解决方案2】:

    或者类似的东西:

    './cbb editHyperVPlan -n backupname -v {0}' -f ((Get-VM | Where-Object {$_.Notes -like 'Test'}).Name -join '-v ')
    

    【讨论】:

      猜你喜欢
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2013-04-29
      • 1970-01-01
      相关资源
      最近更新 更多