VMware Cloud Community
LukeLegend
Contributor
Contributor

Add Guest OS attribute to a script? Bit of a dummy question

Hi All,

Thanks for any assistance you can provide in advance, I would like to add the Guest OS as effectively reported by the VMX into the below script, any idea what I need to add and its formatting?

$VMs = Get-View -ViewType VirtualMachine -Property name,guest,config.version,runtime.PowerState

    $report = @()

    $progress = 1

    foreach ($VM in $VMs) {

        Write-Progress -Activity "Checking vmware tools status" -Status "Working on $($VM.Name)" -PercentComplete ($progress/$VMs.count*100) -ErrorAction SilentlyContinue

        $object = New-Object PSObject

        Add-Member -InputObject $object NoteProperty VM $VM.Name

        if ($VM.runtime.powerstate -eq "PoweredOff") {Add-Member -InputObject $object NoteProperty ToolsStatus "$($VM.guest.ToolsStatus) (PoweredOff)"}

        else {Add-Member -InputObject $object NoteProperty ToolsStatus $VM.guest.ToolsStatus}

        Add-Member -InputObject $object NoteProperty ToolsVersionStatus ($VM.Guest.ToolsVersionStatus).Substring(10)

        Add-Member -InputObject $object NoteProperty SupportState ($VM.Guest.ToolsVersionStatus2).Substring(10)

        if ($object.ToolsStatus -eq "NotInstalled") {Add-Member -InputObject $object NoteProperty Version ""}

        else {Add-Member -InputObject $object NoteProperty Version $VM.Guest.ToolsVersion}

        Add-Member -InputObject $object NoteProperty "HW Version" $VM.config.version

        $report += $object

        $progress++

        }

    Write-Progress -Activity "Checking vmware tools" -Status "All done" -Completed -ErrorAction SilentlyContinue

    $report | Export-Csv c:\ToolsReport\output.csv

Reply
0 Kudos
1 Reply
LucD
Leadership
Leadership

Something like this?

$VMs = Get-View -ViewType VirtualMachine -Property name,guest,config.version,runtime.PowerState

$report = @()

$progress = 1

foreach ($VM in $VMs) {

    Write-Progress -Activity "Checking vmware tools status" -Status "Working on $($VM.Name)" -PercentComplete ($progress/$VMs.count*100) -ErrorAction SilentlyContinue

    $object = New-Object PSObject

    Add-Member -InputObject $object NoteProperty VM $VM.Name

    if ($VM.runtime.powerstate -eq "PoweredOff") {Add-Member -InputObject $object NoteProperty ToolsStatus "$($VM.guest.ToolsStatus) (PoweredOff)"}

    else {Add-Member -InputObject $object NoteProperty ToolsStatus $VM.guest.ToolsStatus}

    Add-Member -InputObject $object NoteProperty ToolsVersionStatus ($VM.Guest.ToolsVersionStatus).Substring(10)

    Add-Member -InputObject $object NoteProperty SupportState ($VM.Guest.ToolsVersionStatus2).Substring(10)

    if ($object.ToolsStatus -eq "NotInstalled") {

        Add-Member -InputObject $object NoteProperty Version ""

        Add-Member -InputObject $object NoteProperty "Guest OS" $VM.Config.GuestId

    }

    else {

        Add-Member -InputObject $object NoteProperty Version $VM.Guest.ToolsVersion

        Add-Member -InputObject $object NoteProperty "Guest OS" $VM.guest.GuestFullName

    }

    Add-Member -InputObject $object NoteProperty "HW Version" $VM.config.version

    $report += $object

    $progress++

    }

Write-Progress -Activity "Checking vmware tools" -Status "All done" -Completed -ErrorAction SilentlyContinue

$report | Export-Csv c:\ToolsReport\output.csv


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

Reply
0 Kudos