- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
in my inventory scripts and in what RV tools outputs I get the OS version that is selected for the VM in edit settings - options - version. I would like to also output a list of the OS version that VMware tools is reporting so I can find the ones with wrong OS selected and fix them. I have tried .extensiondata.config.tools and I dont see the OS listed there, does anyone know where it is listed?
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> $vm1.extensiondata.config.tools
ToolsVersion : 9354
AfterPowerOn : True
AfterResume : True
BeforeGuestStandby : True
BeforeGuestShutdown : True
BeforeGuestReboot :
ToolsUpgradePolicy : upgradeAtPowerCycle
PendingCustomization :
SyncTimeWithHost : True
LastInstallInfo : VMware.Vim.ToolsConfigInfoToolsLastInstallInfo
DynamicType :
DynamicProperty :
side note, where can I find a resource that shows what options are available for each get command, like get-host and get-vm? I am learning a lot about what I can find in powercli by running this command and exploring the ones that return VMware.Vim......, but would save me a lot of time to be able to just go look it up.
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> $vm1 = get-vm test-vm1
PowerCLI C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI> $vm1.extensiondata
Capability : VMware.Vim.VirtualMachineCapability
Config : VMware.Vim.VirtualMachineConfigInfo
Layout : VMware.Vim.VirtualMachineFileLayout
LayoutEx : VMware.Vim.VirtualMachineFileLayoutEx
Storage : VMware.Vim.VirtualMachineStorageInfo
EnvironmentBrowser : EnvironmentBrowser-envbrowser-653
ResourcePool : ResourcePool-resgroup-11
ParentVApp :
ResourceConfig : VMware.Vim.ResourceConfigSpec
Runtime : VMware.Vim.VirtualMachineRuntimeInfo
Guest : VMware.Vim.GuestInfo
Summary : VMware.Vim.VirtualMachineSummary
Datastore : {Datastore-datastore-591}
Network : {Network-network-145}
Snapshot :
RootSnapshot : {}
GuestHeartbeatStatus : green
LinkedView :
Parent : Folder-group-v41
CustomValue : {}
OverallStatus : green
ConfigStatus : green
ConfigIssue : {}
EffectiveRole : {-1}
Permission : {}
Name : test-vm1
DisabledMethod : {Destroy_Task, UnregisterVM, RevertToCurrentSnapshot_Task, RemoveAllSnapshots_Task...}
RecentTask : {}
DeclaredAlarmState : {alarm-10.vm-653, alarm-11.vm-653, alarm-2.vm-653, alarm-23.vm-653...}
TriggeredAlarmState : {}
AlarmActionsEnabled : True
Tag : {}
Value : {}
AvailableField : {FA.GosAgent}
MoRef : VirtualMachine-vm-653
Client : VMware.Vim.VimClientImpl
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try $vm.ExtensionData.Guest.GuestFullName
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can use this one-liner to get a list of VMs with their configured and running Guest OS:
Get-VM | Sort | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") | Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Format-Table -AutoSize
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, this is what I was looking for
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How can I output this to a csv or file?
Get-VM | Sort | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") | Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Format-Table -AutoSize
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
How can I get this exported to a csv or excel file?
Get-VM | Sort | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") | Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Format-Table -AutoSize
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try like this
Get-VM | Sort-Object -Property Name |
Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") |
Select -Property Name,
@{N="Configured OS";E={$_.Config.GuestFullName}},
@{N="Running OS";E={$_.Guest.GuestFullName}} |
Export-Csv report.csv -NoTypeInformation -UseCulture
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Worked great! Thanks LucD. Is there any other way to get a few more things out of this report.
vmem
vcpu
datacenter
cluster
vcenter folder or vm folder as example: discovered virtual machines?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
See my reply in the other thread.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That worked perfectly!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hey LucD,
i have a question about your Script.
I only need the output from Config.GuestFullName and i want to include it in my existing Script:
Get-VM -Location test | Select Name,NumCPU,MemoryMB,@{n="HardDiskSizeGB"; e={(Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum}},@{n="Date"; e={((Get-Date).ToString('yyyy-MM-dd'))}},@{n="IOLimit"; e={(Get-HardDisk -VM $_).ExtensionData.StorageIOAllocation.Limit | Measure-Object -Sum | Select -ExpandProperty Sum}},@{N="OS";E={$_.Guest.OSFullName}} | Export-Csv -Path "C:\powercli\VM_Report\csv_reports\$csvfile"
With Guest.OSFullName it works fine. But if i replace Guest.OSFullName with Config.GuestFullName, the output is empty.
It would be very kind of you, if you show me, how to include this in my existing Script above.
Ps. How can i paste code with syntax syntax highlighting this forum. ![]()
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The Config.GuestFullName is a property under the ExtensionData property.
It is not exposed in the .Net object of a VM, like Guest.OSFullName is.
It is a property in the vSphere VirtualMachine object.
Select Name,NumCPU,MemoryMB,
@{n="HardDiskSizeGB"; e={(Get-HardDisk -VM $_ | Measure-Object -Sum CapacityGB).Sum}},
@{n="Date"; e={((Get-Date).ToString('yyyy-MM-dd'))}},
@{n="IOLimit"; e={
(Get-HardDisk -VM $_).ExtensionData.StorageIOAllocation.Limit | Measure-Object -Sum | Select -ExpandProperty Sum}},
@{N="OS";E={$_.Guest.OSFullName}},
@{N= 'AlternateGuestName';E={$_.ExtensionData.Config.GuestFullName}} |
Export-Csv -Path "C:\powercli\VM_Report\csv_reports\$csvfile"
The HTML code can just be copied from the editor window in Visual Studio Code.
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ah, stupid mistake... Thank you LucD. Regards Henning
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You have most likely figured this out by now you but ill post as it may benefit someone. I needed to get all my Windows servers to build a list to ingest into another script.
I did the following:
$VMs = get-vm
$VMs.extensiondata.guest | where {$_.GuestFullName -like "Microsoft*"} | select HostName,IpAddress,GuestFullName | export-csv c:\temp\WinVMs.csv -NoTypeInformation
You can also condense to one line and not user a variable:
(get-vm).extensiondata.guest | where {$_.GuestFullName -like "Microsoft*"} | select HostName,IpAddress,GuestFullName | export-csv c:\temp\WinVMs.csv -NoTypeInformation
To get this info for all just drop the where statement:
(get-vm).extensiondata.guest | select HostName,IpAddress,GuestFullName | export-csv c:\temp\WinVMs.csv -NoTypeInformation
--OR--
$VMs = get-vm
$VMs.extensiondata.guest | select HostName,IpAddress,GuestFullName | export-csv c:\temp\WinVMs.csv -NoTypeInformation
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
From where to run this commands or script.