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 从虚拟机或 Virtual Machine Manager (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_If
和 Get-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 之前,提示你进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Force
强制操作完成。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-JobGroup
指定一系列命令的标识符,这些命令在包含相同作业组标识符的最后一个命令运行之前作为集运行。
类型: | Guid |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-JobVariable
指定在其中跟踪和存储作业进度的变量。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-OnBehalfOfUser
指定用户名。 此 cmdlet 代表此参数指定的用户运行。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-OnBehalfOfUserRole
指定用户角色。 若要获取用户角色,请使用 Get-SCUserRole cmdlet。 此 cmdlet 代表此参数指定的用户角色运行。
类型: | UserRole |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-PROTipID
指定触发此操作的性能和资源优化提示(PRO 提示)的 ID。 此参数允许你审核 PRO 提示。
类型: | Guid |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-RunAsynchronously
指示作业以异步方式运行,以便控件立即返回到命令行界面。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-SkipDeleteVHD
指示此 cmdlet 在删除虚拟磁盘驱动器时不具有 VHD 文件。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-VirtualDiskDrive
指定虚拟磁盘驱动器对象。 可以将虚拟硬盘或直通磁盘附加到虚拟磁盘驱动器对象。
类型: | VirtualDiskDrive |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-WhatIf
显示 cmdlet 运行时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
备注
- 需要 VMM 虚拟磁盘驱动器对象,可以使用 Get-SCVirtualDiskDrive cmdlet 来检索该对象。