Remove-SCVirtualDiskDrive

从虚拟机或虚拟机模板中删除虚拟磁盘驱动器。

语法

Remove-SCVirtualDiskDrive
      [-VirtualDiskDrive] <VirtualDiskDrive>
      [-SkipDeleteVHD]
      [-JobGroup <Guid>]
      [-Force]
      [-RunAsynchronously]
      [-PROTipID <Guid>]
      [-JobVariable <String>]
      [-WhatIf]
      [-Confirm]
      [-OnBehalfOfUser <String>]
      [-OnBehalfOfUserRole <UserRole>]
      [<CommonParameters>]

说明

Remove-SCVirtualDiskDrive cmdlet 从虚拟机或虚拟机模板中删除虚拟机驱动器对象, (VMM) 环境。

示例

示例 1:从虚拟机中删除虚拟磁盘驱动器

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.VMHost.Name -Eq "VMHost01.Contoso.com" -And $_.Name -Eq "VM01" }
PS C:\> $VirtDiskDrive = @(Get-SCVirtualDiskDrive -VM $VM)
PS C:\> If($VirtDiskDrive.Count -Gt 1){Remove-SCVirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive[1]}

第一个命令使用 Get-SCVirtualMachine cmdlet 获取在 VMHost01 上部署的名为 VM01 的虚拟机对象。 该命令将该对象存储在$VM变量中。

第二个命令获取 VM01 上的所有虚拟磁盘驱动器对象,然后将检索到的对象存储在$VirtDiskDrive中。 使用 @ 符号和括号可确保该命令将结果存储在数组中,即使命令返回单个对象或$Null值也是如此。

最后一个命令返回与虚拟机关联的虚拟磁盘驱动器数,然后,如果存在多个磁盘驱动器,该命令将从虚拟机中删除第二个虚拟磁盘驱动器(由 [1]指定)。

示例 2:删除附加到虚拟机的所有传递磁盘

PS C:\> $VM = Get-SCVirtualMachine | Where-Object {$_.Name -Eq "VM02"}
PS C:\> $VirtDiskDrives = @(Get-SCVirtualDiskDrive -VM $VM | Where-Object {$_.IsVHD -Eq $False})
PS C:\> If($VirtDiskDrives.Count -Gt 0){ForEach($VirtDiskDrive in $VirtDiskDrives){Remove-SCVirtualDiskDrive -Force -VirtualDiskDrive $VirtDiskDrive}}

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

第二个命令获取附加到不是虚拟硬盘的 VM02 的所有虚拟磁盘驱动器对象。 该命令仅获取表示传递磁盘的对象。 该命令将传递磁盘对象存储在$VDDs对象数组中。

最后一个命令使用 If 语句来确定是否存在至少一个传递虚拟磁盘驱动器。 如果结果为一个或多个,则命令将使用 ForEach 语句从对象数组中删除每个虚拟磁盘驱动器。 有关详细信息,请键入 Get-Help about_IfGet-Help about_Foreach

最后一个命令指定 Force 参数。 因此,即使其他 VMM 对象依赖于该虚拟磁盘驱动器,该命令也会从其虚拟机中删除每个虚拟磁盘驱动器。

示例 3:按名称删除虚拟磁盘驱动器

PS C:\> $VM = @(Get-SCVirtualMachine | Where-Object {$_.Name -Match "WebSrvLOB"})
PS C:\> ForEach-Object ($VM in $VMs){$VirtDiskDrives = Get-SCVirtualDiskDrive -VM $VM 
PS C:\> ForEach-Object ($VirtDiskDrive in $VirtDiskDrives){If($VirtDiskDrive.Name -Match "LOBData"){Remove-SCVirtualDiskDrive -VirtualDiskDrive $VirtDiskDrive}}}

第一个命令获取名称与字符串 WebSrvLOB 匹配的所有虚拟机对象,然后将这些对象存储在$VM数组中。

接下来的两个命令使用 ForEach-Object cmdlet 循环访问存储在$VM中的虚拟机,以获取每个虚拟机中的所有虚拟磁盘驱动器对象。 第二个命令将虚拟磁盘驱动器对象存储在$VirtDiskDrives对象数组中。

第三个命令使用第二个 ForEach 循环选择名称包含$VirtDiskDrives数组中的字符串 LOBData 的所有虚拟磁盘驱动器对象,并将这些对象传递给当前 cmdlet。 此 cmdlet 从 VMM 中删除对象。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

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

-Force

强制操作完成。

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

-JobGroup

为一系列命令指定标识符,这些命令在包含相同作业组标识符的最后一个命令之前作为集运行。

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

-JobVariable

指定在其中跟踪和存储作业进度的变量。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
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

-SkipDeleteVHD

指示此 cmdlet 在删除虚拟磁盘驱动器时不会使用 VHD 文件。

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

-VirtualDiskDrive

指定虚拟磁盘驱动器对象。 可以将虚拟硬盘或直通磁盘附加到虚拟磁盘驱动器对象。

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

-WhatIf

显示在此 cmdlet 运行的情况下将会发生什么。 此 cmdlet 未运行。

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

备注

  • 需要 VMM 虚拟磁盘驱动器对象,可以使用 Get-SCVirtualDiskDrive cmdlet 检索该对象。