Deploy-QlikVirtualProxy.ps1
function Deploy-QlikVirtualProxy { <# .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-QlikVirtualProxy '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\virtualproxies', [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($Artifact) gci 'C:\Program Files\WindowsPowerShell\Modules' -Recurse | Unblock-File #Trust All Certs 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 $virtualProxies = gci $Artifact ForEach($vpText in $virtualProxies){ $vp = Get-Content $vpText.FullName | ConvertFrom-Json Get-QlikVirtualProxy | ?{$_.prefix -eq $vp.prefix } | Remove-QlikVirtualProxy Get-QlikVirtualProxy | ?{$_.prefix -eq $vp.prefix } | Remove-QlikVirtualProxy $nvp = (@{ prefix= $vp.prefix ; description= $vp.description; authenticationModuleRedirectUri= $vp.authenticationModuleRedirectUri; loadBalancingServerNodes= ([Array] ( Get-QlikNode ) ); sessionCookieHeaderName= ( $vp.sessionCookieHeaderName <#-replace 'custportal' , $env:COMPUTERNAME #> ) ; additionalResponseHeaders = ( $vp.additionalResponseHeaders); websocketCrossOriginWhiteList = ([Array] (($vp.websocketCrossOriginWhiteList) + (($env:COMPUTERNAME.ToLower(), "$(($env:COMPUTERNAME.ToLower())).webex.com") )) ); } | ConvertTo-Json -Compress -Depth 100) Invoke-QlikPost "/qrs/virtualproxyconfig" $nvp -Verbose $defaultVP = Get-QlikVirtualProxy -raw -full| ?{$_.prefix -eq $vp.prefix} $defaultProxy = Get-QlikProxy -full -raw $defaultProxy.settings.virtualProxies += ( $defaultVP ) Invoke-QlikPut -path "/qrs/proxyservice/$((Get-QlikProxy -raw ).id)" -body ( $defaultProxy | ConvertTo-Json -Compress -Depth 100) -Verbose #$proxy = (Invoke-QlikGet -path "/qrs/proxyservice/$((Get-QlikProxy).id)" ) #$proxy.settings.virtualProxies += (Get-QlikVirtualProxy| ?{$_.prefix -eq "static"}) }} -Args ($ArtifactPath) } end { } } if ($loadingModule) { Export-ModuleMember -Function 'Deploy-QlikVirtualProxy' } |