Update Vi-Module.psm1

Hi Luc,
I have fixed all your remarks.
This commit is contained in:
Roman Gelman
2016-08-03 16:28:49 +03:00
committed by GitHub
parent f40ca375a1
commit 0b69b0dbe1

View File

@@ -27,8 +27,9 @@ Function Get-RDM {
Version 1.1 :: 03-Dec-2015 :: Bugfix :: Error message appear while VML mismatch, Version 1.1 :: 03-Dec-2015 :: Bugfix :: Error message appear while VML mismatch,
when the VML identifier does not match for an RDM on two or more ESXi hosts. when the VML identifier does not match for an RDM on two or more ESXi hosts.
VMware [KB2097287]. VMware [KB2097287].
Version 1.2 :: 03-Aug-2016 :: Improvement :: GetType() method replaced by -is for type determine.
.LINK .LINK
http://goo.gl/3wO4pi http://www.ps1code.com/single-post/2015/10/16/How-to-get-RDM-Raw-Device-Mappings-disks-using-PowerCLi
#> #>
[CmdletBinding()] [CmdletBinding()]
@@ -53,7 +54,7 @@ Process {
Foreach ($vm in ($VMs |Get-View)) { Foreach ($vm in ($VMs |Get-View)) {
Foreach ($dev in $vm.Config.Hardware.Device) { Foreach ($dev in $vm.Config.Hardware.Device) {
If (($dev.GetType()).Name -eq "VirtualDisk") { If ($dev -is [VMware.Vim.VirtualDisk]) {
If ("physicalMode","virtualMode" -contains $dev.Backing.CompatibilityMode) { If ("physicalMode","virtualMode" -contains $dev.Backing.CompatibilityMode) {
Write-Progress -Activity "Gathering RDM ..." -CurrentOperation "Hard disk - [$($dev.DeviceInfo.Label)]" -Status "VM - $($vm.Name)" Write-Progress -Activity "Gathering RDM ..." -CurrentOperation "Hard disk - [$($dev.DeviceInfo.Label)]" -Status "VM - $($vm.Name)"
@@ -106,22 +107,25 @@ Function Convert-VmdkThin2EZThick {
.SYNOPSIS .SYNOPSIS
Inflate thin virtual disks. Inflate thin virtual disks.
.DESCRIPTION .DESCRIPTION
This function convert all Thin Provisioned VM's disks to type 'Thick Provision Eager Zeroed'. This function converts all Thin Provisioned VM' disks to type 'Thick Provision Eager Zeroed'.
.PARAMETER VM .PARAMETER VM
VM's collection, returned by Get-VM cmdlet. Virtual Machine(s).
.EXAMPLE .EXAMPLE
C:\PS> Get-VM VM1 |Convert-VmdkThin2EZThick C:\PS> Get-VM VM1 |Convert-VmdkThin2EZThick
.EXAMPLE .EXAMPLE
C:\PS> Get-VM VM1,VM2 |Convert-VmdkThin2EZThick -Confirm:$false |sort VM,Datastore,VMDK |ft -au C:\PS> Get-VM VM1,VM2 |Convert-VmdkThin2EZThick -Confirm:$false |sort VM,Datastore,VMDK |ft -au
.INPUTS .INPUTS
Get-VM collection. [VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine[]] Objects, returned by Get-VM cmdlet.
[VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine[]]
.OUTPUTS .OUTPUTS
PSObject collection. [System.Management.Automation.PSCustomObject] PSObject collection.
.NOTES .NOTES
Author: Roman Gelman. Author: Roman Gelman.
Version 1.0 :: 05-Nov-2015 :: Release.
Version 1.1 :: 03-Aug-2016 :: Improvements ::
[1] GetType() method replaced by -is for type determine.
[2] Parameter 'VMs' renamed to 'VM', parameter alias renamed from 'VM' to 'VMs'.
.LINK .LINK
http://goo.gl/cVpTpO http://www.ps1code.com/single-post/2015/11/05/How-to-convert-Thin-Provision-VMDK-disks-to-Eager-Zeroed-Thick-using-PowerCLi
#> #>
[CmdletBinding(ConfirmImpact='High',SupportsShouldProcess=$true)] [CmdletBinding(ConfirmImpact='High',SupportsShouldProcess=$true)]
@@ -130,8 +134,8 @@ Param (
[Parameter(Mandatory=$true,Position=1,ValueFromPipeline=$true,HelpMessage="VM's collection, returned by Get-VM cmdlet")] [Parameter(Mandatory=$true,Position=1,ValueFromPipeline=$true,HelpMessage="VM's collection, returned by Get-VM cmdlet")]
[ValidateNotNullorEmpty()] [ValidateNotNullorEmpty()]
[Alias("VM")] [Alias("VMs")]
[VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine[]]$VMs [VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine[]]$VM
) )
@@ -144,23 +148,23 @@ Begin {
Process { Process {
Foreach ($vm in ($VMs |Get-View)) { Foreach ($vmv in ($VM |Get-View)) {
### Ask confirmation to proceed if VM is PoweredOff ### ### Ask confirmation to proceed if VM is PoweredOff ###
If ($vm.Runtime.PowerState -eq 'poweredOff' -and $PSCmdlet.ShouldProcess("VM [$($vm.Name)]","Convert all Thin Provisioned VMDK to Type: 'Thick Provision Eager Zeroed'")) { If ($vmv.Runtime.PowerState -eq 'poweredOff' -and $PSCmdlet.ShouldProcess("VM [$($vmv.Name)]","Convert all Thin Provisioned VMDK to Type: 'Thick Provision Eager Zeroed'")) {
### Get ESXi object where $vm is registered ### ### Get ESXi object where $vmv is registered ###
$esx = Get-View $vm.Runtime.Host $esx = Get-View $vmv.Runtime.Host
### Get Datacenter object where $vm is registered ### ### Get Datacenter object where $vmv is registered ###
$parentObj = Get-View $vm.Parent $parentObj = Get-View $vmv.Parent
While ($parentObj -isnot [VMware.Vim.Datacenter]) {$parentObj = Get-View $parentObj.Parent} While ($parentObj -isnot [VMware.Vim.Datacenter]) {$parentObj = Get-View $parentObj.Parent}
$datacenter = New-Object VMware.Vim.ManagedObjectReference $datacenter = New-Object VMware.Vim.ManagedObjectReference
$datacenter.Type = 'Datacenter' $datacenter.Type = 'Datacenter'
$datacenter.Value = $parentObj.MoRef.Value $datacenter.Value = $parentObj.MoRef.Value
Foreach ($dev in $vm.Config.Hardware.Device) { Foreach ($dev in $vmv.Config.Hardware.Device) {
If (($dev.GetType()).Name -eq "VirtualDisk") { If ($dev -is [VMware.Vim.VirtualDisk]) {
If ($dev.Backing.ThinProvisioned -and $dev.Backing.Parent -eq $null) { If ($dev.Backing.ThinProvisioned -and $dev.Backing.Parent -eq $null) {
$sizeGB = [math]::Round(($dev.CapacityInKB / 1MB), 1) $sizeGB = [math]::Round(($dev.CapacityInKB / 1MB), 1)
@@ -171,11 +175,11 @@ Process {
$task = Get-View $taskMoRef $task = Get-View $taskMoRef
### Show task progress ### ### Show task progress ###
For ($i=1;$i -lt [int32]::MaxValue;$i++) { For ($i=1; $i -lt [int32]::MaxValue; $i++) {
If ("running","queued" -contains $task.Info.State) { If ("running","queued" -contains $task.Info.State) {
$task.UpdateViewData("Info") $task.UpdateViewData("Info")
If ($task.Info.Progress -ne $null) { If ($task.Info.Progress -ne $null) {
Write-Progress -Activity "Inflate virtual disk task is in progress ..." -Status "VM - $($vm.Name)" ` Write-Progress -Activity "Inflate virtual disk task is in progress ..." -Status "VM - $($vmv.Name)" `
-CurrentOperation "$($dev.DeviceInfo.Label) - $($dev.Backing.FileName) - $sizeGB GB" ` -CurrentOperation "$($dev.DeviceInfo.Label) - $($dev.Backing.FileName) - $sizeGB GB" `
-PercentComplete $task.Info.Progress -ErrorAction SilentlyContinue -PercentComplete $task.Info.Progress -ErrorAction SilentlyContinue
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
@@ -194,7 +198,7 @@ Process {
$null = $dev.Backing.FileName -match $regxVMDK $null = $dev.Backing.FileName -match $regxVMDK
$Properties = [ordered]@{ $Properties = [ordered]@{
VM = $vm.Name VM = $vmv.Name
VMHost = $esx.Name VMHost = $esx.Name
Datastore = $Matches.Datastore Datastore = $Matches.Datastore
VMDK = $Matches.Filename VMDK = $Matches.Filename
@@ -210,7 +214,7 @@ Process {
} }
} }
} }
$vm.Reload() $vmv.Reload()
} }
} }
} }
@@ -224,15 +228,13 @@ New-Alias -Name Convert-ViMVmdkThin2EZThick -Value Convert-VmdkThin2EZThick -For
Function Find-VcVm { Function Find-VcVm {
#requires -version 3.0
<# <#
.SYNOPSIS .SYNOPSIS
Search VC's VM throw direct connection to group of ESXi Hosts. Search VC's VM throw direct connection to group of ESXi Hosts.
.DESCRIPTION .DESCRIPTION
This script generate list of ESXi Hosts with common suffix in name, This script generates a list of ESXi Hosts with common suffix in a name,
e.g. (esxprod1,esxprod2, ...) or (esxdev01,esxdev02, ...) etc. and e.g. (esxprod1,esxprod2, ...) or (esxdev01,esxdev02, ...) etc. and
search VCenter's VM throw direct connection to this group of ESXi Hosts. searches VCenter's VM throw direct connection to this group of ESXi Hosts.
.PARAMETER VC .PARAMETER VC
VC's VM Name. VC's VM Name.
.PARAMETER HostSuffix .PARAMETER HostSuffix
@@ -244,41 +246,45 @@ Function Find-VcVm {
.PARAMETER AddZero .PARAMETER AddZero
Add ESXi Hosts' postfix leading zero to one-digit postfix (from 01 to 09). Add ESXi Hosts' postfix leading zero to one-digit postfix (from 01 to 09).
.EXAMPLE .EXAMPLE
C:\PS> .\Find-VC.ps1 vc1 esxprod 1 20 -AddZero PS C:\> Find-VcVm vc1 esxprod 1 20 -AddZero
.EXAMPLE .EXAMPLE
C:\PS> .\Find-VC.ps1 -VC vc1 -HostSuffix esxdev -PostfixEnd 6 PS C:\> Find-VcVm -VC vc1 -HostSuffix esxdev -PostfixEnd 6
.EXAMPLE .EXAMPLE
C:\PS> .\Find-VC.ps1 vc1 esxprod |fl PS C:\> Find-VcVm vc1 esxprod |fl
.NOTES .NOTES
Author: Roman Gelman. Author :: Roman Gelman.
Limitation :: [1] The function uses common credentials for all ESXi hosts.
[2] The hosts' Lockdown mode should be disabled.
Version 1.0 :: 03-Sep-2015 :: Release.
Version 1.1 :: 03-Aug-2016 :: Improvement :: Returned object properties changed.
.OUTPUTS .OUTPUTS
PSCustomObject with two Properties: VC,VMHost or $null. [System.Management.Automation.PSCustomObject] PSObject collection.
.LINK .LINK
http://rgel75.wix.com/blog http://ps1code.com
#> #>
Param ( Param (
[Parameter(Mandatory=$true,Position=1,HelpMessage="vCenter's VM Name")] [Parameter(Mandatory=$true,Position=1,HelpMessage="vCenter's VM Name")]
[Alias("vCenter","VcVm")] [Alias("vCenter","VcVm")]
[System.String]$VC [string]$VC
, ,
[Parameter(Mandatory=$true,Position=2,HelpMessage="ESXi Hosts' common suffix")] [Parameter(Mandatory=$true,Position=2,HelpMessage="ESXi Hosts' common suffix")]
[Alias("VMHostSuffix","ESXiSuffix")] [Alias("VMHostSuffix","ESXiSuffix")]
[System.String]$HostSuffix [string]$HostSuffix
, ,
[Parameter(Mandatory=$false,Position=3,HelpMessage="ESXi Hosts' postfix number start")] [Parameter(Mandatory=$false,Position=3,HelpMessage="ESXi Hosts' postfix number start")]
[ValidateRange(1,98)] [ValidateRange(1,98)]
[Alias("PostfixFirst","Start")] [Alias("PostfixFirst","Start")]
[Int]$PostfixStart = 1 [int]$PostfixStart = 1
, ,
[Parameter(Mandatory=$false,Position=4,HelpMessage="ESXi Hosts' postfix number end")] [Parameter(Mandatory=$false,Position=4,HelpMessage="ESXi Hosts' postfix number end")]
[ValidateRange(2,99)] [ValidateRange(2,99)]
[Alias("PostfixLast","End")] [Alias("PostfixLast","End")]
[Int]$PostfixEnd = 9 [int]$PostfixEnd = 9
, ,
[Parameter(Mandatory=$false,Position=5,HelpMessage="Add ESXi Hosts' postfix leading zero")] [Parameter(Mandatory=$false,Position=5,HelpMessage="Add ESXi Hosts' postfix leading zero")]
[Switch]$AddZero = $false [switch]$AddZero = $false
) )
Begin { Begin {
@@ -289,7 +295,6 @@ Begin {
Process { Process {
$VMHostName = ''
$cred = Get-Credential -UserName root -Message "Common VMHost Credentials" $cred = Get-Credential -UserName root -Message "Common VMHost Credentials"
If ($cred) { If ($cred) {
$hosts = @() $hosts = @()
@@ -301,9 +306,15 @@ Process {
$hosts += $HostSuffix + $i $hosts += $HostSuffix + $i
} }
} }
Connect-VIServer $hosts -WarningAction SilentlyContinue -ErrorAction SilentlyContinue -Credential $cred |select Name,IsConnected |ft -AutoSize
Connect-VIServer $hosts -WarningAction SilentlyContinue -ErrorAction SilentlyContinue -Credential $cred `
|select @{N='VMHost';E={$_.Name}},IsConnected |ft -AutoSize
If ($global:DefaultVIServers.Length -ne 0) { If ($global:DefaultVIServers.Length -ne 0) {
$VMHostName = (Get-VM -ErrorAction SilentlyContinue |? {$_.Name -eq $VC} |select -ExpandProperty VMHost).Name $TargetVM = Get-VM -ErrorAction SilentlyContinue |? {$_.Name -eq $VC}
$VCHostname = $TargetVM.Guest.HostName
$PowerState = $TargetVM.PowerState
$VMHostHostname = $TargetVM.VMHost.Name
Disconnect-VIServer -Server '*' -Force -Confirm:$false Disconnect-VIServer -Server '*' -Force -Confirm:$false
} }
} }
@@ -311,15 +322,16 @@ Process {
End { End {
If ($VMHostName) { If ($TargetVM) {
$Properties = [ordered]@{ $Properties = [ordered]@{
VC = $VC VC = $VC
VMHost = $VMHostName Hostname = $VCHostname
PowerState = $PowerState
VMHost = $VMHostHostname
} }
$Object = New-Object PSObject -Property $Properties $Object = New-Object PSObject -Property $Properties
return $Object $Object
} }
Else {return $null}
} }
} #EndFunction Find-VcVm } #EndFunction Find-VcVm
@@ -337,7 +349,7 @@ Function Set-PowerCLiTitle {
.NOTES .NOTES
Author: Roman Gelman. Author: Roman Gelman.
.LINK .LINK
http://goo.gl/0h97C6 http://www.ps1code.com/single-post/2015/11/17/ConnectVIServer-deep-dive-or-%C2%ABWhere-am-I-connected-%C2%BB
#> #>
$VIS = $global:DefaultVIServers |sort -Descending ProductLine,Name $VIS = $global:DefaultVIServers |sort -Descending ProductLine,Name
@@ -390,15 +402,17 @@ Filter Get-VMHostFirmwareVersion {
[System.String[]] BIOS/UEFI version and release date. [System.String[]] BIOS/UEFI version and release date.
.NOTES .NOTES
Author: Roman Gelman. Author: Roman Gelman.
Version 1.0 :: 09-Jan-2016 :: Release.
Version 1.1 :: 03-Aug-2016 :: Improvement :: GetType() method replaced by -is for type determine.
.LINK .LINK
https://goo.gl/Yg7mYp http://www.ps1code.com/single-post/2016/1/9/How-to-know-ESXi-servers%E2%80%99-BIOSFirmware-version-using-PowerCLi
#> #>
Try Try
{ {
If ($_.GetType().Name -eq 'VMHostImpl') {$BiosInfo = ($_ |Get-View).Hardware.BiosInfo} If ($_ -is [VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost]) {$BiosInfo = ($_ |Get-View).Hardware.BiosInfo}
ElseIf ($_.GetType().Name -eq 'HostSystem') {$BiosInfo = $_.Hardware.BiosInfo} ElseIf ($_ -is [VMware.Vim.HostSystem]) {$BiosInfo = $_.Hardware.BiosInfo}
ElseIf ($_.GetType().Name -eq 'String') {$BiosInfo = (Get-View -ViewType HostSystem -Filter @{"Name" = $_}).Hardware.BiosInfo} ElseIf ($_ -is [string]) {$BiosInfo = (Get-View -ViewType HostSystem -Filter @{"Name" = $_}).Hardware.BiosInfo}
Else {Throw "Not supported data type as pipeline"} Else {Throw "Not supported data type as pipeline"}
$fVersion = $BiosInfo.BiosVersion -replace ('^-\[|\]-$', $null) $fVersion = $BiosInfo.BiosVersion -replace ('^-\[|\]-$', $null)
@@ -444,7 +458,7 @@ Function Compare-VMHostSoftwareVib {
Version 1.0 :: 10-Jan-2016 :: Release. Version 1.0 :: 10-Jan-2016 :: Release.
Version 1.1 :: 01-May-2016 :: Improvement :: Added support for PowerCLi 6.3R1 and ESXCLI V2 interface. Version 1.1 :: 01-May-2016 :: Improvement :: Added support for PowerCLi 6.3R1 and ESXCLI V2 interface.
.LINK .LINK
https://goo.gl/Yg7mYp http://www.ps1code.com/single-post/2016/1/10/How-to-compare-installed-VIB-packages-between-two-or-more-ESXi-hosts
#> #>
Param ( Param (
@@ -454,8 +468,8 @@ Param (
[VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost]$ReferenceVMHost [VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost]$ReferenceVMHost
, ,
[Parameter(Mandatory,Position=2,ValueFromPipeline,HelpMessage="Difference VMHosts collection")] [Parameter(Mandatory,Position=2,ValueFromPipeline,HelpMessage="Difference VMHosts collection")]
[Alias("DifferenceESXi")] [Alias("DifferenceESXi","DifferenceVMHosts")]
[VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost[]]$DifferenceVMHosts [VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost[]]$DifferenceVMHost
) )
Begin { Begin {
@@ -580,15 +594,16 @@ Function Enable-VMHostSSH {
.NOTES .NOTES
Author :: Roman Gelman. Author :: Roman Gelman.
Version 1.0 :: 07-Feb-2016 :: Release. Version 1.0 :: 07-Feb-2016 :: Release.
Version 1.1 :: 02-Aug-2016 :: -Cluster parameter data type changed to the portable type.
.LINK .LINK
https://goo.gl/Yg7mYp http://www.ps1code.com/single-post/2016/02/07/How-to-enabledisable-SSH-on-all-ESXi-hosts-in-a-cluster-using-PowerCLi
#> #>
Param ( Param (
[Parameter(Mandatory=$false,Position=0,ValueFromPipeline=$true)] [Parameter(Mandatory=$false,Position=0,ValueFromPipeline=$true)]
[ValidateNotNullorEmpty()] [ValidateNotNullorEmpty()]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.ClusterImpl[]]$Cluster = (Get-Cluster) [VMware.VimAutomation.ViCore.Types.V1.Inventory.Cluster[]]$Cluster = (Get-Cluster)
) )
Process { Process {
@@ -654,15 +669,16 @@ Function Disable-VMHostSSH {
.NOTES .NOTES
Author :: Roman Gelman. Author :: Roman Gelman.
Version 1.0 :: 07-Feb-2016 :: Release. Version 1.0 :: 07-Feb-2016 :: Release.
Version 1.1 :: 02-Aug-2016 :: -Cluster parameter data type changed to the portable type.
.LINK .LINK
https://goo.gl/Yg7mYp http://www.ps1code.com/single-post/2016/02/07/How-to-enabledisable-SSH-on-all-ESXi-hosts-in-a-cluster-using-PowerCLi
#> #>
Param ( Param (
[Parameter(Mandatory=$false,Position=0,ValueFromPipeline=$true)] [Parameter(Mandatory=$false,Position=0,ValueFromPipeline=$true)]
[ValidateNotNullorEmpty()] [ValidateNotNullorEmpty()]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.ClusterImpl[]]$Cluster = (Get-Cluster) [VMware.VimAutomation.ViCore.Types.V1.Inventory.Cluster[]]$Cluster = (Get-Cluster)
, ,
[Parameter(Mandatory=$false,Position=1)] [Parameter(Mandatory=$false,Position=1)]
[Switch]$BlockFirewall [Switch]$BlockFirewall
@@ -743,7 +759,7 @@ Function Set-VMHostNtpServer {
Author :: Roman Gelman. Author :: Roman Gelman.
Version 1.0 :: 10-Mar-2016 :: Release. Version 1.0 :: 10-Mar-2016 :: Release.
.LINK .LINK
http://goo.gl/Q4S6yc http://www.ps1code.com/single-post/2016/03/10/How-to-configure-NTP-servers-setting-on-ESXi-hosts-using-PowerCLi
#> #>
[CmdletBinding()] [CmdletBinding()]
@@ -842,7 +858,7 @@ Function Get-Version {
PS C:\> Get-Version -VCenter |Format-Table -AutoSize PS C:\> Get-Version -VCenter |Format-Table -AutoSize
Get all connected VCenter servers/ESXi hosts versions and PowerCLi version. Get all connected VCenter servers/ESXi hosts versions and PowerCLi version.
.EXAMPLE .EXAMPLE
PS C:\> Get-DistributedSwitch |Get-Version |sort Version |? {$_.Version -lt 5.5} PS C:\> Get-VDSwitch |Get-Version |sort Version |? {$_.Version -lt 5.5}
Get all DVSwitches that have version below 5.5. Get all DVSwitches that have version below 5.5.
.EXAMPLE .EXAMPLE
PS C:\> Get-Datastore |Get-Version |? {$_.Version.Major -eq 3} PS C:\> Get-Datastore |Get-Version |? {$_.Version.Major -eq 3}
@@ -858,8 +874,11 @@ Function Get-Version {
.NOTES .NOTES
Author :: Roman Gelman. Author :: Roman Gelman.
Version 1.0 :: 23-May-2016 :: Release. Version 1.0 :: 23-May-2016 :: Release.
Version 1.1 :: 03-Aug-2016 :: Bugfix ::
[1] VDSwitch data type changed from [VMware.Vim.VmwareDistributedVirtualSwitch] to [VMware.VimAutomation.Vds.Types.V1.VmwareVDSwitch].
[2] Function Get-VersionVDSwitch edited to support data type change.
.LINK .LINK
http://goo.gl/Dd6Ilt http://www.ps1code.com/single-post/2016/05/25/How-to-know-any-VMware-object%E2%80%99s-version-Use-GetVersion
#> #>
[CmdletBinding(DefaultParameterSetName='VIO')] [CmdletBinding(DefaultParameterSetName='VIO')]
@@ -1081,7 +1100,7 @@ Begin {
$ProductTypeName = 'VMware DVSwitch' $ProductTypeName = 'VMware DVSwitch'
Try Try
{ {
$ProductInfo = $InputObject.Summary.ProductInfo $ProductInfo = $InputObject.ExtensionData.Summary.ProductInfo
$ProductFullVersion = 'VMware Distributed Virtual Switch ' + $ProductInfo.Version + ' build-' + $ProductInfo.Build $ProductFullVersion = 'VMware Distributed Virtual Switch ' + $ProductInfo.Version + ' build-' + $ProductInfo.Build
$ProductVersion = [version]($ProductInfo.Version + '.' + $ProductInfo.Build) $ProductVersion = [version]($ProductInfo.Version + '.' + $ProductInfo.Build)
@@ -1195,11 +1214,11 @@ Process {
If ($PSCmdlet.ParameterSetName -eq 'VIO') { If ($PSCmdlet.ParameterSetName -eq 'VIO') {
Foreach ($obj in $VIObject) { Foreach ($obj in $VIObject) {
If ($obj -is 'VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost') {Get-VersionVMHostImpl -InputObject $obj} If ($obj -is [VMware.VimAutomation.ViCore.Types.V1.Inventory.VMHost]) {Get-VersionVMHostImpl -InputObject $obj}
ElseIf ($obj -is 'VMware.Vim.HostSystem') {Get-VersionVMHostView -InputObject $obj} ElseIf ($obj -is [VMware.Vim.HostSystem]) {Get-VersionVMHostView -InputObject $obj}
ElseIf ($obj -is 'VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine') {Get-VersionVM -InputObject $obj} ElseIf ($obj -is [VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine]) {Get-VersionVM -InputObject $obj}
ElseIf ($obj -is 'VMware.Vim.VmwareDistributedVirtualSwitch') {Get-VersionVDSwitch -InputObject $obj} ElseIf ($obj -is [VMware.VimAutomation.Vds.Types.V1.VmwareVDSwitch]) {Get-VersionVDSwitch -InputObject $obj}
ElseIf ($obj -is 'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.VmfsDatastore') {Get-VersionDatastore -InputObject $obj} ElseIf ($obj -is [VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.VmfsDatastore]) {Get-VersionDatastore -InputObject $obj}
Else {Write-Warning "Not supported object type"} Else {Write-Warning "Not supported object type"}
} }
} }