DSCResources/Grani_TCPAckFrequency/Grani_TCPAckFrequency.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
function Set-TargetResource {
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true)]
        [System.Boolean]$Enable
    )

    $value = if ($Enable) {
        2
    }
    else {
        1
    }

    Get-NetworkInterfaceRegisty `
        | where TcpAckFrequency -ne $value `
        | % { Set-ItemProperty -Path $_.PSPath -Name TcpAckFrequency -Value $value -Force -PassThru }
}

function Get-TargetResource {
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.Boolean]$Enable
    )
 
    $tcpAckFrequency = Get-NetworkInterfaceRegisty | % {$_.GetValue("TCPAckFrequency")} | sort -Unique
    $result = switch ($tcpAckFrequency) {
        1 { $false }
        2 { $true }
        default { $true }
    }

    return @{
        Enable = $result
    }
}

function Test-TargetResource {
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.Boolean]$Enable
    )

    $result = Get-TargetResource -Enable $Enable
    return $result.Enable -eq $Enable
}

function Get-NetworkInterfaceRegisty {
    [CmdletBinding()]
    [OutputType([Microsoft.Win32.RegistryKey[]])]
    param
    ()

    return Get-ChildItem -Path "registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces" `
        | where {
        Get-ItemProperty -Path "registry::$_" `
            | where AddressType -eq 0
    }
}

Export-ModuleMember -Function *-TargetResource