FastTrack-TransactionQuery.psm1
|
<#
GDPR Transaction Query for determining the status of a request created through the MSFT GDPR REST API's #> Add-Type -AssemblyName System.Web -ErrorAction SilentlyContinue Function Get-ResponseError { param([System.Net.HttpWebResponse]$Response) $streamReader = New-Object System.IO.StreamReader($Response.GetResponseStream()) $streamReader.BaseStream.Position = 0 $streamReader.DiscardBufferedData() $body = ConvertFrom-Json($streamReader.ReadToEnd()) Add-Member -InputObject $body -MemberType NoteProperty -Name "StatusCode" -Value $_.Exception.Response.StatusCode $body } Function Invoke-GetRequest { param([String]$Uri, [hashtable]$Headers) $response = try { Invoke-RestMethod -Method GET -Uri $Uri -ContentType 'application/json' -Headers $Headers } catch { Get-ResponseError $_.Exception.Response } return $response } function Eval-StatusValue { param ( [int] $status ) $returnStatus = "" switch($status) { 0 { $returnStatus = "Created" } 1 { $returnStatus = "Completed" } 2 { $returnStatus = "Failed" } 3 { $returnStatus = "InProgress" } 4 { $returnStatus = "OnHold" } } return $returnStatus } <# .SYNOPSIS Get status of submitted transaction(s) .DESCRIPTION This cmdlet gets the status of a single transaction, or all transactions submitted for your organization. In order to use this cmdlet, you must first login using the Login-FastTrackAcount cmdlet. To get the status of a single transaction, submit the transazcion ID with the -TransactionId parameter. To get all transactions for your organization, leave out the -TransactionId parameter. .PARAMETER TransactionID Transaction Id to get the status. Leave parameter empty to get all transactions. #> Function Get-FastTrackMigrationTransactionStatus { param ( [Parameter(Mandatory=$false,ValueFromPipeline=$true)] [string] $TransactionID, [Parameter(Mandatory=$false,ValueFromPipeline=$true)] [ValidateSet("dev","uat","prod")] [string] $EnvironmentMode = "prod" ) if($global:MsoAdminProperties.Count -eq 0) { Write-Warning "Unable to retrieve Office 365 credentials! :: Please call [Login-FastTrackAccount] function." return } try { [string] $ApiKey = $global:MsftApiKey $header = @{} $header.Add("ACCESS_TOKEN",$global:MsftAccessToken) $header.Add("TENANT_ID",$global:MsoAdminProperties["MSO-CompanyTenantInfo"]) $header.Add("Accept","application/json") $query = "" if ($TransactionID -ne [string]::Empty) { $query += "transactionId=$TransactionID&environmentType=$global:MsoComOrGov" } else { $query += "environmentType=$global:MsoComOrGov" } if($EnvironmentMode -eq "UAT") { #$transactionStatus = Invoke-GetRequest -Uri ([string]::Format("https://msft-csi-{0}.azurewebsites.net/api/transaction/{1}/Details",$EnvironmentMode, $TransactionID)) -Headers $header $transactionStatus = Invoke-GetRequest -Uri ([string]::Format("https://msft-csi-{0}.azurewebsites.net/api/{1}/transactions?$query",$EnvironmentMode, $global:MsoAdminProperties["MSO-CompanyTenantInfo"])) -Headers $header } else { #$transactionStatus = Invoke-GetRequest -Uri ([string]::Format("https://msft-cssp-{0}.azurewebsites.net/api/transaction/{1}/Details", $EnvironmentMode, $TransactionID)) -Headers:$header $transactionStatus = Invoke-GetRequest -Uri ([string]::Format("https://msft-cssp-{0}.azurewebsites.net/api/{1}/transactions?$query", $EnvironmentMode, $global:MsoAdminProperties["MSO-CompanyTenantInfo"])) -Headers:$header } if($transactionStatus -eq $null -or $transactionStatus -eq 'null') { Write-Warning "Transaction ID $TransactionID was not found" } else { Foreach ($i in $transactionStatus) { $i.Status = (Eval-StatusValue -status:$i.Status) } return $transactionStatus } } catch { Write-Error $_.Exception.ToString() } } function Get-FastTrackTransactionDetail { param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [string] $TransactionID, [Parameter(Mandatory=$false,ValueFromPipeline=$true)] [string] $EnvironmentMode ) if($global:MsoAdminProperties.Count -eq 0) { Write-Warning "Unable to retrieve Office 365 credentials! :: Please call [Login-FastTrackAccount] function." Exit } [string] $ApiKey = $global:MsftApiKey $header = @{} $header.Add("API_KEY", $ApiKey) $header.Add("ACCESS_TOKEN",$global:MsftAccessToken) $header.Add("TENANT_ID",$global:MsoAdminProperties["MSO-CompanyTenantInfo"]) Write-Host "Sending Transaction Request..." $response = Invoke-GetRequest -Uri ([System.String]::Format("https://msft-cssp-{0}.azurewebsites.net/api/transaction/{1}/html", $EnvironmentMode, $TransactionID)) -Headers $header if($response.StatusCode -ne $null) { # Error? Write-Warning "Request failed! : $($response.StatusCode) - Error Message: $($response)" } else { Write-Host "Get request completed" } return $response } |