Have been using this WMI call to get windows DSM driver version from a list of about 100 servers:
Get-WmiObject -Class Win32_Product -ComputerName $s -Filter "Name='Data ONTAP DSM for Windows MPIO'" #| Format-List -Property *
The problem is, using powershell it is VERY slow...takes about 2 hours to get thru 100 servers...Does anyone know of a Netapp powershell command to get the verison info for the Netapp DSM driver version ???
Using the "Win32_Product" WMI class has some downsides, the most notable is that it uses the MSI provider to enumerate the products and gather information. Every time you query Win32_Product it does that enumeration which has a non-inconsequential imact to the system (my Win10 quad core i7 desktop jumps to 25% CPU). You can see these queries happening in the Windows application log too.
There's some work arounds, like forward only enumerators, but the one I favor is from the Scripting Guy. It queries the registry for the software information and is significantly faster (and doesn't cause the MSI provider to eat a lot of CPU on the hosts).
Hope that helps!
If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.
I assume you are creating a variable from reading your machine list ($s), then running a ForEach loop through the list submitting each Cmdlet. But you could parrallelize this process by submitting each Cmdlet to run as a background job, thus dramatically improving total time to completion. Just add "-AsJob" to the end of your Cmdlet.
You can run "Get-Job" to see the status of your submitted jobs after that.
Probably a good idea to pipe the results to an OutFile for review.