29 September 2017 update:
I’ve added an additional parameter to allow passing a PSCredential object to this function/cmdlet. This is helpful when the user running the script/cmdlet does not have permissions on the target computer. Another enhancement in this update to to trap errors resulting from failure to WMI connect to the target computer like in case of ‘Access Denied’, or ‘RPC Server not available’ errors.
Get-SBWMI PowerShell function is part of the SB-Tools PowerShell module. It provides similar functionality to the native Get-WMIObject cmdlet with added option: Timeout.
The function takes 1 required parameter; ‘Class’. For example
will return output similar to:
It also accepts the following optional parameters:
Property name of the provided ‘Class’ such as ‘NumberofLogicalProcessors’ property of the ‘Win32_computerSystem’ class:
Get-SBWMI Win32_computerSystem -Property NumberofLogicalProcessors
In the format Property=Value such as ‘DriveLetter=e:’
Get-SBWMI -Class Win32_Volume -Filter 'DriveLetter=e:'
Remote computer name or IP address
Get-SBWMI Win32_computersystem -ComputerName mgmt
The default is ‘root\cimv2’. To see name spaces type:
(Get-WmiObject -Namespace 'root' -Class '__Namespace').Name
In seconds. The default is 20.
This is a particularly helpful option especially if you’re in the situation of trying to query many hundreds or thousands of computers, where the vast majority respond quickly but few can drag out for several minutes or not respond at all causing the script to hang if using the native Get-WMIObject cmdlet.
To download and install the latest version of SB-Tools from the PowerShell Gallery, type
Install-Module SB-Tools,POSH-SSH -Force
SB-Tools contains functions that depend on POSH-SSH module, and they’re typically installed together.
To load the SB-Tools and POSH-SSH modules type:
Import-Module SB-Tools,POSH-SSH -DisableNameChecking
To view a list of cmdlets/functions in SB-Tools, type
Get-Command -Module SB-Tools
To view the built-in help of one of the SB-Tools functions/cmdlets, type
help <function/cmdlet name> -show
help Convert-IpAddressToMaskLength -show