public/Export-VPASPlatform.ps1
<#
.Synopsis EXPORT PLATFORM FROM CYBERARK CREATED BY: Vadim Melamed, EMAIL: vmelamed5@gmail.com .DESCRIPTION USE THIS FUNCTION TO EXPORT A PLATFORM FROM CYBERARK .PARAMETER NoSSL If the environment is not set up for SSL, API calls will be made via HTTP not HTTPS (Not Recommended!) .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 .PARAMETER HideOutput Suppress any output to the console .PARAMETER Directory Location where the exported files should be placed .PARAMETER PlatformName Unique target PlatformName that will be exported .EXAMPLE $ExportPlatformStatus = Export-VPASPlatform -PlatformName {PLATFORMNAME VALUE} .EXAMPLE $ExportPlatformStatus = Export-VPASPlatform -PlatformName {PLATFORMNAME VALUE} -Directory {C:\ExampleDir} .OUTPUTS $true if successful $false if failed #> function Export-VPASPlatform{ [OutputType([bool])] [CmdletBinding()] Param( [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,HelpMessage="PlatformID of target platform to be exported (for example: WinSeverLocal)",Position=0)] [String]$PlatformName, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,Position=1)] [String]$Directory, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,Position=2)] [Switch]$HideOutput, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,Position=3)] [hashtable]$token, [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,Position=4)] [Switch]$NoSSL ) Begin{ $tokenval,$sessionval,$PVWA,$Header,$ISPSS,$IdentityURL = Get-VPASSession -token $token } Process{ Write-Verbose "SUCCESSFULLY PARSED PVWA VALUE" Write-Verbose "SUCCESSFULLY PARSED TOKEN VALUE" Write-Verbose "SUCCESSFULLY PARSED PLATFORMNAME VALUE: $PlatformName" try{ if($NoSSL){ Write-Verbose "NO SSL ENABLED, USING HTTP INSTEAD OF HTTPS" $uri = "http://$PVWA/PasswordVault/API/Platforms/$PlatformName/Export" } else{ Write-Verbose "SSL ENABLED BY DEFAULT, USING HTTPS" $uri = "https://$PVWA/PasswordVault/API/Platforms/$PlatformName/Export" } if([String]::IsNullOrEmpty($Directory)){ $curUser = $env:UserName $outpath = "C:\Users\$curUser\AppData\Local\VPASModuleOutputs" Write-Verbose "NO DIRECTORY SPECIFIED, USING THE FOLLOWING OUTPUT DIRECTORY:" Write-Verbose $outpath } else{ Write-Verbose "SUPPLIED DIRECTORY VALUE: $Directory" $outpath = $Directory } if(Test-Path -Path $outpath){ write-verbose "$outpath EXISTS" } else{ write-verbose "$outpath DOES NOT EXIST, CREATING DIRECTORY" $MakeDirectory = New-Item -Path $outpath -Type Directory } Write-Verbose "MAKING API CALL TO CYBERARK" if($sessionval){ $response = Invoke-RestMethod -Headers @{"Authorization"=$Header} -Uri $uri -Method POST -ContentType "application/json" -WebSession $sessionval -OutFile "$outpath\$PlatformName.zip" } else{ $response = Invoke-RestMethod -Headers @{"Authorization"=$Header} -Uri $uri -Method POST -ContentType "application/json" -OutFile "$outpath\$PlatformName.zip" } Write-Verbose "SUCCESSFULLY EXPORTED $PlatformName TO $outpath" if(!$HideOutput){ Write-VPASOutput -str "SUCCESSFULLY EXPORTED $PlatformName TO $outpath" -type M } return $true }catch{ Write-Verbose "UNABLE TO EXPORT $PlatformName" Write-VPASOutput -str $_ -type E return $false } } End{ } } |