Public/Users/Get-JCScheduledUserstate.ps1
Function Get-JCScheduledUserstate () { [CmdletBinding(DefaultParameterSetName = 'BulkLookup')] param ( [Parameter(Mandatory, ParameterSetName = 'BulkLookup', ValueFromPipelineByPropertyName = $True, HelpMessage = "The scheduled state you'd like to query (SUSPENDED or ACTIVATED)")] [ValidateSet('SUSPENDED', 'ACTIVATED')] [string]$State, [Parameter(Mandatory, ValueFromPipelineByPropertyName, ParameterSetName = 'ByID', HelpMessage = 'The _id of the User which you want to lookup. UserID has an Alias of _id.')] [Alias('_id', 'id')] [String]$UserId ) begin { Write-Verbose 'Verifying JCAPI Key' if ([System.String]::IsNullOrEmpty($JCAPIKEY)) { Connect-JCOnline } Write-Verbose 'Initilizing resultsArray' $resultsArrayList = New-Object -TypeName System.Collections.ArrayList Write-Verbose "Parameter Set: $($PSCmdlet.ParameterSetName)" } process { switch ($PSCmdlet.ParameterSetName) { BulkLookup { if ($state -eq 'SUSPENDED') { $scheduledUsers = Get-JcSdkBulkUserState | Where-Object State -EQ 'SUSPENDED' } else { $scheduledUsers = Get-JcSdkBulkUserState | Where-Object State -EQ 'ACTIVATED' } # If no results are found, return null if (!$scheduledUsers) { return $null } # Create SearchBody to parse users $searchUserBody = @{ filter = @{ or = @( ) } fields = "firstname lastname email username _id" } # Create OR lookup for IDs $scheduledUsers | ForEach-Object { $searchUserBody.filter.or += "_id:`$eq:$($_.SystemUserId)" } # Get users $searchUsers = Search-JcSdkUser -Body $searchUserBody $searchUsers | ForEach-Object { # Get the scheduled date for the user $user = $scheduledUsers | Where-Object SystemUserID -EQ $_.Id # Convert the scheduled date to datetime (also seems to convert to local as well) $localScheduledDate = [datetime]$user.ScheduledDate # Create userResult $userResult = [pscustomobject]@{ id = $_.Id Firstname = $_.Firstname Lastname = $_.Lastname Email = $_.email Username = $_.username State = $State ScheduledDate = $localScheduledDate } $resultsArrayList.Add($userResult) | Out-Null } } ByID { # Get User's scheduled state $scheduledUser = Get-JcSdkBulkUserState -Userid $userId # User attribute lookup $user = Get-JcSdkUser -Id $userId | Select-Object firstname, lastname, email, username, id $scheduledUser | ForEach-Object { # Convert date to local $localScheduledDate = [datetime]$_.ScheduledDate # Create custom return object $userResult = [pscustomobject]@{ id = $user.Id Firstname = $user.Firstname Lastname = $user.Lastname Email = $user.email Username = $user.username State = $_.State ScheduledDate = $LocalScheduledDate } $resultsArrayList.Add($userResult) | Out-Null } } } } end { return $resultsArrayList } } |