Update Vi-Module.psm1
Hi Luc, I have fixed all your remarks.
This commit is contained in:
@@ -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"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user