Save-SCVirtualMachine

将部署在主机上的虚拟机迁移到 VMM 库。

语法

Save-SCVirtualMachine
    [-VM] <VM>
    [-LibraryServer <LibraryServer>]
    [-UseLAN]
    [-SharePath <String>]
    [-RunAsynchronously]
    [-PROTipID <Guid>]
    [-JobVariable <String>]
    [-OnBehalfOfUser <String>]
    [-OnBehalfOfUserRole <UserRole>]
    [<CommonParameters>]

说明

Save-SCVirtualMachine cmdlet 将主机上部署的虚拟机迁移到 Virtual Machine Manager (VMM) 库。

这会使用以下传输方法之一将虚拟机存储到 VMM 库:

  • SAN 传输 (光纤通道、iSCSI 或 NPIV) 。 如果主机和库服务器都连接到 SAN 存储,VMM 可以使用 SAN 传输将虚拟机存储在库中。 在 SAN 传输过程中,目标 LUN 从源主机重新映射到目标库服务器。 此 cmdlet 不会移动任何文件。 SAN 传输比通过局域网 (LAN) 将虚拟机文件从一个主机移到另一台主机要快得多。 如果主机总线适配器 (HBA) 支持 NPIV,则 VMM 可以使用 NPIV SAN 传输。
  • 网络传输。 如果没有更快的方法可用,VMM 将使用网络传输将虚拟机文件从主机服务器移动到通过连接这两台服务器的 LAN 的库服务器。 指定库中共享的路径,以将虚拟机存储为 SharePath 参数。

此 cmdlet 自动使用最快的可用传输类型。 如果要强制网络传输,请指定 UseLAN 参数。 如果主机服务器和库服务器是同一服务器,则如果指定 UseLAN,则命令不会失败,但如果不使用该参数,则迁移到库的速度会更快。

将虚拟机存入库中后,便无法启动。 在启动虚拟机之前,必须使用 Move-SCVirtualMachine cmdlet 将其移动到主机。

示例

示例 1:将虚拟机保存到库

PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
PS C:\> $LibServer = Get-SCLibraryServer -ComputerName "LibServer01"
PS C:\> Save-SCVirtualMachine -LibraryServer $LibServer -VM $VM -SharePath "\\LibServer01.Contoso.com\Library01\VMs"

第一个命令获取名为 VM01 的虚拟机对象,然后将该对象存储在$VM变量中。

第二个命令获取名为 LibServer01 的库服务器对象,然后将该对象存储在$Library变量中。

最后一个命令将 VM01 从其主机迁移并存储到位置 \LibServer01.Contoso.com\Library01\VM。 该命令自动使用最快的可用传输类型。

示例 2:异步将虚拟机存储在库中

PS C:\> $VM = Get-SCVirtualMachine -Name "VM02"
PS C:\> $LibServer = Get-SCLibraryServer -ComputerName "LibServer02"
PS C:\> Save-SCVirtualMachine -LibraryServer $LibServer -VM $VM -SharePath "\\LibServer02.Contoso.com\Library02\VMs" -RunAsynchronously -JobVariable "SaveVMJob"
PS C:\> $SaveVMJob

第一个命令获取名为 VM02 的虚拟机对象,然后将该对象存储在$VM变量中。

第二个命令获取名为 LibServer02 的库服务器对象,然后将该对象存储在$Library变量中。

第三个命令将 VM02 迁移到位置 \LibServer02.Contoso.com\Library02\VM。 该命令指定 RunAsynchronously 参数,以立即将控件返回到命令 shell。 该命令指定 JobVariable 参数跟踪作业进度,并在$SaveVMJob中存储其进度记录。 对于 JobVariable,不指定美元符号 ($) 来创建变量。

最后一个命令显示$SaveVMJob的内容。

示例 3:通过强制网络传输将虚拟机存储在库中

PS C:\> $VM = Get-SCVirtualMachine -Name "VM03"
PS C:\> $LibServer = Get-SCLibraryServer -ComputerName "LibServer01"
PS C:\> Save-SCVirtualMachine -LibraryServer $LibServer -VM $VM -SharePath "\\LibServer01.Contoso.com\Library01\VMs" -UseLAN

第一个命令获取名为 VM03 的虚拟机,然后将该对象存储在$VM变量中。

第二个命令获取名为 LibServer01 的库服务器对象,然后将该对象存储在$LibServer变量中。

最后一个命令将 VM03 存储到位置 \LibServer01.Contoso.com\Library01\VM。 即使有更快的传输机制可用, UseLAN 参数也会强制通过 LAN 进行网络传输。

参数

-JobVariable

指定作业进度的变量的名称。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LibraryServer

指定一个 VMM 库服务器对象。

Type:LibraryServer
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-OnBehalfOfUser

指定用户名。 此 cmdlet 代表此参数指定的用户运行。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OnBehalfOfUserRole

指定用户角色。 若要获取用户角色,请使用 Get-SCUserRole cmdlet。 此 cmdlet 代表此参数指定的用户角色运行。

Type:UserRole
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PROTipID

指定触发此操作 (PRO 提示) 的性能和资源优化提示的 ID。 此参数允许审核 PRO 提示。

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsynchronously

指示作业异步运行,以便控件立即返回到命令 shell。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SharePath

指定此 cmdlet 保存虚拟机的现有库服务器上的有效库共享的路径。 指定通用命名约定 (UNC) 路径。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseLAN

指示即使有更快的传输机制可用,此 cmdlet 也使用通过 LAN 传输。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VM

指定要保存的虚拟机对象。

Type:VM
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

输出

VirtualMachine

此 cmdlet 返回 VirtualMachine 对象。

备注

  • 需要 VMM 虚拟机对象,可以使用 Get-SCVirtualMachine cmdlet 检索该对象。