62 lines
1.8 KiB
PowerShell
62 lines
1.8 KiB
PowerShell
<#
|
||
.NOTES
|
||
===========================================================================
|
||
Created by: Markus Kraus
|
||
Organization: Private
|
||
Personal Blog: mycloudrevolution.com
|
||
Twitter: @vMarkus_K
|
||
===========================================================================
|
||
Tested Against Environment:
|
||
vSphere Version: 6.0 U1, 5.5 U2
|
||
PowerCLI Version: PowerCLI 6.3 R1
|
||
PowerShell Version: 5.0
|
||
OS Version: Windows 8.1, Server 2012 R2
|
||
Keyword: ESXi, LUN, Path, Storage
|
||
|
||
Dependencies:
|
||
PowerCLI Version: PowerCLI 6.3 R1
|
||
|
||
.DESCRIPTION
|
||
This script will create a Report of LUNs with Paths that have more than one unique LUN ID or have more than the defined Paths.
|
||
Information’s will be gathered via ESXCLI. This is necessary to report also hidden Paths!
|
||
|
||
.Example
|
||
./Report-LUNPath-ESXCLI.ps1
|
||
|
||
#>
|
||
|
||
#Requires -Modules VMware.VimAutomation.Core, @{ModuleName="VMware.VimAutomation.Core";ModuleVersion="6.3.0.0"}
|
||
|
||
#region 1: Global Definitions
|
||
$MaxLUNPaths = 2
|
||
#endregion
|
||
|
||
#region 2: Get all Connected Hosts
|
||
$myHosts = Get-VMHost | where {$_.ConnectionState -eq "Connected" -and $_.PowerState -eq "PoweredOn"}
|
||
#endregion
|
||
|
||
#region 3: Create Report
|
||
$Report = @()
|
||
foreach ($myHost in $myHosts) {
|
||
$esxcli2 = Get-ESXCLI -VMHost $myHost -V2
|
||
$devices = $esxcli2.storage.core.path.list.invoke() | select Device -Unique
|
||
|
||
foreach ($device in $devices) {
|
||
$arguments = $esxcli2.storage.core.path.list.CreateArgs()
|
||
$arguments.device = $device.Device
|
||
$LUNs = $esxcli2.storage.core.path.list.Invoke($arguments)
|
||
|
||
$LUNReport = [PSCustomObject] @{
|
||
HostName = $myHost.Name
|
||
Device = $device.Device
|
||
LUNPaths = $LUNs.Length
|
||
LUNIDs = $LUNs.LUN | Select-Object -Unique
|
||
}
|
||
$Report += $LUNReport
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 4: Output Report
|
||
$Report | where {$_.LUNPaths -gt $MaxLUNPaths -or ($_.LUNIDs | measure).count -gt 1 } | ft -AutoSize
|
||
#endregion |