NetApp Community Update
This site will enter Read Only mode on July 23 as we prepare to move to a new platform. You will still be able to view content, but posting and replying will be temporarily disabled.
We're excited to launch our new Community experience on July 30 and more information will follow soon.
Stay connected during the transition - Join our Discord community today.

Microsoft Virtualization Discussions

Using powershell to query Windows servers to DSM version info...

pippen23
7,568 Views

Hello all-

 

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 ???

2 REPLIES 2

asulliva
7,555 Views

Hello @pippen23,

 

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!

 

Andrew

If this post resolved your issue, please help others by selecting ACCEPT AS SOLUTION or adding a KUDO.

ChanceBingen
7,478 Views

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.

 

 

 

Public