public/Get-VPASIdentityAllUsers.ps1
<#
.Synopsis RETRIEVE ALL USERS IN IDENTITY CREATED BY: Vadim Melamed, EMAIL: vmelamed5@gmail.com .DESCRIPTION USE THIS FUNCTION TO RETRIEVE ALL USERS IN IDENTITY .PARAMETER token HashTable of data containing various pieces of login information (PVWA, LoginToken, HeaderType, etc). If -token is not passed, function will use last known hashtable generated by New-VPASToken .EXAMPLE $AllIdentityUsers = Get-VPASIdentityAllUsers .OUTPUTS If successful: { "IsAggregate": false, "Count": 40, "Columns": [ { "Name": "Uuid", "IsHidden": false, "DDName": null, "Title": "Uuid", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "DisplayName", "IsHidden": false, "DDName": null, "Title": "DisplayName", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "Description", "IsHidden": false, "DDName": null, "Title": "Description", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "Mail", "IsHidden": false, "DDName": null, "Title": "Mail", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "Name", "IsHidden": false, "DDName": null, "Title": "Name", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "OfficeNumber", "IsHidden": false, "DDName": null, "Title": "OfficeNumber", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "MobileNumber", "IsHidden": false, "DDName": null, "Title": "MobileNumber", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "HomeNumber", "IsHidden": false, "DDName": null, "Title": "HomeNumber", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "StartDate", "IsHidden": false, "DDName": null, "Title": "StartDate", "DDTitle": null, "Description": null, "Type": 0, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "EndDate", "IsHidden": false, "DDName": null, "Title": "EndDate", "DDTitle": null, "Description": null, "Type": 0, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "ReportsTo", "IsHidden": false, "DDName": null, "Title": "ReportsTo", "DDTitle": null, "Description": null, "Type": 12, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "PictureUri", "IsHidden": false, "DDName": null, "Title": "PictureUri", "DDTitle": null, "Description": null, "Type": 0, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null }, { "Name": "PreferredCulture", "IsHidden": false, "DDName": null, "Title": "PreferredCulture", "DDTitle": null, "Description": null, "Type": 0, "Format": null, "Width": 0, "TableKey": null, "ForeignKey": null, "TableName": null } ], "FullCount": 40, "Results": [ ... { "Entities": "", "Row": "@{Uuid=jkdfh2389742-werw-sdff-3456-345897sdfkjh; DisplayName=VmanAPI; Mail=; Name=VmanAPI@vman.com; ReportsTo=Unassigned; PreferredCulture=; HomeNumber=; StartDate=; MobileNumber=; EndDate=; PictureUri=; Description=; OfficeNumber=}" }, { "Entities": "", "Row": "@{Uuid=lsdflks43890-sdff-5344-1221-slkdjf489579; DisplayName=Vadim Melamed; Mail=vadim.melamed@vman.com; Name=vadim@vman.com; ReportsTo=Unassigned; PreferredCulture=; HomeNumber=1234567890; StartDate=; MobileNumber=1234567890; EndDate=; PictureUri=; Description=; OfficeNumber=1234567890}" }, ... ], "ReturnID": "" } --- $false if failed #> function Get-VPASIdentityAllUsers{ [OutputType('System.Object',[bool])] [CmdletBinding()] Param( [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,Position=0)] [hashtable]$token ) Begin{ $tokenval,$sessionval,$PVWA,$Header,$ISPSS,$IdentityURL,$EnableTextRecorder,$AuditTimeStamp,$NoSSL,$VaultVersion,$HideWarnings,$AuthenticatedAs,$SubDomain = Get-VPASSession -token $token $CommandName = $MyInvocation.MyCommand.Name $log = Write-VPASTextRecorder -inputval $CommandName -token $token -LogType COMMAND } Process{ Write-Verbose "SUCCESSFULLY PARSED PVWA VALUE" Write-Verbose "SUCCESSFULLY PARSED TOKEN VALUE" try{ if(!$IdentityURL){ $log = Write-VPASTextRecorder -inputval "LOGIN TOKEN WAS NOT GENERATED THROUGH IDENTITY" -token $token -LogType MISC $log = Write-VPASTextRecorder -inputval "REST API COMMAND RETURNED: FALSE" -token $token -LogType MISC Write-VPASOutput -str "LOGIN TOKEN WAS NOT GENERATED THROUGH IDENTITY, TERMINATING API CALL" -type E return $false } if($NoSSL){ Write-Verbose "NO SSL ENABLED, USING HTTP INSTEAD OF HTTPS" $uri = "http://$IdentityURL/CDirectoryService/GetUsers" } else{ Write-Verbose "SSL ENABLED BY DEFAULT, USING HTTPS" $uri = "https://$IdentityURL/CDirectoryService/GetUsers" } $log = Write-VPASTextRecorder -inputval $uri -token $token -LogType URI $log = Write-VPASTextRecorder -inputval "GET" -token $token -LogType METHOD if($sessionval){ $response = Invoke-RestMethod -Headers @{"Authorization"=$Header} -Uri $uri -Method POST -ContentType "application/json" -WebSession $sessionval } else{ $response = Invoke-RestMethod -Headers @{"Authorization"=$Header} -Uri $uri -Method POST -ContentType "application/json" } Write-Verbose "PARSING DATA FROM CYBERARK" if($response.success){ $outputlog = $response.Result $log = Write-VPASTextRecorder -inputval $outputlog -token $token -LogType RETURNARRAY return $response.Result } else{ $err = $response.Message $log = Write-VPASTextRecorder -inputval $err -token $token -LogType MISC $log = Write-VPASTextRecorder -inputval "REST API COMMAND RETURNED: FALSE" -token $token -LogType MISC Write-VPASOutput -str $err -type E return $false } }catch{ $log = Write-VPASTextRecorder -inputval $_ -token $token -LogType ERROR $log = Write-VPASTextRecorder -inputval "REST API COMMAND RETURNED: FALSE" -token $token -LogType MISC Write-Verbose "FAILED TO QUERY IDENTITY FOR USERS" Write-VPASOutput -str $_ -type E return $false } } End{ $log = Write-VPASTextRecorder -inputval $CommandName -token $token -LogType DIVIDER } } |