PSIsonas/PSIsonas.psm1
2024-12-17 15:32:29 -06:00

83 lines
2.1 KiB
PowerShell

<#
===========================================================================
Created on: 12/17/2024 10:35 AM
Created by: Alexis Lazcano
Organization: Saratoga Corporate Management Group, LLC
Filename: PSIsonas.psm1
-------------------------------------------------------------------------
Module Name: PSIsonas
===========================================================================
#>
Function Get-IsonasRequestHeaders
{
$tokenPair = "$env:ISONAS_TokenID`:$env:ISONAS_TokenValue"
$tokenBase64 = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($tokenPair))
$Headers = @{
'Authorization' = "Basic $tokenBase64"
'Content-Type' = 'application/merge-patch+json'
}
return $Headers
}
function Test-IsonasConnection
{
$API_Users = $env:ISONAS_API_URL + "users"
$Response = Invoke-RestMethod -Uri "$API_Users/?includeDisabled=false&limit=1" -Headers $(Get-IsonasRequestHeaders)
if ($Reponse.Status -eq "Success") { return $true }
else
{
return $false
}
}
function Get-IsonasUsers {
param
(
[Parameter(Position = 1)]
[switch]$All,
[Parameter(Mandatory = $false,
Position = 2)]
[ValidateNotNullOrEmpty()]
[int]$Limit = 200,
[Parameter(Position = 3)]
[bool]$IncludeDisabled = $false
)
$API_Users = $env:ISONAS_API_URL + "users"
if ($All)
{
Write-Host "All users was used"
$TargetUrl = "$API_Users/"
}
else
{
Write-Host "All users was NOT used"
$TargetUrl = "$API_Users/?includeDisabled=$IncludeDisabled&limit=$Limit"
}
$Response = Invoke-RestMethod -Uri $TargetUrl -Headers $(Get-IsonasRequestHeaders) -Method GET
$flattened = $response | ForEach-Object {
$obj = [PSCustomObject]@{
Id = $_.Id
CreatedTime = $_.createdTime
UpdatedTime = $_.updatedTime
FirstName = $_.firstName
LastName = $_.lastName
AreaID = $_.areaId
EmployeeId = $_.employeeId
IsDisabled = $_.isDisabled
}
foreach ($field in $_.userDefinedFields)
{
$propertyName = $field.name -replace '\s', ''
$obj | Add-Member -MemberType NoteProperty -Name $propertyName -Value $field.value
}
$obj
}
return $flattened
}