Provision-UserRoles.ps1
function Provision-UserRoles { <# .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 Provision-UserRoles 'abc' Description of the example. #> <# Enable -Confirm and -WhatIf. #> [CmdletBinding(SupportsShouldProcess = $true)] param( [parameter(Mandatory=$true)] [string] $MachineName, [parameter(Mandatory=$true)] [string] $UserId, [parameter(Mandatory=$true)] [string] $Directory, [parameter(Mandatory=$true)] [string[]] $Roles, [parameter(Mandatory=$false)] [System.Management.Automation.PSCredential] $mycreds, [parameter(Mandatory=$false)] [string] $CurrentRootUser ) 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($userId, $directory, $roles, $currentRootUser) 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 -Username $currentRootUser Invoke-QlikGet '/qrs/user' | ?{$_.name -eq $userId -and $_.UserDirectory -eq $directory } | Update-QlikUser -roles $roles } -Args ($UserId, $Directory, $Roles, $CurrentRootUser) } end { } } if ($loadingModule) { Export-ModuleMember -Function 'Provision-UserRoles' } |