DSCResources/Grani_TCPAckFrequency/Grani_TCPAckFrequency.psm1

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