Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.35 KB | None | 0 0
  1. $a = "<style>"
  2. $a = $a + "BODY{background-color:peachpuff;}"
  3. $a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
  4. $a = $a + "TH{border-width: 1px;padding: 1px;border-style: solid;border-color: black;background-color:thistle}"
  5. $a = $a + "TD{border-width: 1px;padding: 1px;border-style: solid;border-color: black;background-color:PaleGoldenrod}"
  6. $a = $a + "</style>"
  7.  
  8. [array]$vcenter_srv = @("10.1.1.100","myvcenter.mydomain.com")
  9. [array]$allobj = @()
  10. [string]$Admin = "Sudershan.Bharti@gmail.com"
  11. [string]$vPass = "Passw0rd"
  12. $OutputPath="C:\Temp\ClusterVMsToolsHW"
  13.  
  14. Remove-Item -Path ($OutputPath + "\*.*") -Confirm:$false -Force:$true -ErrorAction SilentlyContinue 2>&1 > $null
  15.  
  16. $vcenter_srv |
  17. %{
  18. Connect-VIServer $_ -User $Admin -Password $vPass -ErrorAction Stop
  19. $vC = $_
  20. $obj = New-Object -TypeName PSObject
  21. $v600 = "6.5.0"
  22. $v600 = "6.0.0"
  23. $v550 = "5.5.0"
  24. $v510 = "5.1.0"
  25. $v500 = "5.0.0"
  26. $v410 = "4.1.0"
  27. $v410 = "4.0.0"
  28. $vmx13 = "v13"
  29. $vmx11 = "v11"
  30. $vmx10 = "v10"
  31. $vmx9 = "v9"
  32. $vmx8 = "v8"
  33. $vmx7 = "v7"
  34. $Clusters = Get-Cluster
  35. Foreach ($Cluster in $Clusters)
  36. {
  37. $i = 1
  38. $AllVMs = $Cluster | Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"}
  39. Foreach ($vm in $AllVMs)
  40. {
  41. $ESXiHVer = ($vm.VMHost).Version
  42. $HWVer = [string]$vm.Version
  43. If($ESXiHVer -eq $v550 -and $HWVer -eq $vmx10)
  44. {
  45. $VMHWVerStatus = "OK"
  46. }
  47. elseif (($vm.VMHost).Version -eq $v550 -and [string]$vm.Version -ne $vmx10)
  48. {
  49. $VMHWVerStatus = "Update available"
  50. }
  51. elseif (($vm.VMHost).Version -eq $v510 -and [string]$vm.Version -eq $vmx9)
  52. {
  53. $VMHWVerStatus = "OK"
  54. }
  55. elseif (($vm.VMHost).Version -eq $v510 -and [string]$vm.Version -ne $vmx9)
  56. {
  57. $VMHWVerStatus = "Update available"
  58. }
  59. elseif (($vm.VMHost).Version -eq $v500 -and [string]$vm.Version -eq $vmx8)
  60. {
  61. $VMHWVerStatus = "OK"
  62. }
  63. elseif (($vm.VMHost).Version -eq $v500 -and [string]$vm.Version -ne $vmx8)
  64. {
  65. $VMHWVerStatus = "Update available"
  66. }
  67. elseif (($vm.VMHost).Version -eq $v410 -and [string]$vm.Version -eq $vmx7)
  68. {
  69. $VMHWVerStatus = "OK"
  70. }
  71. elseif (($vm.VMHost).Version -eq $v410 -and [string]$vm.Version -ne $vmx7)
  72. {
  73. $VMHWVerStatus = "Update available"
  74. }
  75. elseif (($vm.VMHost).Version -eq $v400 -and [string]$vm.Version -eq $vmx7)
  76. {
  77. $VMHWVerStatus = "OK"
  78. }
  79. elseif (($vm.VMHost).Version -eq $v400 -and [string]$vm.Version -ne $vmx7)
  80. {
  81. $VMHWVerStatus = "Update available"
  82. }
  83. elseif (($vm.VMHost).Version -eq $v600 -and [string]$vm.Version -eq $vmx11)
  84. {
  85. $VMHWVerStatus = "OK"
  86. }
  87. elseif (($vm.VMHost).Version -eq $v600 -and [string]$vm.Version -ne $vmx11)
  88. {
  89. $VMHWVerStatus = "Update available"
  90. }
  91. elseif (($vm.VMHost).Version -eq $v650 -and [string]$vm.Version -eq $vmx13)
  92. {
  93. $VMHWVerStatus = "OK"
  94. }
  95. elseif (($vm.VMHost).Version -eq $v650 -and [string]$vm.Version -ne $vmx13)
  96. {
  97. $VMHWVerStatus = "Update available"
  98. }
  99. Else{
  100. $VMHWVerStatus = "Validate"
  101. }
  102. $props = @{
  103. "vCenter" = $vC;
  104. "ClusterName"= $Cluster.Name;
  105. "VMName"= $vm.Name;
  106. "OS" = $vm.ExtensionData.summary.config.guestfullname;
  107. "VMToolsVersionStatus" = $vm.ExtensionData.Guest.ToolsVersionStatus;
  108. "ESXiHost" = $vm.VMHost;
  109. "ESXiHostVersion" = ($vm.VMHost).Version;
  110. "HWVersion" = [string]$vm.Version;
  111. "VMHWVersionStatus" = $VMHWVerStatus
  112. }
  113. $obj = New-Object -TypeName PSObject -Property $Props
  114. $obj = $obj | Select-Object -Property "vCenter", "ClusterName", "VMName", "OS", "VMToolsVersionStatus", "ESXiHost", "ESXiHostVersion","HWVersion", "VMHWVersionStatus"
  115. $allobj += $obj
  116. $props = ""
  117. Write-Progress -Activity "Looking up Clusters" -Status "Current Cluster: $($Cluster.Name) in $vC" -PercentComplete ($i/(($AllVMs| Measure).Count)*100)
  118. $i++
  119. }
  120. }
  121. Disconnect-VIServer * -Confirm:$false
  122. }
  123. $allobj | Select-Object -Property * | Export-Csv -Path $OutputPath\ClusterVMsToolsHW.csv -NoTypeInformation
  124. $allobj | ConvertTo-Html -Head $a | Out-File $OutputPath\ClusterVMsToolsHW.html
  125. $emailto = "Sudershan.Bharti@gmail.com"
  126. $emailcc = "Sudershan.Bharti@gmail.com"
  127. $emailfrom = "ClusterVMsToolsHW@gmail.com"
  128. $smtpserver = "smtp.gmail.com"
  129. $vmbody = Get-Content $OutputPath\ClusterVMsToolsHW.html
  130. Send-mailmessage -to $emailto -cc $emailcc -from $emailfrom -subject "Cluster VMTool HW# Report" -body ($vmbody | out-string) -BodyAsHtml -SmtpServer $smtpserver
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement