custom/generated/Get-JcSdkUser.ps1

<#
.Synopsis
This endpoint returns a particular System User.

#### Sample Request

```
curl -X GET https://console.jumpcloud.com/api/systemusers/{UserID} \\
  -H 'Accept: application/json' \\
  -H 'Content-Type: application/json' \\
  -H 'x-api-key: {API_KEY}'
```
.Description
This endpoint returns a particular System User.

#### Sample Request

```
curl -X GET https://console.jumpcloud.com/api/systemusers/{UserID} \\
  -H 'Accept: application/json' \\
  -H 'Content-Type: application/json' \\
  -H 'x-api-key: {API_KEY}'
```
.Example
PS C:\> Get-JcSdkUser -Search:(<string>) -Sort:(<string>)



---- ----------
AccountLocked Boolean
AccountLockedDate String
Activated Boolean
Addresses JumpCloud.SDK.V1.Models.SystemuserreturnAddressesItem[]
AllowPublicKey Boolean
AlternateEmail String
Attributes JumpCloud.SDK.V1.Models.SystemuserreturnAttributesItem[]
BadLoginAttempts Int
Company String
CostCenter String
Created String
CreationSource String
Department String
Description String
DisableDeviceMaxLoginAttempts Boolean
Displayname String
Email String
EmployeeIdentifier String
EmployeeType String
EnableManagedUid Boolean
EnableUserPortalMultifactor Boolean
ExternalDn String
ExternallyManaged Boolean
ExternalPasswordExpirationDate String
ExternalSourceType String
Firstname String
Id String
JobTitle String
Lastname String
LdapBindingUser Boolean
Location String
ManagedAppleId String
Manager String
MfaConfigured Boolean
MfaEnrollmentOverallStatus String
MfaEnrollmentPushStatus String
MfaEnrollmentTotpStatus String
MfaEnrollmentWebAuthnStatus String
MfaExclusion Boolean
MfaExclusionDays Int
MfaExclusionUntil Datetime
Middlename String
Organization String
PasswordDate String
PasswordExpirationDate String
PasswordExpired Boolean
PasswordlessSudo Boolean
PasswordNeverExpires Boolean
PhoneNumbers JumpCloud.SDK.V1.Models.SystemuserreturnPhoneNumbersItem[]
PublicKey String
RecoveryEmailAddress String
RecoveryEmailVerified Boolean
RecoveryEmailVerifiedAt String
Relationships JumpCloud.SDK.V1.Models.SystemuserreturnRelationshipsItem[]
RestrictedFields JumpCloud.SDK.V1.Models.RestrictedField1[]
SambaServiceUser Boolean
SshKeys JumpCloud.SDK.V1.Models.Sshkeylist[]
State String
Sudo Boolean
Suspended Boolean
TotpEnabled Boolean
UnixGuid Int
UnixUid Int
Username String

 
.Example
PS C:\> Get-JcSdkUser -Id:(<string>)



---- ----------
AccountLocked Boolean
AccountLockedDate String
Activated Boolean
Addresses JumpCloud.SDK.V1.Models.SystemuserreturnAddressesItem[]
AllowPublicKey Boolean
AlternateEmail String
Attributes JumpCloud.SDK.V1.Models.SystemuserreturnAttributesItem[]
BadLoginAttempts Int
Company String
CostCenter String
Created String
CreationSource String
Department String
Description String
DisableDeviceMaxLoginAttempts Boolean
Displayname String
Email String
EmployeeIdentifier String
EmployeeType String
EnableManagedUid Boolean
EnableUserPortalMultifactor Boolean
ExternalDn String
ExternallyManaged Boolean
ExternalPasswordExpirationDate String
ExternalSourceType String
Firstname String
Id String
JobTitle String
Lastname String
LdapBindingUser Boolean
Location String
ManagedAppleId String
Manager String
MfaConfigured Boolean
MfaEnrollmentOverallStatus String
MfaEnrollmentPushStatus String
MfaEnrollmentTotpStatus String
MfaEnrollmentWebAuthnStatus String
MfaExclusion Boolean
MfaExclusionDays Int
MfaExclusionUntil Datetime
Middlename String
Organization String
PasswordDate String
PasswordExpirationDate String
PasswordExpired Boolean
PasswordlessSudo Boolean
PasswordNeverExpires Boolean
PhoneNumbers JumpCloud.SDK.V1.Models.SystemuserreturnPhoneNumbersItem[]
PublicKey String
RecoveryEmailAddress String
RecoveryEmailVerified Boolean
RecoveryEmailVerifiedAt String
Relationships JumpCloud.SDK.V1.Models.SystemuserreturnRelationshipsItem[]
RestrictedFields JumpCloud.SDK.V1.Models.RestrictedField1[]
SambaServiceUser Boolean
SshKeys JumpCloud.SDK.V1.Models.Sshkeylist[]
State String
Sudo Boolean
Suspended Boolean
TotpEnabled Boolean
UnixGuid Int
UnixUid Int
Username String

 

