Deploy-QvdLoadScripts.ps1
function Deploy-QvdLoadScripts { <# .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-QvdLoadScripts '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\qvd-loadscripts', [parameter(Mandatory=$false)] [System.Management.Automation.PSCredential] $mycreds ) begin { } process { $session = New-PSSession -ComputerName $MachineName -Credential $mycreds Invoke-Command -Session $session -ScriptBlock{ param($artifactPath) #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 $oldApp = get-QlikApp | ?{$_.name -like $app.BaseName} $newApp = Import-QlikApp -file $app.PSPath -name $app.BaseName -upload if($oldApp){ #$newApp = Import-QlikApp -file $app.PSPath -name $app.BaseName -upload Switch-QlikApp -id $newApp.id -appid $oldApp.id get-QlikApp | ?{$_.id -eq $newApp.id} | Remove-QlikApp } } } -Args ($ArtifactPath) } end { } } if ($loadingModule) { Export-ModuleMember -Function 'Deploy-QvdLoadScripts' } |