tasks/Invoke-EnsureNSSMTask.ps1


function Invoke-EnsureNSSMTask
{
<#
.SYNOPSIS
    Download and unzip the appropriate version of NSSM if it's not already in place
 
.DESCRIPTION
    The Invoke-EnsureNSSMTask is registered as EnsureNSSM type.
 
.EXAMPLE
    Json task configuration for Sitecore Install Framework:
 
     "Ensure NSSM is installed": {
            "Type": "EnsureNSSM",
            "Params": {
                "downloadFolder": "[parameter('DownloadFolder')]",
                "nssmVersion": "[parameter('NSSMVersion')]",
                "installFolder": "[parameter('InstallFolder')]",
                "nssmSourcePackage": "[variable('NSSMSourcePackage')]"
            }
        },
 
.EXAMPLE
 
.NOTE
    Source: https://gist.github.com/jermdavis/49018386ae7544ce0689568edb7ca2b8
#>


    [CmdletBinding(SupportsShouldProcess=$true)]
    param(
        [parameter(Mandatory=$true)]
        [string]$downloadFolder,

        [parameter(Mandatory=$true)]
        [string]$nssmVersion,

        [parameter(Mandatory=$true)]
        [string]$nssmSourcePackage,
        
        [parameter(Mandatory=$true)]
        [string]$installFolder
    )

    PROCESS
    {
        $targetFile = "$installFolder\nssm-$nssmVersion"
        $nssmZip = "$downloadFolder\nssm-$nssmVersion.zip"

        Write-TaskInfo -Message "$nssmVersion" -Tag "Ensuring NSSM installed"

        DownloadAndUnzipIfRequired "NSSM" $targetFile $nssmZip $nssmSourcePackage $installFolder
    }
}

Export-ModuleMember Invoke-EnsureNSSMTask
Register-SitecoreInstallExtension -Command Invoke-EnsureNSSMTask -As EnsureNssm -Type Task