DSCResources/FileDownload/FileDownload.psm1

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [Parameter(Mandatory = $true)] [String] $FileName,
        [Parameter(Mandatory = $true)] [string] $Url
    )

    Write-Verbose 'Start Get-TargetResource'
    Write-Verbose "FileName: $FileName"
    Write-Verbose "Url: $Url"

    $fileExists=Test-Path $FileName

    $returnValue = @{
        FileName = $FileName
        FileExists = $fileExists
    }

    $returnValue
}

function Set-TargetResource
{
    [CmdletBinding(SupportsShouldProcess = $true)]
    param
    (
        [Parameter(Mandatory = $true)] [String] $FileName,
        [Parameter(Mandatory = $true)] [string] $Url
    )
    Write-Verbose 'Start Set-TargetResource'
    Write-Verbose "FileName: $FileName"
    Write-Verbose "Url: $Url"

    Write-Verbose 'Invoking WebRequest'
    Invoke-WebRequest $Url -OutFile $FileName

    $fileExists=Test-Path $FileName

    Write-Verbose -Message ( @(
            "$($MyInvocation.MyCommand): "
            $($localizedData.TestingFileExists -f $FileName,$fileExists)
        ) -join '' )


}

function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [Parameter(Mandatory = $true)] [String] $FileName,
        [Parameter(Mandatory = $true)] [string] $Url
    )

    Write-Verbose 'Start Test-TargetResource'
    Write-Verbose "FileName: $FileName"
    Write-Verbose "Url: $Url"

    $fileExists=Test-Path $FileName

    Write-Verbose "File: $File Exists: $fileExists"

    return $fileExists
}

Export-ModuleMember -Function *-TargetResource