【问题标题】:Script to create checkpoints on multiple servers in SCVMM在 SCVMM 中的多个服务器上创建检查点的脚本
【发布时间】:2020-05-15 23:09:20
【问题描述】:

我正在使用标准脚本在 VM 的 SCVMM 中获取单个检查点。它是:

Get-SCVirtualMachine -Name 'servername' | New-SCVMCheckpoint

我也在用:

Checkpoint-VM -Name Test -SnapshotName BeforeInstallingUpdates

我想使用任何一个命令来检查多个虚拟机,使用 foreach 命令。有人可以指导我添加吗?

我在c:\temp\checkpoint.txt有一个文本文件

所以我在想这样的事情:

$vms = "c:\temp\checkpoint.txt"
foreach ($vm in $vms) {
    Get-SCVirtualMachine -Name '$vms' | New-SCVMCheckpoint
}

只是不能 100% 确定 非常感谢任何帮助和知识分享

【问题讨论】:

  • 请把您的代码 [& 任何数据或示例文本] 包装在代码格式标记中。您可以在用于创建问题的页面上的链接中找到相关说明。

标签: powershell foreach hyper-v


【解决方案1】:

在您发布的循环中,您正在循环字符串c:\temp\checkpoint.txt

您首先需要从文本文件中实际获取服务器名称列表,如下所示:

$vms = Get-Content "c:\temp\checkpoint.txt"

但具体如何操作将取决于该文件的格式

如果您的文件如下所示,则上述内容将正常工作:

vmname-1
vmname-2
vmname-3
    ... etc

获得 VM 名称列表后,您需要将 foreach 循环更改为如下所示:

foreach ($vm in $vms) {
    Get-SCVirtualMachine -Name $vm | New-SCVMCheckpoint
}
  • 请注意,我从执行行中的变量名周围删除了's。一旦您在某些文本周围添加引号,它就会变成一个字符串并且不再是一个变量。您可以使用双引号 (") 来实现这一点,但在这种情况下不需要它们!

  • 1234563循环!

查看SS64,了解有关 PowerShell 命令的一些精彩说明和示例

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 2013-07-06
    • 2018-09-08
    • 2020-08-15
    • 1970-01-01
    • 2011-11-10
    • 2018-05-12
    • 2020-02-12
    • 2018-05-31
    相关资源
    最近更新 更多