get-MSIDReliableStatus.ps1
|
function Get-MsIdReliableStatus { param( [Parameter(Mandatory=$true)] $outputObject ) $url = "https://login.microsoftonline.com/common/userrealm?user=$([uri]::EscapeDataString($outputObject.address))&api-version=2.1&checkForMicrosoftAccount=True" out-logfile -string $url $outputObject.TimeStamp = (Get-Date).ToUniversalTime().ToString("yyyy-MM-dd HH:mm:ss UTC") try { $response = Invoke-WebRequest -Uri $url -Method Get -UserAgent "Mozilla/5.0" -UseBasicParsing -TimeoutSec 10 -errorAction STOP $outputObject.requestID = $response.Headers["x-ms-request-id"] try { $data = $response.Content | ConvertFrom-Json -ErrorAction Stop } catch { out-logfile -string $_ out-logfile -string "Unable to convert the response to JSON - failure." -isError:$true } } catch { out-logfile -string "Unable to test for presence of commercial account." out-logfile -string $_ $outputObject.AccountError = $true $outputObject.AccountErrorText = $_ $outputObject.requestID = "None" } $status = $false if ($data.IsMicrosoftAccountSet -eq $true) { out-logfile -string $data.IsMicrosoftAccountSet out-logfile -string $data.MicrosoftAccount if ($data.MicrosoftAccount -eq 0) { $status = $true } elseif ($data.MicrosoftAccount -eq 1) { $status = $false } elseif ($data.MicrosoftAccount -eq 2) { $outputObject.AccountError = $true $outputObject.AccountErrorText = "Validation request throttled by service." } else { $outputObject.AccountError = $true $outputObject.AccountErrorText = "Unknown error - search logs for any clues." } } $outputObject.accountPresent = $status out-logfile -string $outputObject.accountPresent out-logfile -string $outputObject.requestID out-logfile -string $outputObject.TimeStamp return $outputObject } |