.Inputs
JumpCloud.SDK.V1.Models.IJumpCloudApiIdentity
.Outputs
JumpCloud.SDK.V1.Models.ISystemuserreturn
.Outputs
JumpCloud.SDK.V1.Models.ISystemuserslist
.Notes
COMPLEX PARAMETER PROPERTIES

To create the parameters described below, construct a hash table containing the appropriate properties. For information on hash tables, run Get-Help about_Hash_Tables.

INPUTOBJECT <IJumpCloudApiIdentity>:
  [Id <String>]:
  [SystemId <String>]:
  [SystemuserId <String>]:
  [Triggername <String>]:
.Link
https://github.com/TheJumpCloud/jcapi-powershell/tree/master/SDKs/PowerShell/JumpCloud.SDK.V1/docs/exports/Get-JcSdkUser.md
#>

 Function Get-JcSdkUser
{
    [OutputType([JumpCloud.SDK.V1.Models.ISystemuserreturn], [JumpCloud.SDK.V1.Models.ISystemuserslist])]
    [CmdletBinding(DefaultParameterSetName='List', PositionalBinding=$false)]
    Param(
    [Parameter(ParameterSetName='Get', Mandatory)]
    [JumpCloud.SDK.V1.Category('Path')]
    [System.String]
    # .
    ${Id}, 

    [Parameter(ParameterSetName='GetViaIdentity', Mandatory, ValueFromPipeline)]
    [JumpCloud.SDK.V1.Category('Path')]
    [JumpCloud.SDK.V1.Models.IJumpCloudApiIdentity]
    # Identity Parameter
    # To construct, see NOTES section for INPUTOBJECT properties and create a hash table.
    ${InputObject}, 

    [Parameter()]
    [JumpCloud.SDK.V1.Category('Query')]
    [System.String]
    # Use a space seperated string of field parameters to include the data in the response.
    # If omitted, the default list of fields will be returned.
    ${Fields}, 

    [Parameter()]
    [AllowEmptyCollection()]
    [JumpCloud.SDK.V1.Category('Query')]
    [System.String[]]
    # A filter to apply to the query.
    # See the supported operators below.
    # For more complex searches,
    # see the related `/search/<domain>` endpoints,
    # e.g.
    # `/search/systems`.
    #
    # **Filter structure**: `<field>:<operator>:<value>`.
    #
    # **field** = Populate with a valid field from an endpoint response.
    #
    # **operator** = Supported operators are:
    # - `$eq` (equals)
    # - `$ne` (does not equal)
    # - `$gt` (is greater than)
    # - `$gte` (is greater than or equal to)
    # - `$lt` (is less than)
    # - `$lte` (is less than or equal to)
    #
    # _Note: v1 operators differ from v2 operators._
    #
    # _Note: For v1 operators, excluding the `$` will result in undefined behavior._
    #
    # **value** = Populate with the value you want to search for.
    # Is case sensitive.
    #
    # **Examples**
    # - `GET /users?filter=username:$eq:testuser`
    # - `GET /systemusers?filter=password_expiration_date:$lte:2021-10-24`
    # - `GET /systemusers?filter=department:$ne:Accounting`
    # - `GET /systems?filter[0]=firstname:$eq:foo&filter[1]=lastname:$eq:bar` - this will
    # AND the filters together.
    # - `GET /systems?filter[or][0]=lastname:$eq:foo&filter[or][1]=lastname:$eq:bar` - this will
    # OR the filters together.
    ${Filter}, 

    [Parameter(ParameterSetName='List')]
    [JumpCloud.SDK.V1.Category('Query')]
    [System.String]
    # A nested object containing a `searchTerm` string or array of strings and a list of `fields` to search on.
    ${Search}, 

    [Parameter(ParameterSetName='List')]
    [JumpCloud.SDK.V1.Category('Query')]
    [System.String]
    # The space separated fields used to sort the collection.
    # Default sort is ascending, prefix with `-` to sort descending.
    ${Sort}, 

    [Parameter(DontShow)]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Wait for .NET debugger to attach
    ${Break}, 

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [JumpCloud.SDK.V1.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be appended to the front of the pipeline
    ${HttpPipelineAppend}, 

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [JumpCloud.SDK.V1.Runtime.SendAsyncStep[]]
    # SendAsync Pipeline Steps to be prepended to the front of the pipeline
    ${HttpPipelinePrepend}, 

    [Parameter(DontShow)]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [System.Uri]
    # The URI for the proxy server to use
    ${Proxy}, 

    [Parameter(DontShow)]
    [ValidateNotNull()]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [System.Management.Automation.PSCredential]
    # Credentials for a proxy server to use for the remote call
    ${ProxyCredential}, 

    [Parameter(DontShow)]
    [JumpCloud.SDK.V1.Category('Runtime')]
    [System.Management.Automation.SwitchParameter]
    # Use the default credentials for the proxy
    ${ProxyUseDefaultCredentials}, 

    [Parameter(DontShow)]
    [System.Boolean]
    # Set to $true to return all results. This will overwrite any skip and limit parameter.
    $Paginate = $true
    )
    Begin
    {
        $Results = @()
        $PSBoundParameters.Add('HttpPipelineAppend', {
                param($req, $callback, $next)
                # call the next step in the Pipeline
                $ResponseTask = $next.SendAsync($req, $callback)
                $global:JCHttpRequest = $req
                $global:JCHttpRequestContent = If (-not [System.String]::IsNullOrEmpty($req.Content)) { $req.Content.ReadAsStringAsync() }
                $global:JCHttpResponse = $ResponseTask
                # $global:JCHttpResponseContent = If (-not [System.String]::IsNullOrEmpty($ResponseTask.Result.Content)) { $ResponseTask.Result.Content.ReadAsStringAsync() }
                Return $ResponseTask
            }
        )
    }
    Process
    {
        If ($Paginate -and $PSCmdlet.ParameterSetName -in ('List')) {
            $PSBoundParameters.Remove('Paginate') | Out-Null
            If ([System.String]::IsNullOrEmpty($PSBoundParameters.Limit)) {
                $PSBoundParameters.Add('Limit', 100)
            }
            If ([System.String]::IsNullOrEmpty($PSBoundParameters.Skip)) {
                $PSBoundParameters.Add('Skip', 0)
            }
            Do {
                Write-Debug ("Limit: $($PSBoundParameters.Limit); ");
                Write-Debug ("Skip: $($PSBoundParameters.Skip); ");
                $maxRetries = 4
                $resultCounter = 0
                :retryLoop do {
                    $resultCounter++
                    $Result = JumpCloud.SDK.V1.internal\Get-JcSdkInternalUser @PSBoundParameters -errorAction SilentlyContinue -errorVariable sdkError
                    If ($sdkError){
                        If ($resultCounter -eq $maxRetries){
                            throw $sdkError
                        }
                        If ($JCHttpResponse.Result.StatusCode -eq "503") {
                            Write-Warning ("503: Service Unavailable - retrying in " + ($resultCounter * 5) + " seconds.")
                        } else {
                            throw $sdkError
                        }
                    } else {
                        break retryLoop
                    }
                    Start-Sleep -Seconds ($resultCounter * 5)
                } while ($resultCounter -lt $maxRetries)
                Write-Debug ('HttpRequest: ' + $JCHttpRequest);
                Write-Debug ('HttpRequestContent: ' + $JCHttpRequestContent.Result);
                Write-Debug ('HttpResponse: ' + $JCHttpResponse.Result);
                # Write-Debug ('HttpResponseContent: ' + $JCHttpResponseContent.Result);
                $Result = If ('Results' -in $Result.PSObject.Properties.Name) {
                    $Result.results
                } Else {
                    $Result
                }
                If (-not [System.String]::IsNullOrEmpty($Result))
                {
                    $ResultCount = ($Result | Measure-Object).Count;
                    $Results += $Result;
                    $PSBoundParameters.Skip += $ResultCount
                }
        }
            While ($ResultCount -eq $PSBoundParameters.Limit -and -not [System.String]::IsNullOrEmpty($Result))
        } Else {
            $PSBoundParameters.Remove('Paginate') | Out-Null
            $maxRetries = 4
            $resultCounter = 0
            :retryLoop do {
                $resultCounter++
                $Result = JumpCloud.SDK.V1.internal\Get-JcSdkInternalUser @PSBoundParameters -errorAction SilentlyContinue -errorVariable sdkError
                If ($sdkError){
                    If ($resultCounter -eq $maxRetries){
                        throw $sdkError
                    }
                    If ($JCHttpResponse.Result.StatusCode -eq "503") {
                        Write-Warning ("503: Service Unavailable - retrying in " + ($resultCounter * 5) + " seconds.")
                    } else {
                        throw $sdkError
                    }
                } else {
                    break retryLoop
                }
                Start-Sleep -Seconds ($resultCounter * 5)
            } while ($resultCounter -lt $maxRetries)
            Write-Debug ('HttpRequest: ' + $JCHttpRequest);
            Write-Debug ('HttpRequestContent: ' + $JCHttpRequestContent.Result);
            Write-Debug ('HttpResponse: ' + $JCHttpResponse.Result);
            # Write-Debug ('HttpResponseContent: ' + $JCHttpResponseContent.Result);
            $Result = If ('Results' -in $Result.PSObject.Properties.Name) {
                $Result.results
            } Else {
                $Result
            }
            If (-not [System.String]::IsNullOrEmpty($Result)) {
                $Results += $Result;
            }
        }
    }
    End
    {
        # Clean up global variables
        $GlobalVars = @('JCHttpRequest', 'JCHttpRequestContent', 'JCHttpResponse','JCHttpResponseContent')
        $GlobalVars | ForEach-Object {
            If ((Get-Variable -Scope:('Global')).Where( { $_.Name -eq $_ })) { Remove-Variable -Name:($_) -Scope:('Global') }
        }
        Return $Results
    }
}