Maor Dahan
Maor Dahan

Reputation: 392

set PolicyStore in CIM instance

the Get-NetFirewallProfile cmdlet has the option -PolicyStore ActiveStore which is the sum of all policies on that computer. When I run it I get the firewall profile state with GPO taken under consideration.

Alternatively I can get the CIM instance with Get-CimInstance -Namespace Root\StandardCimv2 -ClassName MSFT_NetFirewallProfile or Get-WmiObject -Namespace "Root\StandardCimv2" -Query "SELECT * FROM MSFT_NetFirewallProfile", BUT the GPO value are discarded.

How can I set the policy store in the Get-WmiObject -Namespace "Root\StandardCimv2" -Query "SELECT * FROM MSFT_NetFirewallProfile"?

In the end I'm going to implement the query in c++ with the wbemcli api

Upvotes: 2

Views: 364

Answers (1)

mediant
mediant

Reputation: 61


You can specify PolicyStore parameter using IWbemContext. Here are the code samples illustrating its use:

PowerShell:

$CimSession = New-CimSession
$options = New-Object Microsoft.Management.Infrastructure.Options.CimOperationOptions
$options.SetCustomOption("PolicyStore", "ActiveStore", $true)
$CimSession.EnumerateInstances("Root\StandardCimv2", "MSFT_NetFirewallProfile", $options)

VB:

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\StandardCimv2")

Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
objCtx.Add "PolicyStore", "ActiveStore"

Set colSWbemObjectSet = objSWbemServices.InstancesOf("MSFT_NetFirewallProfile",,objCtx)
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Enabled: " & objSWbemObject.Enabled
Next

Upvotes: 2

Related Questions