Files
PowerCLI-Example-Scripts/PowerActions/VM-CdDrive-Report.ps1
aaronwsmith 002bf2b97a VM-CdDrive-Report.ps1 - Final revision to metadata
Figured out you have to explicitly escape the () characters when editing
a PowerActions script within the Web Client.  Added in KEY(VM) to tell
PowerActions which column to use for Context Menu support within Web
Client.  Also seemed to speed up execution of the script!
2016-08-03 15:08:05 -05:00

51 lines
2.4 KiB
PowerShell

<#
.MYNGC_REPORT
KEY\(VM\)
.LABEL
VM CD-Drive Report
.DESCRIPTION
PowerActions Report Script that reports on VMs CD-Drive configuration, making it easy to find VMs holding onto ISOs that you
need to update, or VMs that can't vMotion because they are tied into a physical resource from the ESXi host that is running it.
VM object is key (as it's the first managed object in the output), enabling you the ability to right-click an entry in the
report to edit the target VM. Script is able to report on VMs with multiple CD-Drives as well. Version 1.0, written by
Aaron Smith (@awsmith99), published 07/29/2016.
#>
param
(
[Parameter(Mandatory=$true)]
[VMware.VimAutomation.ViCore.Types.V1.Inventory.Cluster]
$vParam
);
[Array] $vmList = @( Get-VM -Location $vParam | Sort Name );
foreach ( $vmItem in $vmList )
{
[Array] $vmCdDriveList = @( Get-CDDrive -VM $vmItem );
foreach ( $vmCdDriveItem in $vmCdDriveList )
{
[String] $insertedElement = "";
[String] $connectionType = "";
switch ( $vmCdDriveItem )
{
{ $_.IsoPath } { $insertedElement = $_.IsoPath; $connectionType = "ISO"; break; }
{ $_.HostDevice } { $insertedElement = $_.HostDevice; $connectionType = "Host Device"; break; }
{ $_.RemoteDevice } { $insertedElement = $_.RemoteDevice; $connectionType = "Remote Device"; break; }
default { $insertedElement = "None"; $connectionType = "Client Device"; break; }
}
$output = New-Object -TypeName PSObject;
$output | Add-Member -MemberType NoteProperty -Name "VM" -Value $vmItem
$output | Add-Member -MemberType NoteProperty -Name "CD-Drive" -Value $vmCdDriveItem.Name;
$output | Add-Member -MemberType NoteProperty -Name "Connection" -Value $connectionType;
$output | Add-Member -MemberType NoteProperty -Name "Inserted" -Value $insertedElement;
$output | Add-Member -MemberType NoteProperty -Name "Connected" -Value $vmCdDriveItem.ConnectionState.Connected;
$output | Add-Member -MemberType NoteProperty -Name "StartConnected" -Value $vmCdDriveItem.ConnectionState.StartConnected;
$output | Add-Member -MemberType NoteProperty -Name "AllowGuestControl" -Value $vmCdDriveItem.ConnectionState.AllowGuestControl;
$output;
}
}