Troubleshooting Get-MPIOSetting in Windows Server

Explore the issues with the Test-WindowsBestPractices cmdlet in Pure Storage’s PowerShell Toolkit caused by a Windows Server Cumulative Update. Learn how to troubleshoot MPIO settings and find workarounds for impacted environments.

Troubleshooting Get-MPIOSetting in Windows Server

image_pdfimage_print

This blog was published in 2018. Some information may have changed.

There have been a number of customers that have hit an issue with the Test-WindowsBestPractices cmdlet which is part of the PowerShell Toolkit. The problem started to manifest in the November 2017 timeframe when a Cumulative Update (CU) was rolled out across Windows Server 2012, 2012 R2 and 2016. I have confirmed this bug with Microsoft and have an open case with them to keep status on when (and if) a fix will be rolled into the previously mentioned versions of Windows Server.

I have confirmed that this issue is fixed in the latest Insider Preview builds of 17093 or greater. To explain the root of the issue below are two examples of running Get-MPIOSetting on Windows Server 2016 and the other on Windows Server 10.0.17093.

Windows Server 2016

In this example Get-MPIOSetting is output to a variable $mpio. Prior to the issue coming up using this method the $mpio variable was addressable to get/set the individual properties. Using this method after the Windows Server CU was applied shows that the individual properties can no longer be retrieved directly.

Windows Server 10.0.17093

Using the latest version of the Windows Server Insider Preview and applying the same method as explained for the Windows Server 2016 shows that the properties are now properly retrieved.

The impact of this issue in Windows Server 2012, 2012 R2 and 2016 for Pure Storage customers who use the Test-WindowsBestPractices cmdlet is that it simply doesn’t work properly. I have tried a number of methods that I’m not particularly fond of like substring. There I said it. Every line of PowerShell that used ____. Below is the new version that I implemented in the PowerShell Toolkit 1802.22. This checks for Windows Server version and then substrings the results of Get-MPIOSetting. Why do I check what version? Well that’s the other problem. I get different substring results between Windows Server 2012 R2 and 2016. The outcome for now is that customers should use Get-MPIOSetting and Set-MPIOSetting directly and not the Test-WindowsBestPractices cmdlet. Details for how use those cmdlets are outlined in the article Step 02 — Configuring Multipath-IO which is part of the Microsoft Platform Guide. The hope is that a fix will come out for the previous versions of Windows Server I mentioned sooner than later.

Conclusion

The Test-WindowsBestPractices cmdlet issue in the PowerShell Toolkit highlights the importance of adapting to changes introduced by Windows Server updates. While the bug in earlier versions of Windows Server creates challenges for Pure Storage customers, workarounds like directly using Get-MPIOSetting and Set-MPIOSetting ensure that configurations remain accurate and systems operate reliably.

Pure Storage remains committed to supporting its customers by providing clear documentation and timely updates. As Microsoft progresses toward resolving these issues in newer builds, customers can rely on the outlined methods to maintain best practices in their storage environments. Staying informed and adaptable is key to navigating such challenges effectively.

flash array test drive