DSCResources/VE_XD7StoreFront/VE_XD7StoreFront.psm1

<#
    ===========================================================================
     Created with: SAPIEN Technologies, Inc., PowerShell Studio 2019 v5.6.157
     Created on: 2/8/2019 12:12 PM
     Created by: CERBDM
     Organization:
     Filename: VE_XD7StoreFront.psm1
    -------------------------------------------------------------------------
     Module Name: VE_XD7StoreFront
    ===========================================================================
#>



Import-LocalizedData -BindingVariable localizedData -FileName VE_XD7StoreFront.Resources.psd1;

function Get-TargetResource {
    [CmdletBinding()]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSDSCUseVerboseMessageInDSCResource', '')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingEmptyCatchBlock', '')]
    [OutputType([System.Collections.Hashtable])]
    param (

        [Parameter(Mandatory = $true)]
        [System.UInt64]
        $SiteId
    )
    process {

        Import-Module Citrix.StoreFront -ErrorAction Stop -Verbose:$false;

        try {

            $Deployment = Get-STFDeployment -SiteId $SiteId
        }
        catch { }

        $targetResource = @{
            SiteId = $Deployment.SiteId
            HostBaseUrl = $Deployment.HostBaseUrl
            Ensure = $null -ne $Deployment
        };

        return $targetResource;

    } #end process
} #end function Get-TargetResource


function Test-TargetResource {
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param (
        [Parameter(Mandatory = $true)]
        [System.UInt64]
        $SiteId,

        [Parameter()]
        [System.String]
        $HostBaseUrl = 'http://localhost',

        [Parameter()]
        [ValidateSet('Present','Absent')]
        [System.String]
        $Ensure = 'Present'
    )
    process {

        $targetResource = Get-TargetResource -SiteId $SiteId
        if ($Ensure -eq 'Present') {

            if (($targetResource.SiteId -eq $SiteId) -and ($targetResource.HostBaseUrl -eq $HostBaseUrl)) {
                Write-Verbose -Message ($localizedData.ResourceInDesiredState -f $SiteId)
                return $true
            }
            else {
                Write-Verbose -Message ($localizedData.ResourceNotInDesiredState -f $SiteId)
                return $false
            }
        }
        else {

            if ($targetResource.SiteId) {
                Write-Verbose -Message ($localizedData.ResourceNotInDesiredState -f $SiteId)
                return $false
            }
            else {
                Write-Verbose -Message ($localizedData.ResourceInDesiredState -f $SiteId)
                return $true
            }
        }

    } #end process
} #end function Test-TargetResource


function Set-TargetResource {
    [CmdletBinding()]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidGlobalFunctions', 'global:Write-Host')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingEmptyCatchBlock', '')]
    param (
        [Parameter(Mandatory = $true)]
        [System.UInt64]
        $SiteId,

        [Parameter()]
        [System.String]
        $HostBaseUrl = 'http://localhost',

        [Parameter()]
        [ValidateSet('Present','Absent')]
        [System.String]
        $Ensure = 'Present'

    )
    process {

        Import-module Citrix.StoreFront -ErrorAction Stop -Verbose:$false
        $Deployment = Get-STFDeployment -SiteId $SiteId
        if ($Ensure -eq 'Present') {
            if ($Deployment) {
                Set-STFDeployment -HostBaseUrl $HostBaseUrl -confirm:$false | Out-Null
            }
            else {
                Add-STFDeployment -HostBaseUrl $HostBaseUrl -SiteId $SiteId -confirm:$false | Out-Null
            }
        }
        else {
            #Uninstall
            Clear-STFDeployment -SiteId $SiteId | Out-Null
        }

    } #end process
} #end function Set-TargetResource

Export-ModuleMember -Function *-TargetResource;