установить PolicyStore в экземпляре CIM - PullRequest
2 голосов
/ 01 марта 2020

командлет Get-NetFirewallProfile имеет параметр -PolicyStore ActiveStore, который является суммой всех политик на этом компьютере. Когда я запускаю его, я получаю состояние профиля брандмауэра с учетом GPO.

В качестве альтернативы я могу получить экземпляр CIM с помощью Get-CimInstance -Namespace Root\StandardCimv2 -ClassName MSFT_NetFirewallProfile или Get-WmiObject -Namespace "Root\StandardCimv2" -Query "SELECT * FROM MSFT_NetFirewallProfile", НО значение GPO отбрасывается.

Как настроить хранилище политик в Get-WmiObject -Namespace "Root\StandardCimv2" -Query "SELECT * FROM MSFT_NetFirewallProfile"?

В конце я собираюсь реализовать запрос в c ++ с помощью wbemcli api

1 Ответ

1 голос
/ 09 марта 2020


Вы можете указать параметр PolicyStore, используя IWbemContext. Вот примеры кода, иллюстрирующие его использование:

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