Microsoft Virtualization Discussions

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

pippen23
4,933 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
4,920 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
4,843 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