Remove-USBDevice
VMware: Removes the specified USB device from a virtual machine
#Requires -Version 5.1
#Requires -Modules VMware.VimAutomation.Core
[CmdletBinding(DefaultParameterSetName = "VM")]
Param(
[Parameter(Mandatory = $true, ParameterSetName = "VM")]
[Parameter(Mandatory = $true, ParameterSetName = "Template")]
[Parameter(Mandatory = $true, ParameterSetName = "Snapshot")]
[string]$VIServer,
[Parameter(Mandatory = $true, ParameterSetName = "VM")]
[Parameter(Mandatory = $true, ParameterSetName = "Template")]
[Parameter(Mandatory = $true, ParameterSetName = "Snapshot")]
[pscredential]$VICredential,
[Parameter(Mandatory = $true, ParameterSetName = "VM")]
[Parameter(Mandatory = $true, ParameterSetName = "Snapshot")]
[string]$VMName,
[Parameter(Mandatory = $true, ParameterSetName = "Template")]
[string]$TemplateName,
[Parameter(Mandatory = $true, ParameterSetName = "Snapshot")]
[string]$SnapshotName,
[Parameter(Mandatory = $true, ParameterSetName = "VM")]
[Parameter(Mandatory = $true, ParameterSetName = "Template")]
[Parameter(Mandatory = $true, ParameterSetName = "Snapshot")]
[string]$DeviceName
)
Process {
try {
$vmServer = Connect-VIServer -Server $VIServer -Credential $VICredential -ErrorAction Stop
$cmdArgs = @{ ErrorAction = 'Stop'; Server = $vmServer }
if ($PSCmdlet.ParameterSetName -eq "Snapshot") { $vm = Get-VM @cmdArgs -Name $VMName; $snap = Get-Snapshot @cmdArgs -Name $SnapshotName -VM $vm; $cmdArgs.Add('Snapshot', $snap) }
elseif ($PSCmdlet.ParameterSetName -eq "Template") { $temp = Get-Template @cmdArgs -Name $TemplateName; $cmdArgs.Add('Template', $temp) }
else { $vm = Get-VM @cmdArgs -Name $VMName; $cmdArgs.Add('VM', $vm) }
$device = Get-UsbDevice @cmdArgs -Name $DeviceName -ErrorAction Stop
if ($null -eq $device) { throw "No USB device found" }
$null = Remove-UsbDevice -UsbDevice $device -Confirm:$false -ErrorAction Stop
[PSCustomObject]@{ Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"; Status = "Success"; Message = "USB Device $($device.Name) successfully removed" }
}
catch { throw }
finally { if ($null -ne $vmServer) { Disconnect-VIServer -Server $vmServer -Force -Confirm:$false -ErrorAction SilentlyContinue } }
}IP address or DNS name of the vSphere server
PSCredential object for authenticating with the server
Virtual machine from which to remove the USB device
Virtual machine template from which to remove the USB device
Snapshot from which to remove the USB device
Name of the USB device to remove