53 lines
2.5 KiB
PowerShell
53 lines
2.5 KiB
PowerShell
function New-Session {
|
|
[CmdletBinding(DefaultParameterSetName="Credentials")]
|
|
param (
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$URL,
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=1)]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$AppID,
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=2,ParameterSetName="Credentials")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[pscredential]$Credentials,
|
|
[parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=2,ParameterSetName="Token")]
|
|
[ValidateNotNullOrEmpty()]
|
|
[string]$Token,
|
|
[parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=3)]
|
|
[switch]$IgnoreSSL = $false
|
|
)
|
|
switch ($PSCmdlet.ParameterSetName) {
|
|
"Credentials" {
|
|
$_bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Credentials.Password)
|
|
$_password = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($_bstr)
|
|
$_uri = "$URL/api/$AppID/user"
|
|
$_auth = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("$($Credentials.UserName):$_password"))
|
|
$_headers = @{
|
|
"Accept" = "application/json"
|
|
"Content-Type" = "application/json"
|
|
"Authorization" = "Basic $_auth"
|
|
}
|
|
|
|
$_response = Invoke-RestMethod -Method Post -Uri $_uri -Headers $_headers -ErrorAction SilentlyContinue
|
|
|
|
if ($_response.success -ne $true) { return $_response.error }
|
|
|
|
$script:ipamAuthType = "Credentials"
|
|
$script:ipamAuth = $true
|
|
$script:ipamToken = $_response.data.token
|
|
$script:ipamAppID = $AppID
|
|
$script:ipamURL = $URL
|
|
$script:ipamCredentials = $Credentials
|
|
$script:ipamExpires = Get-Date $_response.data.expires
|
|
}
|
|
"Token" {
|
|
$script:ipamAuthType = "Token"
|
|
$script:ipamAuth = $true
|
|
$script:ipamToken = $Token
|
|
$script:ipamAppID = $AppID
|
|
$script:ipamURL = $URL
|
|
$script:ipamExpires = "Never"
|
|
}
|
|
}
|
|
}
|
|
Export-ModuleMember -Function New-Session |