FlashArray: Windows Server FC Setup PowerShell script
[ NOTE: machine translation with the help of DeepL translator without additional proofreading and spell checking ]
A configuration of FlashArrays is "pretty straightforward". The connection to VMware hosts with Fibre Channel (FC) as well as Internet SCSI (iSCSI) is simple and quickly done without much "brainwork" - VMware does almost everything itself with the associated best practices. The connection to physical Windows hosts with FC is a bit more complicated. For Windows hosts with iSCSI, the host configuration is relatively complicated and involves research and some manual tasks for admins. A reason to address and finally solve the "pain" with a tool - an all-round carefree tool - with all best practices for the optimal FC system configuration.
HERE GOES TO THE SCRIPT FOR ISCSI ENVIRONMENTS:
FlashArray: Windows Server iSCSI Setup PowerShell script
The "Windows Server FC Setup" PowerShell script does the job for you based on a few parameter requests:
Installation of the Pure Storage Powershell SDK v2 + Toolkit
Creation of the host object on the FlashArray(s) including host WWNs
Installing the Windows Server Multipathing IO feature
Applying the MPIO/best practice parameters
Validation of the Windows host against best practices (uses official Pure Storage Toolkit)
The script was developed for FlashArray standalone configurations (with two FC interfaces per controller), but is also suitable for ActiveCluster configurations! For this, the script simply has to be executed again on the host for the second FlashArray (with the adjusted-applicable variables).
The script is also suitable for single fabric architectures in addition to dual fabric architectures. Also for more than two FC interfaces per controller - only one re-execution is necessary.
Requirements
To use the PowerShell script, the following system requirements must be met.
To the host operating system:
64-bit Windows Server 2012/2012R2/2016/2019
Windows PowerShell version 5.0
Microsoft .NET Framework 4.7.2 or .NET Core 2.1 or later
The following system requirements can be created with the help of the script (option 1):
Pure Storage PowerShell SDK v2 (requires .NET Framework - must be pre-installed/offline installer .NET 4.7.2 included in directory if applicable)
Pure Storage PowerShell Toolkit
To FlashArray:
FlashArray with Purity REST API 2.2 (given as of Purity 6.0.0)
Host FlashArray TCP IP connection via port 443/HTTPS
TIPP: to check the available API version of the FlashArray, open a web browser and access the web link:
https://<FQDN or IP address of FlashArrays>/api/api_version

The development environment/config (= base screenshots included in the blog).
As already mentioned, the script is suitable for single and dual fabric configurations:
Dual fabric configuration (default)
You can see a simplified visualization (the SAN simplified) of a dual fabric configuration. There are two FC switches with the host FC port1/FlashArray-ct0/ct1.fc0 zoned to Fabric1 and the host FC port2/FlashArray-ct0/ct1.eth2 zoned within Fabric2.

A dual fabric configuration (common standard) is found in the test/development environment!
How To: Use Windows Server FC Setup script
The script can be downloaded free of charge in the PUREFLASH.blog member area. The registration is done quickly, it is non-binding and revocable at any time. Beside the script there are already several other contents available for download. So it's worth to register: to the protected area.
I have packed the script together with the release notes into a ZIP file, which is 85 MB in size due to screenshots and setup files (.NET). After successful unpacking you have to run the Windows PowerShell as administrator. This is mandatory to install the corresponding PowerShell modules.
HINT: Please read the release notes included in the ZIP!
Run script with administrator privileges
The script is executed from the previously unpacked folder with all its contents as administrator. The seven menu options are used to access the individual configuration steps.


Option 1 - Install the Pure Storage PowerShell SDK v2 and Toolkit
With option 1, you install the Pure Storage PowerShell SDK v2 and import the Pure Storage PowerShell Toolkit into your PowerShell modules.
The installation of the SDK (MSI package) and the import of the toolkit is automatic. Before doing so, make sure that the system requirements (see above) are met.
The modules are mandatory for the further use of the individual script options!
After successful installation/import the PowerShell session/script must be terminated and executed again.

Option 2 - Creation of the host object on the FlashArray(s) including host WWNs.
Option 2 creates the Host object with its associated WWN (Windows Host) on the FlashArray. A REST API connection to the FlashArray is established. The connection is made through the VIP (virtual ip) of the FlashArray with a user having at least "storage admin" privileges.

Nach erfolgreicher Anmeldung werden die verfügbaren WWN(s) des Windows Hosts ausgegeben und Sie müssen die zu konfigurierenden WWN(s) per Copy-Paste auswählen.

The host object is created with the respective computer name.
At the end of this script option, the connection to FlashArray REST API is automatically disconnected.
HINT: For ActiveCluster configurations, keep in mind that the steps described are also performed for the second system.
Option 3 - Installation of Windows Server Multipath-IO Features
Option 3 installs the Windows Server Multipath IO feature.
After the successful feature installation, a server restart is required!
However, the server restart can also be performed after executing script option 4.
Option 4 - Apply the MPIO/Best Practice parameters.
Option 4 finally completes the configuration.
Corresponding best-practice settings are set:
Adjust MPIO device setting: PURE - FlashArray (New-MSDSMSupporedHW)
Adjust storage settings to: OnlineAll (Set-StorageSetting)
Adjust MPIO Load-Balancing Policy to: Round Robin (Set-MSDSMGlobalDefaultLoadBalancePolicy)
Adjust path recovery to: active (Set-MPIOSetting -CustomPathRecovery)
Adjustment of the path recovery time to: 20 seconds (Set-MPIOSetting -NewPathRecoveryInterval)
Adjust "physical device object" PDO to: 30 seconds (Set-MPIOSetting -NewPDORemovePeriod)
Adjust disk timeout value to: 60 seconds (Set-MPIOSetting -NewDiskTimeout)
Adjust path verification to: active (Set-MPIOSetting -NewPathVerificationState)
After the successful parameter adjustments a server restart is required at the latest!

Option 5 - Validate Windows host against best practices (uses official Pure Storage Toolkit)
This runs the official "Pure Storage Windows Server Best Practices Analyzer" and checks for an optimal server configuration.

HINT: the script and its individual configuration steps contain personal experience values, which have also been confirmed by official Pure Storage system engineers. Pure Storage officially recommends:

Feedback on the script is welcome via the comment function.
In case of problems it is worth to have a look at the release notes.
Otherwise I wish you a lot of fun using the script.
More info - Links
All officially published setting options in the GUI but also CLI can be read via the "on-board" user guides of the Pure Storage systems.
Click on "Help" in the Purity main menu.
The User Guide is structured like the main menu and can be opened downwards. A search function is also integrated - within here you can also search for keywords.
WEB: Pure Storage (Pure1) support portal - Ticket system and support *(requires registered FlashSystems)
PHONE: Pure Storage phone support: GER - (+49) (0)800 7239467; INTERNATIONAL - (+1) 650 7294088
WEB: Pure Storage OFFICIAL blog