10 Replies Latest reply on Nov 18, 2019 4:36 AM by ganapa2000

    Missing VMs without VMware Tools

    ganapa2000 Hot Shot

      Hi,

       

      The below scripts works where VMware Tools are installed but it is not listing the VMs where VMware Tools are not installed.

       

      Please help.

       

      $VmInfo = Foreach($vc in $global:DefaultVIServers){

      ForEach ($VM in Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc)

      {

      ($VM.Extensiondata.Guest.Disk | Select @{N="Name";E={$VM.Name}},

      @{N='vCenter';E={([uri]$vm.ExtensionData.Client.ServiceUrl).Host}},

      @{N="IPAddress";E={$VM.guest.IPAddress[0]}},

      @{N="VM PowerState";E={@($VM.PowerState)}},

      @{N="Operating System"; E={@($VM.guest.OSFullName)}},

      @{N="Folder";E={$VM.Folder.Name}},

      }

      }

      $VmInfo

        • 1. Re: Missing VMs without VMware Tools
          LucD Guru
          vExpertCommunity WarriorsUser Moderators

          Try like this

           

          $VmInfo = Foreach ($vc in $global:DefaultVIServers) {

            Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

            Select Name,

                @{N = 'vCenter'; E = { ([uri]$_.ExtensionData.Client.ServiceUrl).Host } },

                @{N = "IPAddress"; E = { $_.guest.IPAddress[0] } },

                @{N = "VM PowerState"; E = { @($_.PowerState) } },

                @{N = "Operating System"; E = { @($_.guest.OSFullName) } },

                @{N = "Folder"; E = { $_.Folder.Name } }

          }

          $VmInfo

          • 2. Re: Missing VMs without VMware Tools
            ganapa2000 Hot Shot

            LucD,

             

            After modifying, Mountpoint, Capacity, Freespace, Usedspace shows blank

             

            $VmInfo = Foreach ($vc in $global:DefaultVIServers) {

            Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

            Select Name,

            @{N='vCenter';E={([uri]$_.ExtensionData.Client.ServiceUrl).Host}},

            @{N="IPAddress";E={$_.guest.IPAddress[0]}},

            @{N="VM PowerState";E={@($_.PowerState)}},

            @{N="Operating System";E={@($_.guest.OSFullName)}},

            @{N="Folder";E={$_.Folder.Name}},

            @{N="MountPoint";E={$_.DiskPath}},

            @{N="Capacity(GB)";E={[math]::Round($_.Capacity/ 1GB)}},

            @{N="FreeSpace(GB)";E={[math]::Round($_.FreeSpace / 1GB)}},

            @{N="FreeSpace(%)";E={[math]::Round(((100* ($_.FreeSpace))/($_.Capacity)),0)}},

            @{N="UsedSpace(GB)";E={[math]::Round(((($_.Capacity / 1GB))-($_.FreeSpace / 1GB)),0)}}

            }

            $VmInfo

            • 3. Re: Missing VMs without VMware Tools
              LucD Guru
              User ModeratorsvExpertCommunity Warriors

              Those properties were not in your original script.
              And they of course need a different script.
              The following is one way of displaying the data

               

              $VmInfo = Foreach ($vc in $global:DefaultVIServers) {

                Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

                Get-VMGuest |

                Select @{N='Name';E={$_.Vm.Name}},

                    @{N = 'vCenter'; E = { ([uri]$_.Vm.ExtensionData.Client.ServiceUrl).Host } },

                    @{N = "IPAddress"; E = { $_.IPAddress[0] } },

                    @{N = "VM PowerState"; E = { @($_.Vm.PowerState) } },

                    @{N = "Operating System"; E = { @($_.OSFullName) } },

                    @{N = "Folder"; E = { $_.Vm.Folder.Name } },

                    @{N="MountPoint";E={$_.Disks.Path -join '|'}},

                    @{N="Capacity(GB)";E={($_.Disks.Capacity | %{[math]::Round($_/ 1GB)}) -join '|'}},

                    @{N="FreeSpace(GB)";E={($_.Disks.FreeSpace | %{[math]::Round($_ / 1GB)}) -join '|'}},

                    @{N="FreeSpace(%)";E={($_.Disks | %{[math]::Round(((100* ($_.FreeSpace))/($_.Capacity)),0)}) -join '|'}},

                    @{N="UsedSpace(GB)";E={($_.Disks | %{[math]::Round(((($_.Capacity / 1GB))-($_.FreeSpace / 1GB)),0)}) -join '|'}}    

              }

              $VmInfo

              • 4. Re: Missing VMs without VMware Tools
                ganapa2000 Hot Shot

                LucD,

                 

                I am getting the Mountpoint, Capacity and other in single line, But I would like to get in different lines,

                 

                I tried as below, but not working

                 

                $VmInfo = Foreach ($vc in $global:DefaultVIServers) {

                  Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

                  Get-VMGuest |

                  Select @{N='Name';E={$_.Vm.Name}},

                      @{N = 'vCenter'; E = { ([uri]$_.Vm.ExtensionData.Client.ServiceUrl).Host } },

                      @{N = "IPAddress"; E = { $_.IPAddress[0] } },

                      @{N = "VM PowerState"; E = { @($_.Vm.PowerState) } },

                      @{N = "Operating System"; E = { @($_.OSFullName) } },

                      @{N = "Folder"; E = { $_.Vm.Folder.Name } },

                      @{N="MountPoint";E={$_.Disks.Path}},

                      @{N="Capacity(GB)";E={[math]::Round($_.Disks.Capacity/ 1GB)}},

                      @{N="FreeSpace(GB)";E={[math]::Round($_.Disks.FreeSpace / 1GB)}},

                      @{N="FreeSpace(%)";E={[math]::Round(((100* ($_.Disks.FreeSpace))/($_.Disks.Capacity)),0)}},

                      @{N="UsedSpace(GB)";E={[math]::Round(((($_.Disks.Capacity / 1GB))-($_.Disks.FreeSpace / 1GB)),0)}}

                }

                $VmInfo

                • 5. Re: Missing VMs without VMware Tools
                  LucD Guru
                  Community WarriorsvExpertUser Moderators

                  If you want each mount point on a different line, you are going to have redundant data (appearing in each row).

                  Something like this

                   

                  $VmInfo = Foreach ($vc in $global:DefaultVIServers) {

                      Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

                      Get-VMGuest | ForEach-Object -Process {

                          $vmg = $_

                          $vmg.Disks | Select @{N='Name';E={$vmg.Vm.Name}},

                          @{N = 'vCenter'; E = { ([uri]$vmg.Vm.ExtensionData.Client.ServiceUrl).Host } },

                          @{N = "IPAddress"; E = { $vmg.IPAddress[0] } },

                          @{N = "VM PowerState"; E = { @($vmg.Vm.PowerState) } },

                          @{N = "Operating System"; E = { @($vmg.OSFullName) } },

                          @{N = "Folder"; E = { $vmg.Vm.Folder.Name } },

                          @{N="MountPoint";E={$_.Path}},

                          @{N="Capacity(GB)";E={[math]::Round($_.Capacity/ 1GB)}},

                          @{N="FreeSpace(GB)";E={[math]::Round($_.FreeSpace / 1GB)}},

                          @{N="FreeSpace(%)";E={[math]::Round(((100* ($_.FreeSpace))/($_.Capacity)),0)}},

                          @{N="UsedSpace(GB)";E={[math]::Round(((($_.Capacity / 1GB))-($_.FreeSpace / 1GB)),0)}}

                    }

                  }

                  $VmInfo

                  • 6. Re: Missing VMs without VMware Tools
                    ganapa2000 Hot Shot

                    LucD,

                     

                    The script works where VMware Tools are installed but it is not listing the VMs where VMware Tools are not installed or not working.

                    • 7. Re: Missing VMs without VMware Tools
                      LucD Guru
                      Community WarriorsvExpertUser Moderators

                      Which is normal since Get-VMGuest requires VMware Tools for most of the properties.

                      What do you want to display when the VMware Tools are not installed or running?

                      • 8. Re: Missing VMs without VMware Tools
                        ganapa2000 Hot Shot

                        LucD,

                         

                        I would like to get the VM Name listed in the report, even if VMware Tools are not installed with the blank fields.

                         

                        Currently, I will miss on the VMs where VMware Tools is not installed or running. It would be difficult, which VM I need to gather disk info manually.

                        • 9. Re: Missing VMs without VMware Tools
                          LucD Guru
                          User ModeratorsCommunity WarriorsvExpert

                          That would require a different approach.
                          Something like this

                           

                          $vmInfo = Foreach ($vc in $global:DefaultVIServers)

                          {

                              Get-Folder Universal-Dev -Server $vc | Get-VM -Server $vc |

                              ForEach-Object -Process {

                                  $obj = [HashTable]::new()

                                  $obj.Add('Name', $_.Name)

                                  $obj.Add('vCenter', ([uri]$_.ExtensionData.Client.ServiceUrl).Host)

                                  $obj.Add('VM PowerState', $_.PowerState)

                                  $obj.Add('Folder', $_.Folder.Name)

                                  $obj.Add('IPAddress', '')

                                  $obj.Add('Mountpoint', '')

                                  $obj.Add('Capacity(GB)', '')

                                  $obj.Add('FreeSpace(GB)', '')

                                  $obj.Add('FreeSpace(%)', '')

                                  $obj.Add('UsedSpace(GB)', '')


                                  $vmg = Get-VMGuest -VM $_

                                  if ($vmg.Disks)

                                  {

                                      $vmg.Disks | ForEach-Object -Process {

                                          $t = $obj.Clone()

                                          $t.IPAddress = $vmg.IPAddress[0]

                                          $t.Mountpoint = $_.Path

                                          $t."Capacity(GB)" = [math]::Round($_.Capacity / 1GB)

                                          $t."FreeSpace(GB)" = [math]::Round($_.FreeSpace / 1GB)

                                          $t."FreeSpace(%)" = [math]::Round(((100 * ($_.FreeSpace)) / ($_.Capacity)), 0)

                                          $t."UsedSpace(GB)" = [math]::Round(((($_.Capacity / 1GB)) - ($_.FreeSpace / 1GB)), 0)

                                          New-Object PSObject -Property $t

                                      }

                                  }

                                  else

                                  {

                                      New-Object PSObject -Property $obj

                                  }

                              }

                          }

                          $vmInfo |

                          Select Name, vCenter, 'VM PowerState', Folder, IPAddress, Mountpoint, 'Capacity(GB)', 'FreeSpace(GB)', 'FreeSpace(%)', 'UsedSpace(GB)'

                          • 10. Re: Missing VMs without VMware Tools
                            ganapa2000 Hot Shot

                            Perfect LucD, Thank you very very much