Just a quick script to set the Path Selection Policy on any LUNs on a host that do not have your target policy enabled. The script sets the server to Maintenance mode first, evacuating any VMs if you are in a full DRS automated environment. While this is not strictly necessary, it was required for my production environment just to be safe.
param( [string] $vCenterServer = $(Read-Host -prompt "Enter vCenter Server Name"), [string] $TargetPolicy = $(Read-Host -Prompt "Enter target policy (RoundRobin, Fixed or MostRecentlyUsed)"), [string] $TargetHost = $(Read-Host -Prompt "Enter target Host"), [switch] $WhatIf) # Add the VI-Snapin if it isn't loaded already if ((Get-PSSnapin -Name "VMware.VimAutomation.Core" -ErrorAction SilentlyContinue) -eq $null ) {Add-PSSnapin -Name "VMware.VimAutomation.Core"} Connect-VIServer $vCenterServer | out-null Write-Host "Connected to: " $vCenterServer -ForegroundColor Green Write-Host "Target PSP: " $TargetPolicy -ForegroundColor Yellow Write-Host switch ($TargetPolicy) { RoundRobin { $DisplayPolicy = "VMW_PSP_RR"; } MostRecentlyUsed { $DisplayPolicy = "VMW_PSP_MRU"; } Fixed { $DisplayPolicy = "VMW_PSP_FIXED"; } default { Write-Warning "Unknown PSP selected! Please consult the help and try again."; exit } } Write-Host "Setting Policy to"$TargetPolicy" on "$TargetHost -ForegroundColor Green if($WhatIf) { $vHost = Get-VMHost -Name $TargetHost $vHost | Set-VMHost -State Maintenance -Evacuate -WhatIf $vHost | Get-ScsiLun -LunType "disk" -ErrorAction SilentlyContinue | where {$_.IsLocal -eq $false -and $_.MultipathPolicy -ne $TargetPolicy} | Set-ScsiLun -MultipathPolicy $TargetPolicy -WhatIf $vHost | Set-VMHost -State Connected -WhatIf } else { $vHost = Get-VMHost -Name $TargetHost Write-Host "Setting "$TargetHost" to Maintenance Mode" -ForegroundColor White $vHost | Set-VMHost -State Maintenance -Evacuate $vHost | Get-ScsiLun -LunType "disk" -ErrorAction SilentlyContinue | where {$_.IsLocal -eq $false -and $_.MultipathPolicy -ne $TargetPolicy} | Set-ScsiLun -MultipathPolicy $TargetPolicy Write-Host "Exiting Maintenance mode on"$TargetHost -ForegroundColor White $vHost | Set-VMHost -State Connected }