diff --git a/resources/session.ps1 b/resources/session.ps1 index 8b4d58b..e283c08 100644 --- a/resources/session.ps1 +++ b/resources/session.ps1 @@ -1,31 +1,78 @@ -function Get-QlikSession { - [CmdletBinding(DefaultParameterSetName="User")] - param ( - [parameter(ParameterSetName="Id",Mandatory=$true,Position=0,ValueFromPipelinebyPropertyName=$true)] - [string]$id, +<# + .SYNOPSIS + Gets the current User Sessions on the specified Proxy + + .DESCRIPTION + This returns a session object with the corresponding SessionId. + https://help.qlik.com/en-US/sense-developer/November2018/apis/ProxyAPI/OpenAPI_Main.generated.html + + .PARAMETER id + This is to return the Session Object for a Specific Session ID + + .PARAMETER userDirectory + The userDirecotry paramater is used as part of identitying the users sessions, must be used with userID + + .PARAMETER userId + The userID paramater is used as part of identitying the users sessions, must be used with userDirecotry + + .PARAMETER virtualProxyPrefix + Specifies the Virtual Proxy to get the sessions from + + .EXAMPLE + PS C:\> Get-QlikSession + .EXAMPLE + PS C:\> Get-QlikSession -virtualProxyPrefix "/ProxyX1" + .EXAMPLE + PS C:\> Get-QlikSession -userDirectory Domain -userId Marc + .EXAMPLE + PS C:\> Get-QlikSession -virtualProxyPrefix "/ProxyX1" -userDirectory Domain -userId Marc - [parameter(ParameterSetName="User",Mandatory=$true,Position=0,ValueFromPipelinebyPropertyName=$true)] - [string]$userDirectory, + .NOTES + Additional information about the Session API can be found + https://help.qlik.com/en-US/sense-developer/November2018/apis/ProxyAPI/OpenAPI_Main.generated.html#19b1cf4a56294022A146C978a46f3a59 + https://help.qlik.com/en-US/sense-developer/November2018/Subsystems/ProxyServiceAPI/Content/Sense_ProxyServiceAPI/ProxyServiceAPI-Session-Module-API-Session-Get.htm - [parameter(ParameterSetName="User",Mandatory=$true,Position=1,ValueFromPipelinebyPropertyName=$true)] - [string]$userId, - - [alias("vp")] - [string]$virtualProxyPrefix, - - [switch]$raw - ) - - PROCESS { - $proxy = Get-QlikProxy local - $prefix = "https://$($proxy.serverNodeConfiguration.hostName):$($proxy.settings.restListenPort)/qps" - if ($virtualProxyPrefix) { $prefix += "/$virtualProxyPrefix" } - if ($id) { - $path = "$prefix/session/$id" - } else { - $path = "$prefix/user/$userDirectory/$userId" - } - If( $raw ) { $rawOutput = $true } - return Invoke-QlikGet $path - } -} +#> +function Get-QlikSession +{ + [CmdletBinding(DefaultParameterSetName = 'Default')] + param + ( + [Parameter(ParameterSetName = 'Id', + Mandatory = $true, + ValueFromPipelineByPropertyName = $true, + Position = 0)] + [string]$id, + [Parameter(ParameterSetName = 'User', + Mandatory = $true, + ValueFromPipelineByPropertyName = $true, + Position = 0)] + [string]$userDirectory, + [Parameter(ParameterSetName = 'User', + Mandatory = $true, + ValueFromPipelineByPropertyName = $true, + Position = 1)] + [string]$userId, + [Alias('vp')] + [string]$virtualProxyPrefix + ) + + PROCESS + { + $proxy = Get-QlikProxy local + $prefix = "https://$($proxy.serverNodeConfiguration.hostName):$($proxy.settings.restListenPort)/qps" + if ($PSBoundParameters.ContainsKey("virtualProxyPrefix")) { $prefix = "$($prefix)/$virtualProxyPrefix" } + switch ($PSCmdlet.ParameterSetName) + { + USER{ $path = "$prefix/user/$userDirectory/$userId" } + ID{ $path = "$prefix/session/$id" } + Default { $path = "$prefix/session" } + } + try + { + $response = Invoke-QlikGet $path + } + catch { $response = $null } + return $response + } +} \ No newline at end of file