-
Notifications
You must be signed in to change notification settings - Fork 3
/
PowerCLITools.Initialise.ps1
128 lines (98 loc) · 4.42 KB
/
PowerCLITools.Initialise.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# --- Check for IE Publisher Certificate Revocation and disable if necessary.
# --- Speeds up PowerCLI startup, see http://blogs.vmware.com/vipowershell/2010/01/troubleshooting-slow-startup-with-powercli-40-u1.html
$CertificateRevocation = (Get-ItemProperty -Path "HKCU:Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing" -Name State).State
if ($CertificateRevocation -ne 146944){
try {
Set-ItemProperty -Path "HKCU:Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing" -Name State -Value 146944
}
catch [Exception] {
Write-Warning "Unable to set Registry Value HKCU\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing\State to disable Publisher Certificate Revocation"
}
}
# --- Load PSSnapins
Confirm-PSSnapin VMware.VimAutomation.Core
# --- Create VIProperties
# --- AlarmDefinition
New-VIProperty -Name "ShortID" -ObjectType AlarmDefinition -Value {
param($AlarmDefinition)
$AlarmDefinition.ID -creplace 'Alarm-', ''
} -Force | Out-Null
# --- Cluster
New-VIProperty -Name "TotalCPUGhz" -ObjectType Cluster -Value {
param($Cluster)
[math]::Round($Cluster.ExtensionData.Summary.TotalCPU * 0.001,2)
} -BasedOnExtensionProperty Summary.TotalCPU -Force | Out-Null
New-VIProperty -Name "TotalRAMGB" -ObjectType Cluster -Value {
param($Cluster)
[math]::Round($Cluster.ExtensionData.Summary.TotalMemory / 1GB,2)
} -BasedOnExtensionProperty Summary.TotalMemory -Force | Out-Null
New-VIProperty -Name "TotalAllocatedvCPUs" -ObjectType Cluster -Value {
param($Cluster)
$TotalvCPU = 0
$Cluster | Get-VM | ForEach-Object {$TotalvCPU += $_.NumCPU}
$TotalvCPU
} -Force -WarningAction:SilentlyContinue | Out-Null
New-VIProperty -Name "TotalAllocatedvRAMGB" -ObjectType Cluster -Value {
param($Cluster)
$TotalvRAMGB = 0
$Cluster | Get-VM | ForEach-Object {$TotalvRAMGB += $_.MemoryGB}
$TotalvRAMGB
} -Force -WarningAction:SilentlyContinue | Out-Null
New-VIProperty -Name "NumberOfHosts" -ObjectType Cluster -Value {
param($Cluster)
@($Cluster.Extensiondata.Host).Count
} -BasedOnExtensionProperty Host -Force | Out-Null
New-VIProperty -Name "HostFailureImpact" -ObjectType Cluster -Value {
param($Cluster)
[math]::Round((1 / (@($Cluster.Extensiondata.Host).Count)) * 100,2)
} -BasedOnExtensionProperty Host -Force | Out-Null
# --- Datastore
New-VIProperty -Name "ProvisionedGB" -ObjectType Datastore -Value {
param($DataStore)
[Math]::Round(($DataStore.ExtensionData.Summary.Capacity - $DataStore.ExtensionData.Summary.FreeSpace + $DataStore.ExtensionData.Summary.Uncommitted)/1GB,0)
} -BasedONextensionProperty 'Summary' -Force | Out-Null
# --- VirtualMachine
New-VIProperty -Name "OSName" -ObjectType VirtualMachine -ValueFromExtensionProperty Config.GuestFullName -Force | Out-Null
New-VIProperty -Name "DNSName" -ObjectType VirtualMachine -ValueFromExtensionProperty Guest.Hostname -Force | Out-Null
New-VIProperty -Name 'BlueFolderPath' -ObjectType VirtualMachine -Value {
param($vm)
function Get-ParentName{
param($object)
if($object.Folder){
$blue = Get-ParentName $object.Folder
$name = $object.Folder.Name
}
elseif($object.Parent -and $object.Parent.GetType().Name -like "Folder*"){
$blue = Get-ParentName $object.Parent
$name = $object.Parent.Name
}
elseif($object.ParentFolder){
$blue = Get-ParentName $object.ParentFolder
$name = $object.ParentFolder.Name
}
if("vm","Datacenters" -notcontains $name){
$blue + "\" + $name
}
else{
$blue
}
}
(Get-ParentName $vm).Remove(0,1)
} -Force | Out-Null
# --- VMHost
New-VIProperty -Name "VMHostID" -ObjectType VMHost -Value {
param($VMHost)
$VMHost.ExtensionData.Config.Host.Value
} -BasedOnExtensionProperty Config.Host -Force | Out-Null
New-VIProperty -Name "NumberOfVMs" -ObjectType VMHost -Value {
param($VMHost)
($VMHost | Get-VM | Measure-Object).Count
} -Force | Out-Null
New-VIProperty -Name "CPUPercent" -ObjectType VMHost -Value {
param($VMHost)
($VMHost.CpuUsageMhz / $VMHost.CpuTotalMhz) * 100 -as [int]
} -Force | Out-Null
New-VIProperty -Name "MemoryPercent" -ObjectType VMHost -Value {
param($VMHost)
($VMHost.MemoryUsageGB / $VMHost.MemoryTotalGB) * 100 -as [int]
} -Force | Out-Null