The first concept version is working, here is the code, remeber, i only have 2 paths to each lun.
I am curious what you think about the script, please let me know:
#CREATED BY: Rob Mokkink Inter Access
Add-PSSnapin -Name "VMware.VimAutomation.Core"
#VARIABLES
$policy = new-object VMware.Vim.HostMultipathInfoFixedLogicalUnitPolicy
$policy.policy = "fixed"
$UNEVEN = "vmhba1"
$EVEN = "vmhba2"
$ESXHOST = read-host -prompt "Enter Host"
$USER = read-host -prompt "Enter User"
$PASSWORD_PROMPT = read-host -assecurestring -prompt "Enter password"
#CONVERT THE SECURE STRING
$CONVERT_PASSWORD = ::SecureStringToBSTR($PASSWORD_PROMPT)
$PASSWORD = ::PtrToStringAuto($CONVERT_PASSWORD)
#CONNECT TO THE SERVER
Get-esx -Server $ESXHOST -User $USER -Password $PASSWORD | fl
#GET THE STORAGE PATHS
$GET_HOST = Get-VMhost $ESXHOST
$HOST_VIEW = Get-View $GET_HOST.id
$STORAGESYSTEM = get-view $HOST_VIEW.ConfigManager.StorageSystem
#MAKE THE PATH FOR EACH LUN FIXED
write-output "SET LUN PATHS TO FIXED"
#LOOP THROUGH THE LUN'S ADD THEM TO THE ARRAY
$ARRLUN = $STORAGESYSTEM.StorageDeviceInfo.MultipathInfo.lun | where { $_.Path.length -gt 1 }
#LOOP THROUGH LUN's
foreach ($LUN in $ARRLUN)
#CHECK IF THE LUN IS EVEN OR UNEVEN AND SET THE POLICY
{ $CHECK_LUN = $LUN.id.split(':')
$CHECK_LUNID = $CHECK_LUN[2]
if($CHECK_LUNID -band 1)
{Write-Host $LUN.id = "Uneven"
#GET THE PROPER VMHBA
$GET_VMHBA = $LUN.Path | where {$_.Name -match $UNEVEN}
$policy.prefer = $GET_VMHBA.Name
#SET THE NEW PATH + POLICY
$storageSystem.SetMultipathLunPolicy($LUN.id, $policy)
}
else
{Write-Host $LUN.id = "Even"
#GET THE PROPER VMHBA
$GET_VMHBA = $LUN.Path | where {$_.Name -match $EVEN}
$policy.prefer = $GET_VMHBA.Name
#SET THE NEW PATH + POLICY
$storageSystem.SetMultipathLunPolicy($LUN.id, $policy)
}
}