When deploying a new Everpure FlashArray it is important to make sure that Microsoft Windows Server is configured properly and set to the recommended best practice settings for Multipath-IO, TRIM/UNMAP support, and checking that Offloaded Data Transfer (ODX) is enabled. In order to make this easy a Windows PowerShell cmdlet, Test-WindowsBestPractices, was introduced in the Everpure PowerShell Toolkit. Best practices for Windows Servers continues to apply for 2025.
The PowerShell Toolkit is open source and can be pulled or forked on GitHub.
The cmdlet has been renamed as of the Toolikit version 3. Exiting scripts and references will need to be updated to reflect the new name - Test-Pfa2WindowsBestPractices
Windows Server Version Support
The Test-WindowsBestPractices PowerShell cmdlet only works with Microsoft Windows Server 2012, 2012 R2, 2016, 2019, and 2022. It can also be used on Windows Server Core. The reason that the cmdlet is only supported under the latest versions of Windows Server is because of the various core PowerShell cmdlets that are used and only supported on the aforementioned versions of Windows Server.
How to Install to Toolkit
Open up an elevated Windows PowerShell session and enter the below commands.
An Untrusted Repository warning will display if the PowerShell Gallery (PSGallery) has not been added as a trusted repository. To check this information use the below cmdlets.
PS C:\> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
PS C:\> Get-PSRepository
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Trusted https://www.powershellgallery.com/api/v2/
PS C:\> Install-Module -Name PureStoragePowerShellToolkit
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
PS C:\> Get-Module -ListAvailable *Toolkit*
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 3.0.1 PureStoragePowerShellToolkit {New-FlashArrayCapacityReport, Test-WindowsBestPractices, ...
PS C:\> Get-Command Test-Pfa2WindowsBestPractices
CommandType Name Version Source
----------- ---- ------- ------
Function Test-Pfa2WindowsBestPractices 3.0.1 PureStoragePowerShellToolkit
How to Use Test-Pfa2WindowsBestPractices
Using the Test-Pfa2WindowsBestPractices cmdlet is very easy. Open a Windows PowerShell session and type the name of the cmdlet and hit enter. This is an example of the output (it may not reflect updated output after a toolkit revision).
============================================================
Pure Storage Windows Server Best Practice Analyzer
============================================================
==============================
Host Information
==============================
ChassisSerialNumber : FCH1834J5CP
CollectedDateTime : 10/26/2017 8:14:14 AM
Model : UCSB-B200-M3
Name : SERVER01
NumberOfCores : 20
NumberOfLogicalProcessors : 40
NumberOfProcessors : 2
OSName : Microsoft Windows Server 2016 Datacenter
OSSku : 8
OSSuite : 400
OSSuiteMask : 400
OSVersion : 10.0.14393
ProcessorFamily : 179
ProcessorManufacturer : GenuineIntel
ProcessorName : Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
SystemManufacturer : Cisco Systems Inc
==============================
Multipath-IO Verification
==============================
PASS: Multipath-IO is installed.
==============================
MPIO Setting Verification
==============================
Current MPIO Configuration
PathVerificationState : Disabled
PathVerificationPeriod : 30
PDORemovePeriod : 30
RetryCount : 3
RetryInterval : 1
UseCustomPathRecoveryTime : Enabled
CustomPathRecoveryTime : 20
DiskTimeoutValue : 60
PASS: Microsoft Device Specific Module (MSDSM) is configured for Pure Storage FlashArray.
PASS: MPIO PDORemovePeriod passes Windows Server Best Practice check.
PASS: MPIO UseCustomPathRecoveryTime passes Windows Server Best Practice check.
PASS: MPIO CustomPathRecoveryTime passes Windows Server Best Practice check.
PASS: MPIO DiskTimeoutValue passes Windows Server Best Practice check.
==============================
TRIM/UNMAP Verification
==============================
PASS: Delete Notification Enabled
PS C:\>
How to Read the Output
There are several sections of output that the cmdlet generates.
- Host Information -- Provides details on the current host being verified for best practices.
- Multipath-IO Verification -- Checks that Multipath-IO has been installed on the host.
- MPIO Setting Verification -- Checks and displays the current settings on the host for MPIO and then verifies those settings meet Everpure best practices.
- TRIM/UNMAP Verification -- Checks that Delete Notification is enabled.
Using the -Repair parameter
When running the cmdlet without the
-Repair parameter, the cmdlet will act in read-only mode and not make any alterations to the settings provided. You must use the cmdlet as follows to have it automatically adjust any settings that are presented with an alternate setting:
Test-Pfa2WindowsBestPractices -Repair
Feedback
If you have feedback on the Test-Pfa2WindowsBestPractices cmdlet please visit the Toolkit GitHub repository and create a new Issue. The issues are reviewed and will be considered for future releases of the cmdlet and toolkit.