dry - Can I use the data from my Resource.Schema.Mof file in a powershell script? -


i'm working on writing dsc resource managing windows dns configuration items (bootmethod, eventloglevel, etc.). get-targetresource function needs iterate on of configuration items resource able manage. currently, i've got hashtable in resource.psm1 file describing of these, i'd able use description exists in resource.schema.mof file, required build resource in first place. possible, or possibly ill-advised reason i'm not aware of?

schema.mof:

[classversion("1.0.0"), friendlyname("go_dnsserverconfig")] class go_dnsserverconfig : omi_baseresource { [key] string name; [write,valuemap{"present","absent"},values{"present","absent"}] string ensure; [write] uint32 addressanswerlimit; [write,valuemap{"0","1"},values{"0","1"}] uint32 bindsecondaries; [write,valuemap{"0","1","2","3"},values{"0","1","2","3"}] uint32 bootmethod; [write,valuemap{"0","1"},values{"0","1"}] uint32 defaultagingstate; [write] uint32 defaultnorefreshinterval; [write] uint32 defaultrefreshinterval; [write,valuemap{"0","1"},values{"0","1"}] uint32 disableautoreversezones; [write,valuemap{"0","1"},values{"0","1"}] uint32 disablensrecordsautocreation; [write] uint32 dspollinginterval; [write] uint32 dstombstoneinterval; [write] uint32 ednscachetimeout; /* not appear implemented in dnscmd [write,valuemap{"0","1"},values{"0","1"}] uint32 enablednsprobes; */ [write,valuemap{"0","1"},values{"0","1"}] uint32 enablednssec; [write,valuemap{"0","1"},values{"0","1"}] uint32 enableglobalnamessupport; [write,valuemap{"0","1"},values{"0","1"}] uint32 enableglobalqueryblocklist; [write,valuemap{"0","1","2","4"},values{"0","1","2","4"}] uint32 eventloglevel; [write,valuemap{"0","1"},values{"0","1"}] uint32 forwarddelegations; [write] uint32 forwardingtimeout; [write,valuemap{"0","1"},values{"0","1"}] uint32 globalnamesqueryorder; /* [read,valuemap{"isatap","wpad"},values{"isatap","wpad"}] string globalqueryblocklist; */ [write,valuemap{"0","1"},values{"0","1"}] uint32 isslave; [write,valuemap{"0","1"},values{"0","1"}] uint32 localnetpriority; [write] uint32 logfilemaxsize; [write] string logfilepath; [write] string logipfilterlist; [write] uint32 loglevel; [write] uint64 maxcachesize; [write] uint32 maxcachettl; [write,valuemap{"0","1","2","3"},values{"0","1","2","3"}] uint16 namecheckflag; [write,valuemap{"0","1"},values{"0","1"}] uint32 norecursion; [write] uint32 recursionretry; [write] uint32 recursiontimeout; [write,valuemap{"0","1"},values{"0","1"}] uint32 roundrobin; [write] uint32 rpcprotocol; [write] uint32 scavenginginterval; [write,valuemap{"0","1"},values{"0","1"}] uint32 secureresponses; [write] uint32 sendport; [write] string serverlevelplugindll; [write,valuemap{"0","1"},values{"0","1"}] uint32 strictfileparsing; [write] uint32 updateoptions; [write,valuemap{"0","1"},values{"0","1"}] uint32 writeauthorityns; [write] uint32 xfrconnecttimeout; }; 

get-targetresource function:

function get-targetresource { [cmdletbinding()] [outputtype([hashtable])] param (     [parameter(mandatory = $true)]     [string]$name )  set-strictmode -version 2.0 $erroractionpreference = 'stop'  $configitems = @{     name                         = $name;     ensure                       = $null;     addressanswerlimit           = $null;     bindsecondaries              = $null;     bootmethod                   = $null;     defaultagingstate            = $null;     defaultnorefreshinterval     = $null;     defaultrefreshinterval       = $null;     disableautoreversezones      = $null;     disablensrecordsautocreation = $null;     dspollinginterval            = $null;     dstombstoneinterval          = $null;     ednscachetimeout             = $null;     #enablednsprobes              = $null; #disabled; see schema.     enablednssec                 = $null;     enableglobalnamessupport     = $null;     enableglobalqueryblocklist   = $null;     eventloglevel                = $null;     forwarddelegations           = $null;     forwardingtimeout            = $null;     globalnamesqueryorder        = $null;     globalqueryblocklist         = $null;     isslave                      = $null;     localnetpriority             = $null;     logfilemaxsize               = $null;     logfilepath                  = $null;     logipfilterlist              = $null;     loglevel                     = $null;     maxcachesize                 = $null;     maxcachettl                  = $null;     namecheckflag                = $null;     norecursion                  = $null;     recursionretry               = $null;     recursiontimeout             = $null;     roundrobin                   = $null;     rpcprotocol                  = $null;     scavenginginterval           = $null;     secureresponses              = $null;     sendport                     = $null;     serverlevelplugindll         = $null;     strictfileparsing            = $null;     updateoptions                = $null;     writeauthorityns             = $null;     xfrconnecttimeout            = $null; }  write-verbose "check see if there dns server present on box." $configitems.ensure = get-ensurevalue if ($configitems.ensure -eq 'present') {     write-verbose "a dns server found on machine."     $configitems.ensure = 'present'      write-verbose "create new hashtable store result."     $result = @{}      write-verbose "add manually enumerated values resultset."     $result.add('name', $configitems.name)     $result.add('ensure', $configitems.ensure)      write-verbose "get current value item null."     $configitems.getenumerator() `     | where-object {$_.value -eq $null} `     | foreach-object `     {         $itemname = $_.name         write-verbose "getting: '$itemname'"         $itemvalue =             get-dnsconfigurationitem -item $itemname         write-debug "value: '$itemvalue'"          if ($itemvalue -ne $null)         {             write-verbose "adding item resultset."             $result.add($itemname, $itemvalue)         }     } } else {     write-verbose "no dns server found on machine."     write-verbose "returning ensure = '$($configitems.ensure)'."     $result = @{ name = $configitems.name; ensure = $configitems.ensure } }  return $result } 

you can try writing resource using classes being introduced in powershell v5. should largely eliminate problem talking - 1 there no schema.mof being with


Comments

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

How to use Authorization & Authentication in Asp.net, C#? -