Deploy-QlikApps.ps1

function Deploy-QlikApps {
    <#
    .SYNOPSIS
    This function ...
 
    .DESCRIPTION
    A bit more description
 
    .PARAMETER FromPipeline
    Shows how to process input from the pipeline, remaining parameters or by named parameter.
 
    .EXAMPLE
    Deploy-QlikApps 'abc'
 
    Description of the example.
 
    #>


    <# Enable -Confirm and -WhatIf. #>
    [CmdletBinding(SupportsShouldProcess = $true)]
    param(
            [parameter(Mandatory=$true)]
    [string] $MachineName,
    [parameter(Mandatory=$false)]
    [string] $ArtifactPath  = 'C:\Migrate\apps',
    [parameter(Mandatory=$true)]
    [string] $StreamName,
    [parameter(Mandatory=$false)]
    [System.Management.Automation.PSCredential] $mycreds 
    )

    begin {
    }

    process {

#$secpasswd = ConvertTo-SecureString “P@ssword123” -AsPlainText -Force
#$mycreds = New-Object System.Management.Automation.PSCredential (“.\qlikuser”, $secpasswd)

        
        $session = New-PSSession -ComputerName $MachineName -Credential $mycreds

        Invoke-Command -Session $session -ScriptBlock{
            param($artifactPath, $streamName)
        #Trust All Certs
        gci 'C:\Program Files\WindowsPowerShell\Modules'  -Recurse | Unblock-File
add-type @'
    using System.Net;
    using System.Security.Cryptography.X509Certificates;
    public class TrustAllCertsPolicy : ICertificatePolicy {
        public bool CheckValidationResult(
            ServicePoint srvPoint, X509Certificate certificate,
            WebRequest request, int certificateProblem) {
            return true;
        }
    }
'@

[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12
Connect-Qlik
        
$apps = gci $artifactPath
$everyone = Get-QlikStream | ?{$_.name -eq $streamName}



#$apps[0].BaseName
Foreach ($app in $apps){
 Get-QlikApp | ?{$_.Name -eq  $app.BaseName -and $_.stream.name -eq $streamName } | Remove-QlikApp -ErrorAction SilentlyContinue
Import-QlikApp -file $app.PSPath -name $app.BaseName  -upload |  Publish-QlikApp -stream $everyone.id  -name $app.BaseName -ErrorAction SilentlyContinue

}

                }    -Args ($ArtifactPath, $StreamName)
        }

    end {
    }
}

if ($loadingModule) {
    Export-ModuleMember -Function 'Deploy-QlikApps'
}