#pragma autorecover
#pragma namespace("\\\\.\\root\\Microsoft\\Windows\\Dns")

Instance of __Win32Provider as $prov
{
  Name = "DnsClientPSProvider";
  ClsId = "{ED4B1828-CD88-460F-AEFF-3D63FC8BBF68}";
  ImpersonationLevel = 1;
  HostingModel = "NetworkServiceHost";
  version = 1073741825;
};

Instance of __MethodProviderRegistration
{
  Provider = $prov;
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class DnsClientNrptGlobal
{
  [read : ToSubclass,write : ToSubclass,ValueMap{"Disable", "EnableOnNetworkId", "EnableDA", "DisableDA"} : ToSubclass] string EnableDAForAllNetworks;
  [read : ToSubclass,write : ToSubclass,ValueMap{"Disable", "FallbackSecure", "FallbackUnsecure", "FallbackPrivate"} : ToSubclass] string SecureNameQueryFallback;
  [read : ToSubclass,write : ToSubclass,ValueMap{"Disable", "QueryIPv6Only", "QueryBoth"} : ToSubclass] string QueryPolicy;
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class DnsClientNrptRule
{
  [read : ToSubclass] uint32 Version;
  [read : ToSubclass,write : ToSubclass] string Namespace[];
  [read : ToSubclass,write : ToSubclass] string Name;
  [read : ToSubclass,write : ToSubclass] string DisplayName;
  [read : ToSubclass] boolean DnsSecEnabled;
  [read : ToSubclass,write : ToSubclass] boolean DnsSecValidationRequired;
  [read : ToSubclass,write : ToSubclass] boolean DnsSecQueryIPsecRequired;
  [read : ToSubclass,write : ToSubclass,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DnsSecQueryIPsecEncryption;
  [read : ToSubclass] boolean DirectAccessEnabled;
  [read : ToSubclass,write : ToSubclass] string IPsecCARestriction;
  [read : ToSubclass,write : ToSubclass] string DirectAccessDnsServers[];
  [read : ToSubclass,write : ToSubclass] boolean DirectAccessQueryIPsecRequired;
  [read : ToSubclass,write : ToSubclass,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DirectAccessQueryIPsecEncryption;
  [read : ToSubclass,write : ToSubclass,ValueMap{"NoProxy", "UseDefault", "UseProxyName"} : ToSubclass] string DirectAccessProxyType;
  [read : ToSubclass,write : ToSubclass] string DirectAccessProxyName;
  [read : ToSubclass,write : ToSubclass] string NameServers[];
  [read : ToSubclass,write : ToSubclass,ValueMap{"Disable", "Utf8WithMapping", "Utf8WithoutMapping", "Punycode"} : ToSubclass] string NameEncoding;
  [read : ToSubclass,write : ToSubclass] string Comment;
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class DnsClientPolicyConfiguration
{
  [read : ToSubclass] string Namespace;
  [read : ToSubclass] boolean DirectAccessEnabled;
  [read : ToSubclass,ValueMap{"Disable", "QueryIPv6Only", "QueryBoth"} : ToSubclass] string QueryPolicy;
  [read : ToSubclass,ValueMap{"Disable", "FallbackSecure", "FallbackUnsecure", "FallbackPrivate"} : ToSubclass] string SecureNameQueryFallback;
  [read : ToSubclass] string DnsSecIPsecCARestriction;
  [read : ToSubclass] boolean DnsSecValidationRequired;
  [read : ToSubclass] boolean DnsSecQueryIPsecRequired;
  [read : ToSubclass,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DnsSecQueryIPsecEncryption;
  [read : ToSubclass] string DirectAccessIPsecCARestriction;
  [read : ToSubclass] boolean DirectAccessQueryIPsecRequired;
  [read : ToSubclass,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DirectAccessQueryIPsecEncryption;
  [read : ToSubclass] string DirectAccessDnsServers[];
  [read : ToSubclass,ValueMap{"Direct", "UseDefault", "UseProxyName", "NoProxy"} : ToSubclass] string DirectAccessProxyType;
  [read : ToSubclass,write : ToSubclass] string DirectAccessProxyName;
  [read : ToSubclass] string NameServers[];
  [read : ToSubclass,ValueMap{"Disable", "Utf8WithMapping", "Utf8WithoutMapping", "Punycode"} : ToSubclass] string NameEncoding;
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class PS_DnsClientNrptGlobal
{
  [implemented,static : ToSubclass DisableOverride] uint32 Set([In] string EnableDAForAllNetworks,[In] string GpoName,[In] string SecureNameQueryFallback,[In] string QueryPolicy,[In] string Server,[In] boolean PassThru,[Out,EmbeddedInstance("DnsClientNrptGlobal") : ToSubclass] DnsClientNrptGlobal cmdletOutput);
  [implemented,static : ToSubclass DisableOverride] uint32 Get([In] string Server,[In] string GpoName,[Out,EmbeddedInstance("DnsClientNrptGlobal") : ToSubclass] DnsClientNrptGlobal cmdletOutput);
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class PS_DnsClientNrptPolicy
{
  [implemented,static : ToSubclass DisableOverride] uint32 Get([In] boolean Effective,[In] string Namespace,[Out,EmbeddedInstance("DnsClientPolicyConfiguration") : ToSubclass] DnsClientPolicyConfiguration cmdletOutput[]);
};

[ClassVersion("1.0.0"),locale(1033),dynamic : ToInstance,provider("DnsClientPSProvider") : ToInstance] 
class PS_DnsClientNrptRule
{
  [implemented,static : ToSubclass DisableOverride] uint32 Add([In] string GpoName,[In] string DANameServers[],[In] boolean DAIPsecRequired,[In,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DAIPsecEncryptionType,[In] string DAProxyServerName,[In] boolean DnsSecEnable,[In] boolean PassThru,[In,ValueMap{"NoProxy", "UseDefault", "UseProxyName"} : ToSubclass] string DAProxyType,[In] boolean DnsSecValidationRequired,[In] boolean DAEnable,[In] string IPsecTrustAuthority,[In] string Comment,[In] string DisplayName,[In] boolean DnsSecIPsecRequired,[In,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DnsSecIPsecEncryptionType,[In] string NameServers[],[In] string NameEncoding,[In] string Namespace[],[In] string Server,[Out,EmbeddedInstance("DnsClientNrptRule") : ToSubclass] DnsClientNrptRule cmdletOutput);
  [implemented,static : ToSubclass DisableOverride] uint32 Remove([In] string GpoName,[In] string Name,[In] boolean PassThru,[In] string Server,[In] boolean Force,[Out,EmbeddedInstance("DnsClientNrptRule") : ToSubclass] DnsClientNrptRule cmdletOutput);
  [implemented,static : ToSubclass DisableOverride] uint32 Get([In] string GpoName,[In] string Name[],[In] string Server,[Out,EmbeddedInstance("DnsClientNrptRule") : ToSubclass] DnsClientNrptRule cmdletOutput[]);
  [implemented,static : ToSubclass DisableOverride] uint32 Set([In] boolean DAEnable,[In,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DAIPsecEncryptionType,[In] boolean DAIPsecRequired,[In] string DANameServers[],[In] string DAProxyServerName,[In,ValueMap{"NoProxy", "UseDefault", "UseProxyName"} : ToSubclass] string DAProxyType,[In] string DisplayName,[In] boolean PassThru,[In] string IPsecTrustAuthority,[In] string Name,[In] string NameEncoding,[In] string NameServers[],[In] string Namespace[],[In] string Server,[In] string Comment,[In] boolean DnsSecEnable,[In,ValueMap{"None", "Low", "Medium", "High"} : ToSubclass] string DnsSecIPsecEncryptionType,[In] boolean DnsSecIPsecRequired,[In] boolean DnsSecValidationRequired,[In] string GpoName,[Out,EmbeddedInstance("DnsClientNrptRule") : ToSubclass] DnsClientNrptRule cmdletOutput);
};
