Private/New-WPSWSession.ps1
<#
.Synopsis Connects to Wilma and sets session variables #> function New-WPSWSession (){ [CmdletBinding()] param( [string] $site = 'DEFAULT' ) $config = Get-WPSWConfig -site $site Write-Verbose "Starting Get-WPSWSession" Write-Debug "Config: $config" $Login = $config.cred.UserName $password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($config.cred.Password)) [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $reply = Invoke-RestMethod -Uri "$($config.url)/index_json" $SessionId=$reply.SessionID $data= "$Login|$SessionId|$($config.apikey)" $hashString= Get-SHA1stringHash( $data ) $Apikey = "sha1:$hashString" $LoginParameters = "Login=$Login&Password=$Password&SessionId=$SessionID&ApiKey=$Apikey&format=json" $reply = Invoke-RestMethod -Method Post -Uri "$($config.url)/login?$LoginParameters" -SessionVariable WilmaSession $result = @{ LoginResult = $reply.LoginResult WilmaId = $reply.WilmaId ApiVersion = $reply.ApiVersion FormKey = $reply.FormKey ConnectIds = $reply.ConnectIds Slug = $reply.Slug Name = $reply.Name Type = $reply.Type PrimusId = $reply.PrimusId School = $reply.School } if ($result.LoginResult -ne "OK") { Write-Debug $result Throw "Kirjautuminen epäonnistui" } else { @{WilmaSession=$WilmaSession Result = $result config = $config Site = $site} } } |