DSCResources/cSNMPManager/cSNMPManager.psm1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
function Get-TargetResource { [CmdletBinding()] [OutputType([System.Collections.Hashtable])] param ( [parameter(Mandatory = $true)] [System.String] $Manager ) Write-Verbose "Gathering all permitted Managers" $Manager = [PSCustomObject](Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers").psbase.properties | ? { $_.Name -match "^(?!1$)\d+$" } | Select Name,Value $ReturnValue = @{ Manager=$Manager.Value -join ',' } $ReturnValue } function Set-TargetResource { [CmdletBinding()] param ( [parameter(Mandatory = $true)] [System.String] $Manager, [ValidateSet("Present","Absent")] [System.String] $Ensure ) # Gather all registered permitted managers if (Test-Path HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers) { $Managers = [PSCustomObject](Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers").psbase.properties | ? { $_.Name -match "^(?!1$)\d+$" } | Select Name,Value switch ($Ensure) { "Present" { if ($Manager -eq "Any") { $Managers | % { $Name = $_.Name.Trim() Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" -Name $_.Name } } else { $Managers | % { $_.Name = [int]$_.Name } [Int]$LastNum = ($Managers | Sort-Object Name | Select Name -Last 1).Name Write-Verbose "Adding managers to postion $LastNum" $LastNum++ New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" -Name $LastNum -PropertyType String -Value $Manager } Write-Verbose "Adding new Manager to permitted list" } "Absent" { if ($Manager -eq "Any") { $Managers | % { $Name = $_.Name.Trim() Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" -Name $_.Name } } else { $Managers | ? { $_.value -eq $Manager } | % { $Name = $_.Name.Trim() Remove-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" -Name $Name } } Write-Verbose "Removing Manager of permitted list" } } } else { throw "Can't locate registry key for permitted managers" } } function Test-TargetResource { [CmdletBinding()] [OutputType([System.Boolean])] param ( [parameter(Mandatory = $true)] [System.String] $Manager, [ValidateSet("Present","Absent")] [System.String] $Ensure ) Write-Verbose "Gathering all permitted Managers" $Managers = [PSCustomObject](Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers").psbase.properties | ? { $_.Name -match "^(?!1$)\d+$" } | Select Value Switch ($Ensure) { "Present" { if ($Manager -in $Managers.Value ) { $return = $true } else { $return = $false } } "Absent" { if ($Manager -in $Managers.Value) { $return = $false } else { $return = $true } } } $return } Export-ModuleMember -Function *-TargetResource |