├── Compare-ObjectsInVSCode.ps1 ├── Convert-CaesarCipher.ps1 ├── Find-DriveItemDuplicates.ps1 ├── Get-AlternateMailboxes.ps1 ├── Get-AlternateMailboxes_BasicAuth.ps1 ├── Graph_SignInActivity_Report.ps1 ├── LICENSE ├── LowerCaseUPNs.ps1 ├── MailUser-MgUser-Activity-Report.ps1 ├── MgUserMail.ps1 ├── OSINT ├── AutoDetect-AutoDiscover-v2 │ ├── Get-AutoDetect.ps1 │ └── Get-AutoDiscoverV2.ps1 ├── Get-EntraCredentialInfo.ps1 ├── Get-EntraCredentialType.ps1 ├── Get-ExODomains.ps1 └── Request-AdfsCerts.ps1 ├── RDPConnectionParser.ps1 ├── README.md ├── RecipientReportv5.ps1 ├── Restore-FromRecycleBin.ps1 ├── SECURITY.md └── SupportingFiles ├── Graph_SignInActivity_Report_AAD_SKUs.csv ├── Graph_SignInActivity_Report_AAD_Service_Plan_Ids.csv └── PassKey_AAGUID_Catalog.json /Compare-ObjectsInVSCode.ps1: -------------------------------------------------------------------------------- 1 |  2 | function Compare-ObjectsInVSCode { 3 | param ( 4 | [Parameter(Mandatory = $true)] 5 | [PSObject]$Object1, 6 | 7 | [Parameter(Mandatory = $true)] 8 | [PSObject]$Object2, 9 | 10 | [Parameter(Mandatory = $false)] 11 | [ValidateRange(1, 10)] 12 | [int]$Depth = 1 13 | ) 14 | 15 | if (-not (Get-Command code -ErrorAction SilentlyContinue)) { 16 | Write-Error "Visual Studio Code couldn't be found." 17 | return 18 | } 19 | 20 | $tempDir = $env:TMP 21 | $file1Path = Join-Path -Path $tempDir -ChildPath "object1.json" 22 | $file2Path = Join-Path -Path $tempDir -ChildPath "object2.json" 23 | 24 | $json1 = $Object1 | ConvertTo-Json -Depth $Depth 25 | $json2 = $Object2 | ConvertTo-Json -Depth $Depth 26 | 27 | $json1 | Out-File -FilePath $file1Path 28 | $json2 | Out-File -FilePath $file2Path 29 | 30 | # Open files in VS Code for comparison 31 | code -d $file1Path $file2Path 32 | } 33 | 34 | # Example 35 | $Process1 = Get-Process mspaint 36 | $Process2 = Get-Process excel 37 | Compare-ObjectsInVSCode $Process1 $Process2 -Depth 2 38 | -------------------------------------------------------------------------------- /Convert-CaesarCipher.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Practicing with functions just for fun. Convert-CaesarCipher encodes or decodes case-sensitive English strings based on the Caesar Cipher. 4 | 5 | .DESCRIPTION 6 | Practicing with functions just for fun. Convert-CaesarCipher encodes or decodes case-sensitive English strings based on the Caesar Cipher. 7 | https://en.wikipedia.org/wiki/Caesar_cipher 8 | 9 | .EXAMPLE 10 | 11 | Convert-CaesarCipher -InputString "Hello World" -Shift 20 12 | # Encode is the default. 13 | # Returns: Byffi Qilfx 14 | 15 | .EXAMPLE 16 | 17 | "Hello World" | Convert-CaesarCipher -Shift 20 18 | # Pipeline input is accepted. 19 | # Returns: Byffi Qilfx 20 | 21 | .EXAMPLE 22 | 23 | Convert-CaesarCipher "Hello World" -Shift 20 24 | # InputString is a positional parameter. 25 | # Returns: Byffi Qilfx 26 | 27 | .EXAMPLE 28 | 29 | Convert-CaesarCipher -InputString "Hello World" -Shift 20 -Encode 30 | # You can also specify Encode to avoid confusion. 31 | # Returns: Byffi Qilfx 32 | 33 | .EXAMPLE 34 | 35 | Convert-CaesarCipher -InputString "Byffi Qilfx" -Shift 20 -Decode 36 | # Returns: Hello World 37 | 38 | .LINK 39 | 40 | https://mikecrowley.us 41 | #> 42 | 43 | function Convert-CaesarCipher { 44 | 45 | [CmdletBinding(DefaultParameterSetName = 'Encode')] 46 | param ( 47 | [parameter(ParameterSetName = "Encode")][switch]$Encode, 48 | [parameter(ParameterSetName = "Decode")][switch]$Decode, 49 | [Parameter( 50 | Mandatory = $true, 51 | ValueFromPipeline = $true, 52 | ValueFromPipelineByPropertyName = $true, 53 | Position = 0, 54 | HelpMessage = "Please provide an input string containing only English letters spaces." 55 | )] 56 | [ValidateScript({ 57 | if ($_ -match '^[a-z ]+$') { $true } else { throw "Input must contain only English letters spaces." } 58 | })] 59 | [string]$InputString, 60 | [Parameter( 61 | Mandatory = $true, 62 | HelpMessage = "Please provide a numerical Shift value." 63 | )] 64 | [int]$Shift 65 | ) 66 | 67 | $LowerAlphabet = "abcdefghijklmnopqrstuvwxyz" 68 | $UpperAlphabet = $LowerAlphabet.ToUpper() 69 | $output = "" 70 | 71 | foreach ($Char in $InputString.ToCharArray()) { 72 | [string]$StringChar = $Char 73 | if ($StringChar -eq " ") { 74 | $output += " " 75 | } 76 | elseif ($StringChar.ToUpper() -ceq $StringChar) { 77 | if ($Decode) { 78 | $index = ($UpperAlphabet.IndexOf($StringChar) - $Shift) % $UpperAlphabet.Length 79 | $output += $UpperAlphabet[$index] 80 | } 81 | else { 82 | $index = ($UpperAlphabet.IndexOf($StringChar) + $Shift) % $UpperAlphabet.Length 83 | $output += $UpperAlphabet[$index] 84 | } 85 | } 86 | else { 87 | if ($Decode) { 88 | $index = ($LowerAlphabet.IndexOf($StringChar) - $Shift) % $LowerAlphabet.Length 89 | $output += $LowerAlphabet[$index] 90 | } 91 | else { 92 | $index = ($LowerAlphabet.IndexOf($StringChar) + $Shift) % $LowerAlphabet.Length 93 | $output += $LowerAlphabet[$index] 94 | } 95 | } 96 | } 97 | return $output 98 | } 99 | -------------------------------------------------------------------------------- /Find-DriveItemDuplicates.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .DESCRIPTION 3 | Find-DriveItemDuplicates examines the hash values of OneDrive files to determine if there are duplicates. 4 | Duplicates are reported to the desktop, the pipeline, or both. 5 | 6 | Connect to Graph prior to running Find-DriveItemDuplicates. 7 | e.g. 8 | Connect-MgGraph -Scopes Files.Read 9 | 10 | If you are checking files outside of your own OneDrive, you'll want to register an app with the appropriate permissions. 11 | Reference: 12 | https://learn.microsoft.com/en-us/powershell/microsoftgraph/app-only?view=graph-powershell-1.0 13 | 14 | .EXAMPLE 15 | 16 | Find-DriveItemDuplicates 17 | 18 | # Runs with parameter defaults: 19 | # UPN: Current user 20 | # RootPath: Root of drive 21 | # NoRecursion: False (It will recurse through folders) 22 | # OutputStyle: ReportAndPassThru 23 | # ResultSize: 32767 24 | # Silent: False (It will write comments to the screen) 25 | 26 | .EXAMPLE 27 | 28 | Find-DriveItemDuplicates -RootPath "Desktop" -OutputStyle Report -ResultSize 500 29 | 30 | # Searches the current user's desktop folder at the root of the drive and its subfolders. 31 | # Checks up to 500 files and generates the desktop report only (good for testing). 32 | 33 | .EXAMPLE 34 | 35 | Find-DriveItemDuplicates -Upn user1@example.com -RootPath "Desktop/DupesDirectory" -OutputStyle Report -NoRecursion 36 | 37 | # Searches the user1's Desktop/DupesDirectory folder at the root of the drive. 38 | # Does not check subfolders. Creates the reports but does not return the items to the pipeline. 39 | 40 | .NOTES 41 | 42 | Create some duplicate files for testing if needed. 43 | 44 | $Desktop = [Environment]::GetFolderPath("Desktop") 45 | $TestDir = mkdir $Desktop\DupesDirectory -Force 46 | $TestLogFile = (Invoke-WebRequest "https://gist.githubusercontent.com/Mike-Crowley/d4275d6abd78ad8d19a6f1bcf9671ec4/raw/66fe537cfe8e58b1a5eb1c1336c4fdf6a9f05145/log.log.log").content 47 | 1..25 | ForEach-Object { $TestLogFile | Out-File "$TestDir\$(Get-Random).log" } 48 | 49 | Create more, if you'd like. 50 | 51 | 1..25 | ForEach-Object { "Hello World 1" | Out-File "$TestDir\$(Get-Random).log" } 52 | 1..25 | ForEach-Object { "Hello World 2" | Out-File "$TestDir\$(Get-Random).log" } 53 | 54 | # Create some non-duplicate files. 55 | 56 | 1..25 | ForEach-Object { Get-Random | Out-File "$TestDir\$(Get-Random).log" } 57 | 58 | !! Wait for the files to sync via OneDrive's sync client (If using Known Folder Move - KFM) !! 59 | 60 | .LINK 61 | 62 | https://mikecrowley.us/2024/04/20/onedrive-and-sharepoint-online-file-deduplication-report-microsoft-graph-api 63 | #> 64 | 65 | function Find-DriveItemDuplicates { 66 | param( 67 | [ValidateScript( 68 | { 69 | if ($_ -match "^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$") { $true } else { throw "Invalid UPN." } 70 | } 71 | )] 72 | [string]$Upn = (whoami /upn), 73 | [string]$RootPath = "/", 74 | [switch]$NoRecursion = $false, 75 | [ValidateSet( 76 | "Report", "PassThru", "ReportAndPassThru" 77 | )] 78 | [string]$OutputStyle = "ReportAndPassThru", 79 | [int32]$ResultSize = [int16]::MaxValue, 80 | [switch]$Silent = $false 81 | ) 82 | $StartTime = Get-Date 83 | 84 | # Some pre-run checks 85 | if ($null -eq (Get-Command Invoke-MgGraphRequest) ) { Throw "Invoke-MgGraphRequest cmdlet not found. Install the Microsoft.Graph.Authentication PowerShell module. `nhttps://learn.microsoft.com/en-us/graph/sdks/sdk-installation#install-the-microsoft-graph-powershell-sdk" } 86 | if ($null -eq (Get-MgContext)) { Throw "No Graph context found. Please call Connect-MgGraph." } 87 | if ( 88 | (((Get-MgContext).Scopes | Out-String ) -notlike '*Files.Read*') -and 89 | (((Get-MgContext).Scopes | Out-String ) -notlike '*Sites.Read*') 90 | ) { Write-Warning "Permission scope may be missing. `nhttps://learn.microsoft.com/en-us/graph/api/driveitem-list-children?view=graph-rest-beta&tabs=http#permissions" } 91 | 92 | #Find the user's drive 93 | $Drive = Invoke-MgGraphRequest -Uri "beta/users/$upn/drive" 94 | if ($Drive.webUrl -notlike 'https*') { Throw "Drive not found." } 95 | 96 | if (-not $Silent) { Write-Host "`nFound Drive: " -ForegroundColor Cyan -NoNewline } 97 | if (-not $Silent) { Write-Host $Drive.webUrl -ForegroundColor DarkCyan } 98 | if (-not $Silent) { Write-Host "" } 99 | 100 | $baseUri = "beta/drives/$($Drive.id)/root" 101 | 102 | # Create a new list to hold all file objects 103 | $FileList = [Collections.Generic.List[Object]]::new() 104 | 105 | # To do: 106 | # Normalize if/else - move shared components above if/else 107 | # Implement better graph error handling 108 | 109 | if ($NoRecursion) { 110 | $uri = "beta/drives/$($Drive.id)/root:/$($RootPath):/children" 111 | 112 | do { 113 | if (-not $Silent) { Write-Host "Searching: " -ForegroundColor Cyan -NoNewline } 114 | if (-not $Silent) { Write-Host $uri -ForegroundColor DarkCyan } 115 | $PageResults = Invoke-MgGraphRequest -Uri $uri 116 | if ($PageResults.value) { 117 | $FileList.AddRange($PageResults.value) 118 | } 119 | else { 120 | $FileList.Add($PageResults) 121 | } 122 | $uri = $PageResults.'@odata.nextlink' 123 | } until (-not $uri) 124 | $FileList = $FileList | Where-Object { $null -ne $_.file } # remove non-files such as folders 125 | 126 | $FileList = foreach ($DriveItem in $FileList) { 127 | [pscustomobject] @{ 128 | name = $DriveItem.name 129 | lastModifiedDateTime = $DriveItem.lastModifiedDateTime 130 | quickXorHash = $DriveItem.file.hashes.quickXorHash 131 | size = $DriveItem.size 132 | webUrl = $DriveItem.webUrl 133 | } 134 | } 135 | } 136 | else { 137 | # Internal function to recursively get files 138 | function Get-FolderItemsRecursively { 139 | param( 140 | [string]$Path, 141 | [Collections.Generic.List[Object]]$AllFiles 142 | ) 143 | 144 | if ($path -eq "/") { 145 | $uri = "$baseUri/children" 146 | } 147 | else { 148 | $uri = "$baseUri`:/$path`:/children" 149 | } 150 | 151 | if ($AllFiles.Count -lt $ResultSize) { 152 | do { 153 | if (-not $Silent) { Write-Host "Searching: " -ForegroundColor Cyan -NoNewline } 154 | if (-not $Silent) { Write-Host $path -ForegroundColor DarkCyan } 155 | 156 | if ($AllFiles.count -gt 1) { 157 | if (-not $Silent) { Write-Host "Files Evaluated: " -ForegroundColor Cyan -NoNewline } 158 | if (-not $Silent) { Write-Host $AllFiles.count -ForegroundColor DarkCyan } 159 | } 160 | 161 | $Response = Invoke-MgGraphRequest -Uri $Uri 162 | 163 | foreach ($Item in $Response.value) { 164 | if ($null -ne $Item.folder) { 165 | # Recursive call if the item is a folder 166 | $FolderPath = "$Path/$($Item.name)" 167 | Get-FolderItemsRecursively -Path $FolderPath -AllFiles $AllFiles 168 | } 169 | elseif ($null -ne $Item.file) { 170 | # Add to the list if the item is a file 171 | $AllFiles.Add( 172 | [pscustomobject]@{ 173 | Name = $Item.name 174 | LastModifiedDateTime = $Item.lastModifiedDateTime 175 | QuickXorHash = $Item.file.hashes.quickXorHash 176 | Size = $Item.size 177 | WebUrl = $Item.webUrl 178 | } 179 | ) 180 | } 181 | } 182 | # Pagination handling 183 | $Uri = $Response.'@odata.nextLink' 184 | } until ((-not $Uri) -or ($AllFiles.Count -ge $ResultSize)) 185 | } 186 | } 187 | # Start recursion from the root Path 188 | Get-FolderItemsRecursively -Path $RootPath -AllFiles $FileList 189 | } 190 | 191 | # Create the groups of dupes. The last graph page may have returned more than the $ResultSize, so limit output as needed. 192 | $GroupsOfDupes = $FileList[0..($ResultSize - 1)] | Where-Object { $null -ne $_.quickXorHash } | Group-Object quickXorHash | Where-Object count -ge 2 193 | 194 | # Select final columns for output 195 | $Output = foreach ($Group in $GroupsOfDupes) { 196 | $FileGroupSize = ($Group.Group.size | Measure-Object -Sum).Sum 197 | [pscustomobject] @{ 198 | QuickXorHash = $Group.Name 199 | NumberOfFiles = $Group.Count 200 | FileSizeKB = $Group.Group.size[0] / 1KB 201 | FileGroupSizeKB = $FileGroupSize / 1KB 202 | PossibleWasteKB = ( $FileGroupSize - $Group.Group.size[0] ) / 1KB 203 | FileNames = ($Group.Group.name | Sort-Object -Unique) -join ';' 204 | WebLocalPaths = ($Group.Group.webUrl | ForEach-Object { ([uri]$_).LocalPath }) -join ";" 205 | } 206 | } 207 | 208 | # Create pipeline output if requested 209 | if (($OutputStyle -eq "PassThru") -or ($OutputStyle -eq "ReportAndPassThru")) { 210 | $Output 211 | } 212 | 213 | # Create reports if requested 214 | if (($OutputStyle -eq "Report") -or ($OutputStyle -eq "ReportAndPassThru")) { 215 | $FileDate = Get-Date -format ddMMMyyyy_HHmm.s 216 | $Desktop = [Environment]::Getfolderpath("Desktop") 217 | $CsvOutputPath = "$Desktop\$UPN-DupeReport-$FileDate.csv" 218 | $JsonOutputPath = $CsvOutputPath -replace ".csv", ".json" 219 | 220 | $Output | Export-Csv $CsvOutputPath -NoTypeInformation 221 | $Output | ConvertTo-Json | Out-File $JsonOutputPath 222 | } 223 | 224 | # Report status to console 225 | $EndTime = Get-Date 226 | if (-not $Silent) { Write-Host "`nJob Duration: " -ForegroundColor Cyan } 227 | if (-not $Silent) { Write-Host " Job Start: " -ForegroundColor Cyan -NoNewline } 228 | if (-not $Silent) { Write-Host $StartTime -ForegroundColor DarkCyan } 229 | if (-not $Silent) { Write-Host " Job End: " -ForegroundColor Cyan -NoNewline } 230 | if (-not $Silent) { Write-Host $EndTime -ForegroundColor DarkCyan } 231 | if (-not $Silent) { Write-Host " Total Seconds: " -ForegroundColor Cyan -NoNewline } 232 | if (-not $Silent) { Write-Host $([math]::Ceiling(($EndTime - $StartTime).TotalSeconds)) -ForegroundColor DarkCyan } 233 | 234 | if (-not $Silent) { Write-Host "`nJob Parameters: " -ForegroundColor Cyan } 235 | if (-not $Silent) { Write-Host " ResultSize: " -ForegroundColor Cyan -NoNewline } 236 | if (-not $Silent) { Write-Host $ResultSize -ForegroundColor DarkCyan } 237 | 238 | if (-not $Silent) { Write-Host " Recurse: " -ForegroundColor Cyan -NoNewline } 239 | if (-not $Silent) { Write-Host (-not $NoRecursion) -ForegroundColor DarkCyan } 240 | 241 | if (-not $Silent) { Write-Host " OutputStyle: " -ForegroundColor Cyan -NoNewline } 242 | if (-not $Silent) { Write-Host $OutputStyle -ForegroundColor DarkCyan } 243 | 244 | if (-not $Silent) { Write-Host "`nTotal Files Evaluated: " -ForegroundColor Cyan -NoNewline } 245 | if (-not $Silent) { Write-Host "$(($FileList[0..($ResultSize - 1)] ).count)" -ForegroundColor DarkCyan } 246 | 247 | if (-not $Silent) { Write-Host "`nFound " -ForegroundColor Cyan -NoNewline } 248 | if (-not $Silent) { Write-Host "$($($GroupsOfDupes | Measure-Object).count)" -ForegroundColor DarkCyan -NoNewline } 249 | if (-not $Silent) { Write-Host " group(s) of duplicate files." -ForegroundColor Cyan -NoNewline } 250 | 251 | if ($($GroupsOfDupes | Measure-Object).count -ge 1) { 252 | if (-not $Silent) { Write-Host " See desktop reports for details." -ForegroundColor Cyan } 253 | } 254 | 255 | if (-not $Silent) { Write-Host "`nPotential Waste in MB: " -ForegroundColor Cyan -NoNewline } 256 | if (-not $Silent) { Write-Host "$( ($Output.PossibleWasteKB | Measure-Object -Sum).sum / 1MB)" -ForegroundColor DarkCyan -NoNewline } 257 | 258 | } -------------------------------------------------------------------------------- /Get-AlternateMailboxes.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | 3 | .SYNOPSIS 4 | This function queries the AlternateMailboxes node within a user's AutoDiscover response. This version now supports Modern Auth. For the basic Auth version of this script, use Get-AlternateMailboxes_BasicAuth.ps1. 5 | 6 | Requirements: 7 | 8 | 1) Install the MSAL.PS PowerShell Module (Install-Module MSAL.PS) 9 | 2) Register an app in the target tenant 10 | 3) Configure the API permissions on the app you just created 11 | a) Go to your app registration in the portal 12 | b) Click API permissions on the left 13 | c) Click Add permission 14 | d) Click "APIs my organization uses" (NOT GRAPH!) 15 | e) Type "Office 365 Exchange Online" in the search box 16 | f) Select the following permission: 17 | User.Read.All 18 | 4) Optionally: Use a certificate for application-based authentication, which is what the example below uses. Otherwise, you can use the different auth mentioned by Microsoft in the links below. 19 | 20 | Further reading: 21 | 22 | Use app-only authentication with the Microsoft Graph PowerShell SDK 23 | https://learn.microsoft.com/en-us/powershell/microsoftgraph/app-only?tabs=azure-portal&view=graph-powershell-1.0 24 | 25 | Create a self-signed public certificate to authenticate your application 26 | https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-create-self-signed-certificate 27 | 28 | 29 | Version: March 9, 2023 30 | 31 | 32 | .DESCRIPTION 33 | This function queries the AlternateMailboxes node within a user's AutoDiscover response. See the link for details. 34 | 35 | Author: 36 | Mike Crowley 37 | https://BaselineTechnologies.com 38 | 39 | .EXAMPLE 40 | 41 | $TokenParams = @{ 42 | ClientId = '656d524e-fe4a-407a-9579-7e2be1a74a3c' 43 | TenantId = 'example.com' 44 | ClientCertificate = Get-Item Cert:\CurrentUser\My\ 45 | CorrelationId = New-Guid 46 | Scopes = 'https://outlook.office365.com/.default' 47 | } 48 | 49 | $MsalToken = Get-MsalToken @TokenParams 50 | 51 | Get-AlternateMailboxes -SMTPAddress mike@example.com -MsalToken $MsalToken 52 | 53 | .LINK 54 | https://mikecrowley.us/2017/12/08/querying-msexchdelegatelistlink-in-exchange-online-with-powershell/ 55 | 56 | #> 57 | 58 | Function Get-AlternateMailboxes { 59 | 60 | Param( 61 | [parameter(Mandatory = $true)][string] 62 | [string]$SMTPAddress, 63 | [parameter(Mandatory = $true)][Microsoft.Identity.Client.AuthenticationResult] 64 | $MsalToken 65 | ) 66 | try { 67 | Get-Module MSAL.PS -ListAvailable 68 | } 69 | catch { 70 | Write-Error "You must first install the MSAL.PS module (Install-Module MSAL.PS)." 71 | throw 72 | } 73 | $AutoDiscoverRequest = @" 74 | 78 | 79 | Exchange2013 80 | http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings 81 | https://autodiscover.exchange.microsoft.com/autodiscover/autodiscover.svc 82 | 83 | 84 | 85 | 86 | 87 | 88 | $SMTPAddress 89 | 90 | 91 | 92 | UserDisplayName 93 | UserDN 94 | UserDeploymentId 95 | MailboxDN 96 | AlternateMailboxes 97 | 98 | 99 | 100 | 101 | 102 | "@ 103 | # Other attributes available here: https://learn.microsoft.com/en-us/dotnet/api/microsoft.exchange.webservices.autodiscover.usersettingname?view=exchange-ews-api 104 | 105 | $Headers = @{ 106 | 'X-AnchorMailbox' = $SMTPAddress 107 | 'Authorization' = "Bearer $($MsalToken.AccessToken)" 108 | } 109 | 110 | $WebResponse = Invoke-WebRequest https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc -Credential $Credential -Method Post -Body $AutoDiscoverRequest -ContentType 'text/xml; charset=utf-8' -Headers $Headers 111 | [System.Xml.XmlDocument]$XMLResponse = $WebResponse.Content 112 | $RequestedSettings = $XMLResponse.Envelope.Body.GetUserSettingsResponseMessage.Response.UserResponses.UserResponse.UserSettings.UserSetting 113 | return $RequestedSettings.AlternateMailboxes.AlternateMailbox 114 | } 115 | 116 | 117 | ########## Example ########## 118 | 119 | $TokenParams = @{ 120 | ClientId = '656d524e-fe4a-407a-9579-7e2be1a74a3c' 121 | TenantId = 'example.com' 122 | ClientCertificate = Get-Item Cert:\CurrentUser\My\ 123 | CorrelationId = New-Guid 124 | Scopes = 'https://outlook.office365.com/.default' 125 | } 126 | $MsalToken = Get-MsalToken @TokenParams 127 | 128 | Get-AlternateMailboxes -SMTPAddress 'mike@example.com' -MsalToken $MsalToken 129 | 130 | ########## Example ########## 131 | 132 | -------------------------------------------------------------------------------- /Get-AlternateMailboxes_BasicAuth.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | 3 | .SYNOPSIS 4 | This function queries the AlternateMailboxes node within a user's AutoDiscover response. Does not support Modern Auth. See the link for details. 5 | 6 | Version: Jul 29, 2021 7 | 8 | 9 | .DESCRIPTION 10 | This function queries the AlternateMailboxes node within a user's AutoDiscover response. See the link for details. 11 | 12 | Author: 13 | Mike Crowley 14 | https://BaselineTechnologies.com 15 | 16 | .EXAMPLE 17 | 18 | Get-AlternateMailboxes -SMTPAddress mike@contoso.com -Credential (Get-Credential) 19 | 20 | .LINK 21 | https://mikecrowley.us/2017/12/08/querying-msexchdelegatelistlink-in-exchange-online-with-powershell/ 22 | 23 | #> 24 | 25 | Function Get-AlternateMailboxes { 26 | 27 | Param( 28 | [parameter(Mandatory=$true)][string] 29 | $SMTPAddress, 30 | [parameter(Mandatory=$true)][pscredential] 31 | $Credential 32 | ) 33 | 34 | $AutoDiscoverRequest = @" 35 | 39 | 40 | Exchange2013 41 | http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings 42 | https://autodiscover.exchange.microsoft.com/autodiscover/autodiscover.svc 43 | 44 | 45 | 46 | 47 | 48 | 49 | $SMTPAddress 50 | 51 | 52 | 53 | UserDisplayName 54 | UserDN 55 | UserDeploymentId 56 | MailboxDN 57 | AlternateMailboxes 58 | 59 | 60 | 61 | 62 | 63 | "@ 64 | #Other attributes available here: https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.autodiscover.usersettingname(v=exchg.80).aspx 65 | 66 | $Headers = @{ 67 | 'X-AnchorMailbox' = $Credential.UserName 68 | } 69 | 70 | $WebResponse = Invoke-WebRequest https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc -Credential $Credential -Method Post -Body $AutoDiscoverRequest -ContentType 'text/xml; charset=utf-8' -Headers $Headers 71 | [System.Xml.XmlDocument]$XMLResponse = $WebResponse.Content 72 | $RequestedSettings = $XMLResponse.Envelope.Body.GetUserSettingsResponseMessage.Response.UserResponses.UserResponse.UserSettings.UserSetting 73 | return $RequestedSettings.AlternateMailboxes.AlternateMailbox 74 | } 75 | 76 | 77 | Get-AlternateMailboxes -------------------------------------------------------------------------------- /Graph_SignInActivity_Report.ps1: -------------------------------------------------------------------------------- 1 | #requires -modules importexcel, msal.ps 2 | 3 | <# 4 | In this example, I query Microsoft Graph with Invoke-RestMethod, using a custom app registration, 5 | looking for users that have a UPN that ends with subdomain.mikecrowley.us 6 | 7 | It will ultimatly build an xlsx file with the following headers: 8 | displayName, userPrincipalName, lastSignInDateTime, lastNonInteractiveSignInDateTime, skuPartNumbers, licenseAssignmentStates, userId 9 | 10 | Needs graph permissions: 11 | AuditLog.Read.All 12 | Organization.Read.All 13 | #> 14 | 15 | #auth 16 | $tokenParams = @{ 17 | clientID = 18 | tenantID = 19 | RedirectUri = 20 | } 21 | $myToken = Get-MsalToken @tokenParams 22 | 23 | #build request headers 24 | $uri = @' 25 | https://graph.microsoft.com/beta/users?$count=true&$filter=endswith(userPrincipalName,'subdomain.mikecrowley.us')&$select=userPrincipalName,displayName,signInActivity,licenseAssignmentStates,assignedLicenses 26 | '@ 27 | 28 | $requestParams = @{ 29 | Headers = @{ 30 | Authorization = "Bearer $($myToken.AccessToken)" 31 | ConsistencyLevel = "eventual" 32 | } 33 | Method = "Get" 34 | } 35 | 36 | #collect users displayName and signInActivity 37 | #ref: https://learn.microsoft.com/en-us/azure/active-directory/reports-monitoring/howto-manage-inactive-user-accounts#how-to-detect-inactive-user-accounts 38 | 39 | $queryResults = @() 40 | 41 | do { 42 | if ((get-date).AddMinutes(5) -lt $myToken.ExpiresOn.LocalDateTime) { 43 | $pageResults = Invoke-RestMethod -Method $requestParams.Method -Headers $requestParams.Headers -Uri $uri 44 | if ($null -eq $PageResults.value) { 45 | $QueryResults += $PageResults.value 46 | } 47 | else { $QueryResults += $PageResults } 48 | $uri = $PageResults.'@odata.nextlink' 49 | } 50 | else { 51 | Write-Output "Please wait - renewing token..." 52 | $myToken = Get-MsalToken @tokenParams 53 | } 54 | 55 | Write-Output ("Users downloaded: " + $queryResults.Count) 56 | } 57 | until ($null -eq $uri) 58 | 59 | 60 | 61 | # Static list of AAD SKUs 62 | # $SubscribedSkus = Import-Csv .\SupportingFiles\Graph_SignInActivity_Report_AAD_SKUs.csv 63 | # Most are also available here: https://learn.microsoft.com/en-us/azure/active-directory/enterprise-users/licensing-service-plan-reference 64 | # And as a CSV here: https://download.microsoft.com/download/e/3/e/e3e9faf2-f28b-490a-9ada-c6089a1fc5b0/Product%20names%20and%20service%20plan%20identifiers%20for%20licensing.csv 65 | 66 | #Get the list from the tenant 67 | $SubscribedSkus = (Invoke-RestMethod -Method $requestParams.Method -Headers $requestParams.Headers -Uri "https://graph.microsoft.com/v1.0/subscribedSkus").value 68 | 69 | $Skus = [ordered]@{} 70 | foreach ($SKU in $SubscribedSkus) { 71 | $Skus.Add($SKU.SkuId, $SKU.SkuPartNumber) 72 | } 73 | 74 | #Format Output 75 | $FinalOutput = foreach ($User in $queryResults.value) { 76 | [PSCustomObject]@{ 77 | displayName = $user.displayName 78 | userPrincipalName = $user.userPrincipalName 79 | lastSignInDateTime = $user.signInActivity.lastSignInDateTime 80 | lastNonInteractiveSignInDateTime = $user.signInActivity.lastNonInteractiveSignInDateTime 81 | skuPartNumbers = If ($user.licenseAssignmentStates -ne "") { ( $user.assignedlicenses.skuid | ForEach-Object { $SKUs.get_item($_) }) -join ';' } 82 | licenseAssignmentStates = $user.licenseAssignmentStates.state -join ';' 83 | userId = $user.id 84 | } 85 | } 86 | #Write to file 87 | $ReportDate = Get-Date -format ddMMMyyyy_HHmm 88 | $DesktopPath = ([Environment]::GetFolderPath("Desktop") + '\Graph_Reporting\Graph_Reporting_' + $ReportDate + '\') 89 | mkdir $DesktopPath -Force 90 | 91 | $Common_ExportExcelParams = @{ 92 | BoldTopRow = $true 93 | AutoSize = $true 94 | AutoFilter = $true 95 | FreezeTopRow = $true 96 | } 97 | 98 | $FinalOutput | Sort-Object lastSignInDateTime -Descending | Export-Excel @Common_ExportExcelParams -Path ($DesktopPath + $ReportDate + " _signInActivity.xlsx") -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /LowerCaseUPNs.ps1: -------------------------------------------------------------------------------- 1 | #3Jan2018 2 | 3 | #related to script #2 here: 4 | # https://mikecrowley.us/2012/05/14/converting-smtp-proxy-addresses-to-lowercase/ 5 | 6 | #Connect to Exchange 2013+ Server 7 | $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchange-admin/PowerShell/ -Authentication Kerberos 8 | Import-PSSession $Session 9 | Set-ADServerSettings -ViewEntireForest $true 10 | 11 | 12 | $TargetObjects = Get-RemoteMailbox -ResultSize Unlimited | Where {$_.UserPrincipalName.ToLower() -cne $_.UserPrincipalName} 13 | 14 | Write-Host $TargetObjects.count "Remote mailboxes have one or more uppercase characters." -ForegroundColor Cyan 15 | 16 | #Backup First 17 | Function Get-FileFriendlyDate {Get-Date -format ddMMMyyyy_HHmm.s} 18 | $DesktopPath = ([Environment]::GetFolderPath("Desktop") + '\') 19 | $LogPath = ($DesktopPath + (Get-FileFriendlyDate) + "-UppercaseBackup.xml") 20 | 21 | $TargetObjects | select DistinguishedName, PrimarySMTPAddress, UserPrincipalName | Export-Clixml $LogPath 22 | Write-Host "A backup XML has been placed here:" $LogPath -ForegroundColor Cyan 23 | Write-Host 24 | 25 | $Counter = $TargetObjects.Count 26 | 27 | foreach ($RemoteMailbox in $TargetObjects) { 28 | 29 | Write-Host "Setting: " -ForegroundColor DarkCyan -NoNewline 30 | Write-Host $RemoteMailbox.PrimarySmtpAddress -ForegroundColor Cyan 31 | Write-Host "Remaining: " -ForegroundColor DarkCyan -NoNewline 32 | Write-Host $Counter -ForegroundColor Cyan 33 | 34 | Set-RemoteMailbox $RemoteMailbox.Identity -UserPrincipalName ("TMP-Rename-" + $RemoteMailbox.UserPrincipalName) 35 | Set-RemoteMailbox $RemoteMailbox.Identity -UserPrincipalName $RemoteMailbox.UserPrincipalName.ToLower() 36 | 37 | 38 | $Counter -- 39 | } 40 | 41 | Write-Host 42 | Write-Host "Done." -ForegroundColor DarkCyan 43 | 44 | 45 | #End -------------------------------------------------------------------------------- /MailUser-MgUser-Activity-Report.ps1: -------------------------------------------------------------------------------- 1 | Connect-ExchangeOnline -UserPrincipalName 2 | Connect-MgGraph -TenantId 3 | Select-MgProfile beta 4 | 5 | $MailUsers = Get-MailUser -filter {recipienttypedetails -eq 'MailUser'} -ResultSize unlimited 6 | $ReportUsers = $MailUsers | ForEach-Object { 7 | $MailUser = $_ 8 | 9 | $Counter ++ 10 | $percentComplete = (($Counter / $MailUsers.count) * 100) 11 | Write-Progress -Activity "Getting MG Objects" -PercentComplete $percentComplete -Status "$percentComplete% Complete:" 12 | 13 | #to do - organize properties better 14 | Get-MgUser -UserId $MailUser.ExternalDirectoryObjectId -ConsistencyLevel eventual -Property @( 15 | 'UserPrincipalName' 16 | 'SignInActivity' 17 | 'CreatedDateTime' 18 | 'DisplayName' 19 | 'Mail' 20 | 'OnPremisesImmutableId' 21 | 'OnPremisesDistinguishedName' 22 | 'OnPremisesLastSyncDateTime' 23 | 'SignInSessionsValidFromDateTime' 24 | 'RefreshTokensValidFromDateTime' 25 | 'id' 26 | ) | Select-Object @( 27 | 'UserPrincipalName' 28 | 'CreatedDateTime' 29 | 'DisplayName' 30 | 'Mail' 31 | 'OnPremisesImmutableId' 32 | 'OnPremisesDistinguishedName' 33 | 'OnPremisesLastSyncDateTime' 34 | 'SignInSessionsValidFromDateTime' 35 | 'RefreshTokensValidFromDateTime' 36 | 'id' 37 | @{n='PrimarySmtpAddress'; e={$MailUser.PrimarySmtpAddress}} 38 | @{n='ExternalEmailAddress'; e={$MailUser.ExternalEmailAddress}} 39 | @{n='LastSignInDateTime'; e={[datetime]$_.SignInActivity.LastSignInDateTime}} 40 | @{n='lastNonInteractiveSignInDateTime'; e={[datetime]$_.SignInActivity.AdditionalProperties.lastNonInteractiveSignInDateTime}} 41 | ) 42 | } 43 | 44 | $Common_ExportExcelParams = @{ 45 | # PassThru = $true 46 | BoldTopRow = $true 47 | AutoSize = $true 48 | AutoFilter = $true 49 | FreezeTopRow = $true 50 | } 51 | 52 | $FileDate = Get-Date -Format yyyyMMddTHHmmss 53 | 54 | $ReportUsers | Sort-Object UserPrincipalName | Export-Excel @Common_ExportExcelParams -Path ("c:\tmp\" + $filedate + "_report.xlsx") -WorksheetName report 55 | -------------------------------------------------------------------------------- /MgUserMail.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | Script for sending email with send-mgusermail 3 | 4 | Ref: 5 | 6 | https://mikecrowley.us/2021/10/27/sending-email-with-send-mgusermail-microsoft-graph-powershell 7 | https://docs.microsoft.com/en-us/graph/api/user-sendmail 8 | https://docs.microsoft.com/en-us/powershell/module/microsoft.graph.users.actions/send-mgusermail 9 | 10 | #> 11 | 12 | #region 1: Setup 13 | 14 | $emailRecipients = @( 15 | 'user1@domain.com' 16 | 'user2@domain.biz' 17 | ) 18 | $emailSender = 'me@domain.info' 19 | 20 | $emailSubject = "Sample Email | " + (Get-Date -UFormat %e%b%Y) 21 | 22 | $MgConnectParams = @{ 23 | ClientId = '' 24 | TenantId = '' 25 | CertificateThumbprint = '' 26 | } 27 | 28 | Function ConvertTo-IMicrosoftGraphRecipient { 29 | [cmdletbinding()] 30 | Param( 31 | [array]$SmtpAddresses 32 | ) 33 | foreach ($address in $SmtpAddresses) { 34 | @{ 35 | emailAddress = @{address = $address} 36 | } 37 | } 38 | } 39 | 40 | Function ConvertTo-IMicrosoftGraphAttachment { 41 | [cmdletbinding()] 42 | Param( 43 | [string]$UploadDirectory 44 | ) 45 | $directoryContents = Get-ChildItem $UploadDirectory -Attributes !Directory -Recurse 46 | foreach ($file in $directoryContents) { 47 | $encodedAttachment = [convert]::ToBase64String((Get-Content $file.FullName -Encoding byte)) 48 | @{ 49 | "@odata.type"= "#microsoft.graph.fileAttachment" 50 | name = ($File.FullName -split '\\')[-1] 51 | contentBytes = $encodedAttachment 52 | } 53 | } 54 | } 55 | 56 | #endregion 1 57 | 58 | 59 | #region 2: Run 60 | 61 | [array]$toRecipients = ConvertTo-IMicrosoftGraphRecipient -SmtpAddresses $emailRecipients 62 | 63 | $attachments = ConvertTo-IMicrosoftGraphAttachment -UploadDirectory C:\tmp 64 | 65 | $emailBody = @{ 66 | ContentType = 'html' 67 | Content = Get-Content 'C:\tmp\HelloWorld.htm' 68 | } 69 | 70 | Connect-Graph @MgConnectParams 71 | Select-MgProfile v1.0 72 | 73 | $body += @{subject = $emailSubject} 74 | $body += @{toRecipients = $toRecipients} 75 | $body += @{attachments = $attachments} 76 | $body += @{body = $emailBody} 77 | 78 | $bodyParameter += @{'message' = $body} 79 | $bodyParameter += @{'saveToSentItems' = $false} 80 | 81 | Send-MgUserMail -UserId $emailSender -BodyParameter $bodyParameter 82 | 83 | #endregion 2 84 | -------------------------------------------------------------------------------- /OSINT/AutoDetect-AutoDiscover-v2/Get-AutoDetect.ps1: -------------------------------------------------------------------------------- 1 | Function Get-AutoDetect { 2 | param ( 3 | [parameter(Mandatory = $true)][string] 4 | $Upn 5 | ) 6 | $Response = Invoke-WebRequest "https://prod-autodetect.outlookmobile.com/autodetect/detect" -Headers @{"X-Email" = $upn } 7 | $Response.Content | ConvertFrom-Json | select -ExpandProperty protocols 8 | } 9 | 10 | Get-AutoDetect -Upn user1@mikecrowley.us # must be a valid smtp address -------------------------------------------------------------------------------- /OSINT/AutoDetect-AutoDiscover-v2/Get-AutoDiscoverV2.ps1: -------------------------------------------------------------------------------- 1 | Function Get-AutoDiscoverV2 { 2 | param ( 3 | [parameter(Mandatory = $true)][string] 4 | $Upn 5 | ) 6 | $Response = Invoke-WebRequest "https://outlook.office365.com/autodiscover/autodiscover.json/v1.0/$($upn)?Protocol=activesync" #or change to ews 7 | $Response.Content | ConvertFrom-Json 8 | } 9 | 10 | Get-AutoDiscoverV2 -Upn user1@mikecrowley.us # must be a valid smtp address -------------------------------------------------------------------------------- /OSINT/Get-EntraCredentialInfo.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Misc OSINT 4 | 5 | .EXAMPLE 6 | 7 | Get-EntraCredentialInfo -Upn user@example.com 8 | 9 | .LINK 10 | 11 | https://mikecrowley.us 12 | #> 13 | 14 | function Get-EntraCredentialInfo { 15 | param ( 16 | [parameter(Mandatory = $true)][string] 17 | $Upn 18 | ) 19 | 20 | $Domain = ($Upn -split '@')[1] 21 | $Body = @{ 22 | username = $Upn 23 | isOtherIdpSupported = $true 24 | } 25 | $Body = $Body | ConvertTo-Json -Compress 26 | 27 | $ErrorActionPreference = "SilentlyContinue" 28 | $CredentialResponse = Invoke-RestMethod "https://login.microsoftonline.com/common/GetCredentialType" -Method Post -Body $Body 29 | $OpenidResponse = Invoke-WebRequest "https://login.microsoftonline.com/$domain/.well-known/openid-configuration" | ConvertFrom-Json 30 | $ErrorActionPreference = "Continue" 31 | 32 | $Output = [pscustomobject]@{ 33 | Username = $CredentialResponse.Username 34 | Domain = $Domain 35 | UserFound = $CredentialResponse.IfExistsResult -ne 1 36 | 37 | #IfExistsResult = $CredentialResponse.IfExistsResult 38 | IfExistsResultDescription = switch ($CredentialResponse.IfExistsResult) { 39 | "-1" { "UNKNOWN" } 40 | "0" { "VALID_USER" } 41 | "1" { "INVALID_USER" } 42 | "2" { "THROTTLE" } 43 | "4" { "ERROR" } 44 | "5" { "VALID_USER-DIFFERENT_IDP" } 45 | "6" { "VALID_USER-ExistsBoth_IDP" } # causes pidpdisambiguation / accountpicker 46 | default { $CredentialResponse.IfExistsResult } 47 | } # https://github.com/BarrelTit0r/o365enum/blob/master/o365enum.py 48 | 49 | #PrefCredential = $CredentialResponse.Credentials.PrefCredential 50 | PrefCredentialDescription = switch ($CredentialResponse.Credentials.PrefCredential) { 51 | "0" { "0" } 52 | "1" { "1" } 53 | "2" { "2" } 54 | "3" { "3" } 55 | default { $CredentialResponse.Credentials.PrefCredential } 56 | } # TO DO - https://learn.microsoft.com/en-us/entra/identity/authentication/concept-system-preferred-multifactor-authentication#how-does-system-preferred-mfa-determine-the-most-secure-method 57 | 58 | FederatedDomain = $null -ne $CredentialResponse.Credentials.FederationRedirectUrl 59 | 60 | #DomainType = $CredentialResponse.EstsProperties.DomainType 61 | DomainTypeDescription = switch ($CredentialResponse.EstsProperties.DomainType) { 62 | '1' { "UNKNOWN" } 63 | '2' { "COMMERCIAL" } 64 | '3' { "MANAGED" } 65 | '4' { "FEDERATED" } 66 | '5' { "CLOUD_FEDERATED" } 67 | default { $CredentialResponse.EstsProperties.DomainType } 68 | } 69 | 70 | #DesktopSsoEnabled = $CredentialResponse.EstsProperties.DesktopSsoEnabled 71 | #UserTenantBranding = $CredentialResponse.EstsProperties.UserTenantBranding 72 | TenantGuid = if ($null -ne $OpenidResponse) { $OpenidResponse.userinfo_endpoint -replace 'https://login.microsoftonline.com/' -replace 'https://login.microsoftonline.us/' -replace '/openid/userinfo' } else {} 73 | tenant_region_scope = if ($null -ne $OpenidResponse) { $OpenidResponse.tenant_region_scope } else {} 74 | tenant_region_sub_scope = if ($null -eq $OpenidResponse.tenant_region_sub_scope) { "WW" } else { $OpenidResponse.tenant_region_sub_scope } 75 | #CredentialResponse = if ($null -ne $OpenidResponse) { $OpenidResponse.cloud_instance_name } else {} 76 | FederationRedirectUrl = $CredentialResponse.Credentials.FederationRedirectUrl 77 | } 78 | 79 | $Output 80 | 81 | if ($Output.DomainTypeDescription -eq "FEDERATED") { 82 | Write-Warning "[$($Output.Username)] All users in a FEDERATED domain return VALID_USER by this endpoint. You must confirm with the system referenced in the FederationRedirectUrl.`n" 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /OSINT/Get-EntraCredentialType.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Misc OSINT 4 | Superseded by Get-EntraCredentialInfo 12 Apr 2024 5 | https://github.com/Mike-Crowley/Public-Scripts/blob/main/OSINT/Get-EntraCredentialInfo.ps1 6 | 7 | .EXAMPLE 8 | 9 | Get-EntraCredentialType -Upn user1@domain.com 10 | 11 | .LINK 12 | 13 | https://mikecrowley.us 14 | #> 15 | Function Get-EntraCredentialType { 16 | param ( 17 | [parameter(Mandatory = $true)][string] 18 | $Upn 19 | ) 20 | $Body = @{ 21 | username = $Upn 22 | isOtherIdpSupported = $true 23 | } 24 | $Body = $Body | ConvertTo-Json -Compress 25 | $Response = Invoke-RestMethod -Method Post -Uri "https://login.microsoftonline.com/common/GetCredentialType" -Body $Body 26 | 27 | [pscustomobject]@{ 28 | Username = $Response.Username 29 | PrefCredential = $Response.Credentials.PrefCredential 30 | DomainFound = $Response.IfExistsResult -eq 0 31 | FederatedDomain = $null -ne $Response.Credentials.FederationRedirectUrl 32 | FederationRedirectUrl = $Response.Credentials.FederationRedirectUrl 33 | DesktopSsoEnabled = $Response.EstsProperties.DesktopSsoEnabled 34 | UserTenantBranding = $Response.EstsProperties.UserTenantBranding 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /OSINT/Get-ExODomains.ps1: -------------------------------------------------------------------------------- 1 | # Similar to: 2 | # https://github.com/Mike-Crowley/Public-Scripts/blob/main/Get-AlternateMailboxes.ps1 3 | # "Get-TenantDomains" in this script: https://github.com/Gerenios/AADInternals/blob/ad071b736e2eb0f5f2b35df2920bb515b8c29a8c/AccessToken_utils.ps1 4 | # Reported to Microsoft in 26Jul2018 who replied to say this is not a security issue, but a feature :) 5 | 6 | function Get-ExODomains { 7 | param ( 8 | [parameter(Mandatory = $true)][string] 9 | $Domain 10 | ) 11 | # https://learn.microsoft.com/en-us/exchange/client-developer/web-service-reference/getfederationinformation-operation-soap 12 | $body = @" 13 | 19 | 20 | http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetFederationInformation 21 | https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc 22 | 23 | 24 | 25 | 26 | $Domain 27 | 28 | 29 | 30 | 31 | "@ 32 | $headers = @{ 33 | "SOAPAction" = '"http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetFederationInformation"' 34 | } 35 | $response = Invoke-RestMethod -Method Post -uri "https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc" -Body $body -Headers $headers -UserAgent "AutodiscoverClient" -ContentType "text/xml; charset=utf-8" 36 | $response.Envelope.body.GetFederationInformationResponseMessage.response.Domains.Domain | Sort-Object 37 | } 38 | 39 | 40 | Get-ExODomains -Domain example.com -------------------------------------------------------------------------------- /OSINT/Request-AdfsCerts.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | 3 | .SYNOPSIS 4 | This tool displays the signing and encrypting certificates published in ADFS' federation metadata as well as the HTTPS ("SSL") certificate used in the connection itself. 5 | 6 | This tool does not authenticate to the server or investigate each ADFS farm node directly. For this, use the ADFS Cert Diag tool 7 | 8 | Version: Feb 9 2024 9 | 10 | .DESCRIPTION 11 | This tool displays the signing and encrypting certificates published in ADFS' federation metadata as well as the HTTPS ("SSL") certificate used in the connection itself. 12 | 13 | Sample Output with -Display $true (default): 14 | 15 | SSL (HTTPS) Certificate: 16 | 17 | SSL_Subject: CN=ADFS.CONTOSO, O=CONTOSO CORP, OID.1.3.6.1.4.1.311.60.2.1.3=US 18 | SSL_NotAfter: 1/14/2024 6:59:59 PM 19 | SSL_Thumbprint: 21321F3C2E225480F112A7BC2B3347B58B439842 20 | SSL_Issuer: CN=CONTOSO CORP 21 | SSL_DaysToExpiry: 25 22 | 23 | Encryption Certificate: 24 | 25 | Encryption_Subject: CN=ADFS Encryption - adfs.contoso.com 26 | Encryption_NotAfter: 7/7/2023 7:05:31 PM 27 | Encryption_Thumbprint: 0507D8E023B8715FE3F5F4A6421F47A36C6DD3AD 28 | Encryption_Issuer: CN=ADFS Encryption - adfs.contoso.com 29 | Encryption_DaysToExpiry: 129 30 | 31 | Token Signing Certificate: 32 | 33 | FirstSigning_Subject: CN=ADFS Signing - adfs.contoso.com 34 | FirstSigning_NotAfter: 7/7/2023 7:05:32 PM 35 | FirstSigning_Thumbprint: 0507D8E023B8715FE3F5F4A6421F47A36C6DD3AD 36 | FirstSigning_Issuer: CN=ADFS Signing - adfs.contoso.com 37 | FirstSigning_DaysToExpiry: 129 38 | 39 | Second Token Signing Certificate: 40 | 41 | !! No Second Token Signing Certificate Found !! 42 | 43 | Sample Output with -Display $false (for use with loops, pipeline, etc): 44 | 45 | SSL_Subject : CN=ADFS.CONTOSO, O=CONTOSO CORP, OID.1.3.6.1.4.1.311.60.2.1.3=US 46 | SSL_NotAfter : 11/14/2023 6:59:59 PM 47 | SSL_Thumbprint : 21321F3C2E225480F112A7BC2B3347B58B439842 48 | SSL_Issuer : CN=CONTOSO CORP 49 | SSL_DaysToExpiry : 256 50 | FirstSigning_Subject : CN=ADFS Signing - adfs.contoso.com 51 | FirstSigning_NotAfter : 7/5/2023 7:05:32 PM 52 | FirstSigning_Thumbprint : 0507D8E023B8715FE3F5F4A6421F47A36C6DD3AD 53 | FirstSigning_Issuer : CN=ADFS Signing - adfs.contoso.com 54 | FirstSigning_DaysToExpiry : 124 55 | SecondSigning_Subject : 56 | SecondSigning_NotAfter : 57 | SecondSigning_Thumbprint : 58 | SecondSigning_Issuer : 59 | SecondSigning_DaysToExpiry : -738581 60 | Encryption_Subject : CN=ADFS Encryption - adfs.contoso.com 61 | Encryption_NotAfter : 7/5/2023 7:05:31 PM 62 | Encryption_Thumbprint : 0507D8E023B8715FE3F5F4A6421F47A36C6DD3AD 63 | Encryption_Issuer : CN=ADFS Encryption - adfs.contoso.com 64 | Encryption_DaysToExpiry : 124 65 | 66 | NOTE 1: This does not currently support PowerShell v6 or v7 (PowerShell Core) 67 | 68 | NOTE 2: This tool by Microsoft may be handy as well: https://adfshelp.microsoft.com/MetadataExplorer/GetFederationMetadata 69 | 70 | Author: 71 | Mike Crowley 72 | http://<> 73 | 74 | .EXAMPLE 75 | Request-AdfsCerts -FarmFqdn adfs.contoso.com 76 | 77 | .EXAMPLE 78 | Request-AdfsCerts -FarmFqdn adfs.contoso.com -Display $false 79 | 80 | .LINK 81 | https://github.com/mike-crowley_blkln 82 | https://github.com/Mike-Crowley 83 | 84 | #> 85 | 86 | function Request-AdfsCerts { 87 | param ( 88 | [string]$FarmFqdn, 89 | [string]$Display = $true 90 | ) 91 | if (Test-NetConnection -ComputerName $FarmFqdn -Port 443 -InformationLevel Quiet -Verbose) { 92 | 93 | $url = https://$FarmFqdn/FederationMetadata/2007-06/FederationMetadata.xml 94 | $global:UnsupportedPowerShell = $false 95 | 96 | #ignore ssl warnings 97 | if ($PSVersionTable.PSEdition -eq "core") { $global:UnsupportedPowerShell = $true } 98 | else { [Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } } 99 | 100 | #Make HTTPS connection and get content 101 | $request = [Net.HttpWebRequest]::Create($url) 102 | $request.Host = $FarmFqdn 103 | $request.AllowAutoRedirect = $false 104 | #$request.Headers.Add("UserAgent", 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.22621; en-US) PowerShell/7.3.3') # optional 105 | $response = $request.GetResponse() 106 | 107 | $HttpsCertBytes = $request.ServicePoint.Certificate.GetRawCertData() 108 | $contentStream = $response.GetResponseStream() 109 | $reader = [IO.StreamReader]::new($contentStream) 110 | $content = $reader.ReadToEnd() 111 | $reader.Close() 112 | $contentStream.Close() 113 | $response.Close() 114 | 115 | #Extract HTTPS cert (ADFS Calls this the "SSL" cert) 116 | $CertInBase64 = [convert]::ToBase64String($HttpsCertBytes) 117 | $SSLCert_x509 = [Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($CertInBase64)) 118 | 119 | #Parse FederationMetadata for certs 120 | $KeyDescriptors = ([xml]$content).EntityDescriptor.SPSSODescriptor.KeyDescriptor 121 | 122 | $FirstSigningCert_base64 = ([array]($KeyDescriptors | Where-Object use -eq 'signing').KeyInfo)[0].X509Data.X509Certificate 123 | $FirstSigningCert_x509 = [Security.Cryptography.X509Certificates.X509Certificate2][System.Convert]::FromBase64String($FirstSigningCert_base64) 124 | 125 | $SecondSigningCert_base64 = ([array]($KeyDescriptors | Where-Object use -eq 'signing').KeyInfo)[1].X509Data.X509Certificate 126 | $SecondSigningCert_x509 = [Security.Cryptography.X509Certificates.X509Certificate2][System.Convert]::FromBase64String($SecondSigningCert_base64) 127 | 128 | $EncryptionCert_base64 = ($KeyDescriptors | Where-Object use -eq 'encryption').KeyInfo.X509Data.X509Certificate 129 | $EncryptionCert_x509 = [Security.Cryptography.X509Certificates.X509Certificate2][System.Convert]::FromBase64String($EncryptionCert_base64) 130 | 131 | $Now = Get-Date 132 | 133 | $CertReportObject = [pscustomobject]@{ 134 | SSL_Subject = $SSLCert_x509.Subject 135 | SSL_NotAfter = $SSLCert_x509.NotAfter 136 | SSL_Thumbprint = $SSLCert_x509.Thumbprint 137 | SSL_Issuer = $SSLCert_x509.Issuer 138 | SSL_DaysToExpiry = ($SSLCert_x509.NotAfter - $Now).Days 139 | 140 | FirstSigning_Subject = $FirstSigningCert_x509.Subject 141 | FirstSigning_NotAfter = $FirstSigningCert_x509.NotAfter 142 | FirstSigning_Thumbprint = $FirstSigningCert_x509.Thumbprint 143 | FirstSigning_Issuer = $FirstSigningCert_x509.Issuer 144 | FirstSigning_DaysToExpiry = ($FirstSigningCert_x509.NotAfter - $Now).Days 145 | 146 | SecondSigning_Subject = $SecondSigningCert_x509.Subject 147 | SecondSigning_NotAfter = $SecondSigningCert_x509.NotAfter 148 | SecondSigning_Thumbprint = $SecondSigningCert_x509.Thumbprint 149 | SecondSigning_Issuer = $SecondSigningCert_x509.Issuer 150 | SecondSigning_DaysToExpiry = ($SecondSigningCert_x509.NotAfter - $Now).Days 151 | 152 | Encryption_Subject = $EncryptionCert_x509.Subject 153 | Encryption_NotAfter = $EncryptionCert_x509.NotAfter 154 | Encryption_Thumbprint = $EncryptionCert_x509.Thumbprint 155 | Encryption_Issuer = $EncryptionCert_x509.Issuer 156 | Encryption_DaysToExpiry = ($EncryptionCert_x509.NotAfter - $Now).Days 157 | } 158 | 159 | if ($Display -eq $true) { 160 | 161 | Clear-Host 162 | 163 | if ($UnsupportedPowerShell -eq $true) { Write-Host "Functionality is limited with invalid HTTPS certificates in this version of PowerShell. `nhttps://github.com/PowerShell/PowerShell/issues/17340" -ForegroundColor Red } 164 | 165 | Write-Host " `nSSL (HTTPS) Certificate:`n" -ForegroundColor Green 166 | Write-Host " SSL_Subject: " $CertReportObject.SSL_Subject 167 | Write-Host " SSL_NotAfter: " $CertReportObject.SSL_NotAfter 168 | Write-Host " SSL_Thumbprint: " $CertReportObject.SSL_Thumbprint 169 | Write-Host " SSL_Issuer: " $CertReportObject.SSL_Issuer 170 | Write-Host " SSL_DaysToExpiry: " -NoNewline 171 | Write-Host $CertReportObject.SSL_DaysToExpiry -ForegroundColor Cyan 172 | 173 | Write-Host " `nEncryption Certificate:`n" -ForegroundColor DarkMagenta 174 | Write-Host " EncryptionSigning_Subject: " $CertReportObject.Encryption_Subject 175 | Write-Host " EncryptionSigning_NotAfter: " $CertReportObject.Encryption_NotAfter 176 | Write-Host " EncryptionSigning_Thumbprint: " $CertReportObject.Encryption_Thumbprint 177 | Write-Host " EncryptionSigning_Issuer: " $CertReportObject.Encryption_Issuer 178 | Write-Host " EncryptionSigning_DaysToExpiry: " -NoNewline 179 | Write-Host $CertReportObject.Encryption_DaysToExpiry -ForegroundColor Cyan 180 | 181 | if ($null -eq $CertReportObject.SecondSigning_Subject) { 182 | Write-Host " `nToken Signing Certificate:`n" -ForegroundColor Yellow 183 | } 184 | else { 185 | Write-Host " `nFirst Token Signing Certificate:`n" -ForegroundColor Yellow 186 | } 187 | Write-Host " FirstSigning_Subject: " $CertReportObject.FirstSigning_Subject 188 | Write-Host " FirstSigning_NotAfter: " $CertReportObject.FirstSigning_NotAfter 189 | Write-Host " FirstSigning_Thumbprint: " $CertReportObject.FirstSigning_Thumbprint 190 | Write-Host " FirstSigning_Issuer: " $CertReportObject.FirstSigning_Issuer 191 | Write-Host " FirstSigning_DaysToExpiry: " -NoNewline 192 | Write-Host $CertReportObject.FirstSigning_DaysToExpiry -ForegroundColor Cyan 193 | 194 | Write-Host "`nSecond Token Signing Certificate:`n" -ForegroundColor DarkYellow 195 | 196 | if ($null -ne $CertReportObject.SecondSigning_Subject) { 197 | Write-Host " SecondSigning_Subject: " $CertReportObject.SecondSigning_Subject 198 | Write-Host " SecondSigning_NotAfter: " $CertReportObject.SecondSigning_NotAfter 199 | Write-Host " SecondSigning_Thumbprint: " $CertReportObject.SecondSigning_Thumbprint 200 | Write-Host " SecondSigning_Issuer: " $CertReportObject.SecondSigning_Issuer 201 | Write-Host " SecondSigning_DaysToExpiry: " -NoNewline 202 | Write-Host $CertReportObject.SecondSigning_DaysToExpiry -ForegroundColor Cyan 203 | Write-Host "`n NOTE: A federation metadata document published by ADFS can have multiple signing keys." -ForegroundColor Gray 204 | Write-Host " When a federation metadata document includes more than one certificate, a service that is validating the tokens should support all certificates in the document." -ForegroundColor Gray 205 | Write-Host " The 'First' certificate in the metadata may not be the 'Primary' certificate in the ADFS configuration" 206 | Write-Host " https://learn.microsoft.com/en-us/entra/identity-platform/federation-metadata#token-signing-certificates" 207 | } 208 | else { Write-Host " !! No Second Token Signing Certificate Found !!`n" } 209 | 210 | Write-Host "`n" 211 | } 212 | else { 213 | return $CertReportObject 214 | } 215 | } 216 | else { Write-Warning "Cannot connect to: $FarmFqdn" } 217 | } 218 | 219 | # Example 220 | Request-AdfsCerts -FarmFqdn testsso.contoso -Display $true -------------------------------------------------------------------------------- /RDPConnectionParser.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | 3 | .SYNOPSIS 4 | This script reads the event log "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" from 5 | multiple servers and outputs the human-readable results to a CSV. This data is not filterable in the native 6 | Windows Event Viewer. 7 | 8 | Version: November 9, 2016 9 | 10 | 11 | .DESCRIPTION 12 | This script reads the event log "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" from 13 | multiple servers and outputs the human-readable results to a CSV. This data is not filterable in the native 14 | Windows Event Viewer. 15 | 16 | NOTE: Despite this log's name, it includes both RDP logins as well as regular console logins too. 17 | 18 | Author: 19 | Mike Crowley 20 | https://BaselineTechnologies.com 21 | 22 | .EXAMPLE 23 | � 24 | .\RDPConnectionParser.ps1 -ServersToQuery Server1, Server2 -StartTime "November 1" 25 | 26 | .LINK 27 | https://MikeCrowley.us/tag/powershell 28 | 29 | #> 30 | 31 | Param( 32 | [array]$ServersToQuery = (hostname), 33 | [datetime]$StartTime = "January 1, 1970" 34 | ) 35 | 36 | foreach ($Server in $ServersToQuery) { 37 | 38 | $LogFilter = @{ 39 | LogName = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational' 40 | ID = 21, 23, 24, 25 41 | StartTime = $StartTime 42 | } 43 | 44 | $AllEntries = Get-WinEvent -FilterHashtable $LogFilter -ComputerName $Server 45 | 46 | $AllEntries | Foreach { 47 | $entry = [xml]$_.ToXml() 48 | [array]$Output += New-Object PSObject -Property @{ 49 | TimeCreated = $_.TimeCreated 50 | User = $entry.Event.UserData.EventXML.User 51 | IPAddress = $entry.Event.UserData.EventXML.Address 52 | EventID = $entry.Event.System.EventID 53 | ServerName = $Server 54 | } 55 | } 56 | 57 | } 58 | 59 | $FilteredOutput += $Output | Select TimeCreated, User, ServerName, IPAddress, @{Name='Action';Expression={ 60 | if ($_.EventID -eq '21'){"logon"} 61 | if ($_.EventID -eq '22'){"Shell start"} 62 | if ($_.EventID -eq '23'){"logoff"} 63 | if ($_.EventID -eq '24'){"disconnected"} 64 | if ($_.EventID -eq '25'){"reconnection"} 65 | } 66 | } 67 | 68 | $Date = (Get-Date -Format s) -replace ":", "." 69 | $FilePath = "$env:USERPROFILE\Desktop\$Date`_RDP_Report.csv" 70 | $FilteredOutput | Sort TimeCreated | Export-Csv $FilePath -NoTypeInformation -Encoding utf8 71 | 72 | Write-host "Writing File: $FilePath" -ForegroundColor Cyan 73 | Write-host "Done!" -ForegroundColor Cyan 74 | 75 | 76 | #End 77 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Author: Mike Crowley 2 | 3 |

4 | 5 | Mike's Blog 7 | 8 | 9 | Baseline Technologies 11 | 12 | 13 | Microsoft MVP 15 | 16 | 17 | Public PGP Key 19 | 20 | 21 | linkedin.com/in/MikeCrowley 23 | 24 |

25 | 26 |

27 |
28 | 29 | Buy Me A Coffee 31 | 32 |

33 | 34 | # Public-Scripts Repository 35 | 36 |

37 | GitHub License 38 | GitHub top language 39 | GitHub commit activity 40 | GitHub code size in bytes 41 |

42 | 43 | Microsoft [retired the TechNet Gallery](https://learn.microsoft.com/en-us/teamblog/technet-gallery-retirement), so I've re-uploaded a few scripts that were formally posted here: https://social.msdn.microsoft.com/Profile/mike%20crowley 44 | 45 | ## Miscellaneous 46 | 47 | + [Get-AlternateMailboxes.ps1](./Get-AlternateMailboxes.ps1) 48 | 49 | + Query Exchange Online AutoDiscover to enumerate mailbox delegates with modern auth. 50 | 51 | + [Get-AlternateMailboxes_BasicAuth.ps1](./Get-AlternateMailboxes_BasicAuth.ps1) 52 | 53 | + Query Exchange Online AutoDiscover to enumerate mailbox delegates. The old basic auth version. 54 | 55 | + [Graph_SignInActivity_Report.ps1](./Graph_SignInActivity_Report.ps1) 56 | 57 | + Report on user SignInActivity and license detail via Invoke-RestMethod from Microsoft Graph. 58 | 59 | + [LowerCaseUPNs.ps1](./LowerCaseUPNs.ps1) 60 | 61 | + Change Exchange user's email addresses to lowercase. 62 | 63 | + [MailUser-MgUser-Activity-Report.ps1](./MailUser-MgUser-Activity-Report.ps1) 64 | 65 | + Get Export login information for mail users via Microsoft Graph. 66 | 67 | + [MgUserMail.ps1](./MgUserMail.ps1) 68 | 69 | + Send email via Microsoft Graph. 70 | 71 | + [RDPConnectionParser.ps1](./RDPConnectionParser.ps1) 72 | 73 | + Extract interactive (local and remote desktop) login information and save to CSV. 74 | 75 | + [RecipientReportv5.ps1](./RecipientReportv5.ps1) 76 | 77 | + Dump all recipients and their email addresses (proxy addresses) to CSV. 78 | 79 | + [Restore-FromRecycleBin.ps1](./Restore-FromRecycleBin.ps1) 80 | 81 | + Restore files from SPO in bulk. 82 | 83 | + [Find-DriveItemDuplicates.ps1](./Find-DriveItemDuplicates.ps1) 84 | 85 | + A utility to find duplicate files on OneDrive for Business or SharePoint Online. 86 | 87 | + [Compare-ObjectsInVSCode.ps1](./Compare-ObjectsInVSCode.ps1) 88 | 89 | + Compare two PowerShell Objects in Visual Studio Code. 90 | 91 | ## OSINT 92 | 93 | + [Get-EntraCredentialType.ps1](./OSINT/Get-EntraCredentialType.ps1) 94 | 95 | + Query Entra for the CredentialType of a user. 96 | 97 | + [Get-EntraCredentialInfo.ps1](./OSINT/Get-EntraCredentialInfo.ps1) 98 | 99 | + Query Entra for the CredentialType and openid-configuration of a user for a combined output. 100 | 101 | + [Request-AdfsCerts.ps1](./OSINT/Request-AdfsCerts.ps1) 102 | 103 | + Remotley query ADFS to see information about the certificates it is using. 104 | 105 | + [Get-AutoDetect.ps1](./OSINT/AutoDetect-AutoDiscover-v2) 106 | 107 | + Query AutoDiscover v2 / and the AutoDetect service (two files). 108 | 109 | + [Get-ExODomains.ps1](./OSINT/Get-ExODomains.ps1) 110 | 111 | + Query the domains in a tenant from the Exchange AutoDiscover service. 112 | 113 | # Gists 114 | 115 |

116 | GitHub License 117 | GitHub top language 118 |

119 | 120 | There are also a few things over here: https://gist.github.com/Mike-Crowley 121 | 122 | + [Get-ADSiteByIp.ps1](https://gist.github.com/Mike-Crowley/3ad9472a2ab365c723f2272da197eabf) 123 | 124 | + Enter an IP address and this will lookup the AD site to which it belongs. 125 | 126 | + [Test-AdPassword.ps1](https://gist.github.com/Mike-Crowley/0cfaf1a8733b530e8f00acb59dec771f) 127 | 128 | + Determine if an AD user's password is valid. 129 | 130 | + [Get-Superscript.ps1](https://gist.github.com/Mike-Crowley/b2a63bfe6bd533452bca3125037594a1) 131 | 132 | + Replace a given letter with the superscript letter. 133 | 134 | + [Get-ShodanIpLookup](https://gist.github.com/Mike-Crowley/ff3c432ad921799b736b45dff828acca) 135 | 136 | + Query the Shodan database for an IP address with or without an API key 137 | 138 | + [Get-WordscapesResults.ps1](https://gist.github.com/Mike-Crowley/09a03b770ab94af01147d4c7f9a10460) 139 | 140 | + Generate words for the wordscapes game so I can answer faster than my mom. 141 | 142 | + [Verify-SmbSigning.ps1](https://gist.github.com/Mike-Crowley/4aa9d0913ef0518e79034e5cdc56daf4) 143 | 144 | + Makes an SMB connection to a remote server, captures the traffic with Wireshark (tshark), and then parses the capture to report on the use of SMB signing. 145 | 146 | # 147 | 148 | Be sure to read the comments in the scripts themselves for more detail! 149 | 150 | Visit https://mikecrowley.us/tag/powershell for additional functions and scripts. 151 | -------------------------------------------------------------------------------- /RecipientReportv5.ps1: -------------------------------------------------------------------------------- 1 | <# 2 | Features: 3 | 1) This script Creates a TXT and CSV file with the following information: 4 | a) TXT file: Recipient Address Statistics 5 | b) CSV file: Output of everyone's SMTP proxy addresses. 6 | 7 | Instructions: 8 | 1) Run this from "regular" PowerShell. Exchange Management Shell may cause problems, especially in Exchange 2010, due to PSv2. 9 | 2) Usage: RecipientReportv5.ps1 server5.domain.local 10 | 11 | Requirements: 12 | 1) Exchange 2010 or 2013 13 | 2) PowerShell 4.0 14 | 15 | 16 | April 4 2015 17 | Mike Crowley 18 | 19 | https://BaselineTechnologies.com 20 | #> 21 | 22 | param( 23 | [parameter( 24 | Position = 0, 25 | Mandatory = $true, 26 | ValueFromPipeline = $false, 27 | HelpMessage = 'Type the name of a Client Access Server' 28 | )] 29 | [string]$ExchangeFQDN 30 | ) 31 | 32 | if ($host.version.major -lt 3) { 33 | Write-Host "" 34 | Write-Host "This script requires PowerShell 3.0 or later." -ForegroundColor Red 35 | Write-Host "Note: Exchange 2010's EMC always runs as version 2. Perhaps try launching PowerShell normally." -ForegroundColor Red 36 | Write-Host "" 37 | Write-Host "Exiting..." -ForegroundColor Red 38 | Start-Sleep 3 39 | Exit 40 | } 41 | 42 | if ((Test-Connection $ExchangeFQDN -Count 1 -Quiet) -ne $true) { 43 | Write-Host "" 44 | Write-Host ("Cannot connect to: " + $ExchangeFQDN) -ForegroundColor Red 45 | Write-Host "" 46 | Write-Host "Exiting..." -ForegroundColor Red 47 | Start-Sleep 3 48 | Exit 49 | } 50 | 51 | Clear-Host 52 | 53 | # Misc variables 54 | $ReportTimeStamp = (Get-Date -Format s) -replace ":", "." 55 | $TxtFile = "$env:USERPROFILE\Desktop\" + $ReportTimeStamp + "_RecipientAddressReport_Part_1of2.txt" 56 | $CsvFile = "$env:USERPROFILE\Desktop\" + $ReportTimeStamp + "_RecipientAddressReport_Part_2of2.csv" 57 | 58 | # Connect to Exchange 59 | Write-Host ("Connecting to " + $ExchangeFQDN + "...") -ForegroundColor Cyan 60 | Get-PSSession | Where-Object { $_.ConfigurationName -eq 'Microsoft.Exchange' } | Remove-PSSession 61 | $Session = @{ 62 | ConfigurationName = 'Microsoft.Exchange' 63 | ConnectionUri = 'http://' + $ExchangeFQDN + '/PowerShell/?SerializationLevel=Full' 64 | Authentication = 'Kerberos' 65 | } 66 | Import-PSSession (New-PSSession @Session) 67 | 68 | # Get Data 69 | Write-Host "Getting data from Exchange..." -ForegroundColor Cyan 70 | $AcceptedDomains = Get-AcceptedDomain 71 | $InScopeRecipients = @( 72 | 'DynamicDistributionGroup' 73 | 'UserMailbox' 74 | 'MailUniversalDistributionGroup' 75 | 'MailUniversalSecurityGroup' 76 | 'MailNonUniversalGroup' 77 | 'PublicFolder' 78 | ) 79 | $AllRecipients = Get-Recipient -recipienttype $InScopeRecipients -ResultSize unlimited | Select-Object name, emailaddresses, RecipientType 80 | $UniqueRecipientDomains = ($AllRecipients.emailaddresses | Where-Object { $_ -like 'smtp*' }) -split '@' | Where-Object { $_ -NotLike 'smtp:*' } | Select-Object -Unique 81 | 82 | Write-Host "Preparing Output 1 of 2..." -ForegroundColor Cyan 83 | # Output address stats 84 | $TextBlock = @( 85 | "Total Number of Recipients: " + $AllRecipients.Count 86 | "Number of Dynamic Distribution Groups: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'DynamicDistributionGroup' }).Count 87 | "Number of User Mailboxes: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'UserMailbox' }).Count 88 | "Number of Mail-Universal Distribution Groups: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'MailUniversalDistributionGroup' }).Count 89 | "Number of Mail-UniversalSecurity Groups: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'MailUniversalSecurityGroup' }).Count 90 | "Number of Mail-NonUniversal Groups: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'MailNonUniversalGroup' }).Count 91 | "Number of Public Folders: " + ($AllRecipients | Where-Object { $_.RecipientType -eq 'PublicFolder' }).Count 92 | "" 93 | "Number of Accepted Domains: " + $AcceptedDomains.count 94 | "" 95 | "Number of domains found on recipients: " + $UniqueRecipientDomains.count 96 | "" 97 | $DomainComparrison = Compare-Object $AcceptedDomains.DomainName $UniqueRecipientDomains 98 | "These domains have been assigned to recipients, but are not Accepted Domains in the Exchange Organization:" 99 | ($DomainComparrison | Where-Object { $_.SideIndicator -eq '=>' }).InputObject 100 | "" 101 | "These Accepted Domains are not assigned to any recipients:" 102 | ($DomainComparrison | Where-Object { $_.SideIndicator -eq '<=' }).InputObject 103 | "" 104 | "See this CSV for a complete listing of all addresses: " + $CsvFile 105 | ) 106 | 107 | Write-Host "Preparing Output 2 of 2..." -ForegroundColor Cyan 108 | 109 | $RecipientsAndSMTPProxies = @() 110 | $CounterWatermark = 1 111 | 112 | $AllRecipients | ForEach-Object { 113 | 114 | # Create a new placeholder object 115 | $RecipientOutputObject = New-Object PSObject -Property @{ 116 | Name = $_.Name 117 | RecipientType = $_.RecipientType 118 | SMTPAddress0 = ($_.emailaddresses | Where-Object { $_ -clike 'SMTP:*' } ) -replace "SMTP:" 119 | } 120 | 121 | # If applicable, get a list of other addresses for the recipient 122 | if (($_.emailaddresses).count -gt '1') { 123 | $OtherAddresses = @() 124 | $OtherAddresses = ($_.emailaddresses | Where-Object { $_ -clike 'smtp:*' } ) -replace "smtp:" 125 | 126 | $Counter = $OtherAddresses.count 127 | if ($Counter -gt $CounterWatermark) { $CounterWatermark = $Counter } 128 | $OtherAddresses | ForEach-Object { 129 | $RecipientOutputObject | Add-Member -MemberType NoteProperty -Name (“SmtpAddress” + $Counter) -Value ($_ -replace "smtp:") 130 | $Counter-- 131 | } 132 | } 133 | $RecipientsAndSMTPProxies += $RecipientOutputObject 134 | } 135 | 136 | $AttributeList = @( 137 | 'Name' 138 | 'RecipientType' 139 | ) 140 | $AttributeList += 0..$CounterWatermark | ForEach-Object { "SMTPAddress" + $_ } 141 | 142 | 143 | Write-Host "Saving report files to your desktop:" -ForegroundColor Green 144 | Write-Host "" 145 | Write-Host $TxtFile -ForegroundColor Green 146 | Write-Host $CsvFile -ForegroundColor Green 147 | 148 | $TextBlock | Out-File $TxtFile 149 | $RecipientsAndSMTPProxies | Select-Object $AttributeList | Sort-Object RecipientType, Name | Export-CSV $CsvFile -NoTypeInformation 150 | 151 | Write-Host "" 152 | Write-Host "" 153 | Write-Host "Report Complete!" -ForegroundColor Green -------------------------------------------------------------------------------- /Restore-FromRecycleBin.ps1: -------------------------------------------------------------------------------- 1 | #Requires -Modules PnP.PowerShell, ImportExcel 2 | 3 | #DRAFT VERSION!! 4 | 5 | <# 6 | .SYNOPSIS 7 | 8 | Restore-FromRecycleBin enumerates the contents of a SPO site's recycle bin and restores items after a given date, logging the results. 9 | This script was designed to handle a large number of items and aims to be more reliable than the native browser-based restore functionality. 10 | 11 | .DESCRIPTION 12 | 13 | Restore-FromRecycleBin enumerates the contents of a SPO site's recycle bin and restores items after a given date, logging the results. 14 | This script was designed to handle a large number of items and aims to be more reliable than the native browser-based restore functionality. 15 | 16 | Features: 17 | 18 | - Before it starts, the script writes a file to disk containing all of the files it is about to restore. 19 | - During the run, there is a counter and other output describing the progress. 20 | - When complete, a log file is written, which contains every file attempted and a true/false for its success. 21 | 22 | The most common failure we've seen is due to the fact a file already exists, which can be confirmed with use of the log file. 23 | 24 | Requirements: 25 | 1) SharePoint Online. This was not written for use with SharePoint Server. 26 | 2) PnP.PowerShell and ImportExcel modules 27 | 3) PowerShell 5.0+ 28 | 4) Permission to restore items from the site 29 | 5) Interactive session. This is written to require an administrator to be present and enter the credentials interactivly. 30 | 31 | 32 | March 22 2021 33 | -Mike Crowley 34 | -Jhon Ramirez 35 | 36 | .EXAMPLE 37 | 38 | Restore-FromRecycleBin -SiteUrl https://MySpoSite.sharepoint.com/sites/Site123 -RestoreDate 3/23/2021 -LogDirectory C:\Logs 39 | 40 | .LINK 41 | 42 | https://BaselineTechnologies.com 43 | 44 | #> 45 | 46 | 47 | function Restore-FromRecycleBin 48 | { 49 | [cmdletbinding()] 50 | Param 51 | ( 52 | [Parameter(Mandatory=$true)] [string] $SiteUrl, 53 | [Parameter(Mandatory=$true)] [datetime] $RestoreDate, 54 | [Parameter(Mandatory=$true)] [string] $LogDirectory 55 | ) 56 | 57 | $VerbosePreference = 'Continue' 58 | $ScriptDate = Get-Date -format ddMMMyyyy_HHmm.s 59 | $ExportParams = 60 | @{ 61 | AutoSize = $true 62 | AutoFilter = $true 63 | BoldTopRow = $true 64 | FreezeTopRow = $true 65 | } 66 | 67 | $SpoConnection = Connect-PnPOnline -Url $SiteUrl -Interactive -ReturnConnection 68 | 69 | mkdir $LogDirectory -Force 70 | 71 | 72 | $RecycleBinFiles = Get-PnPRecycleBinItem -Connection $SpoConnection -FirstStage | Where-Object {[datetime]$_.DeletedDateLocalFormatted -gt $RestoreDate} | Where-Object {$_.ItemType -eq "File"} 73 | Write-Verbose ("Found " + ($RecycleBinFiles.count) + " files.") 74 | $RecycleBinFiles | Export-Excel @ExportParams -Path ("$LogDirectory\RecycleBinFiles\" + "RecycleBinFiles--" + $ScriptDate + ".xlsx") 75 | 76 | $LogFile = @() 77 | $LoopCounter = 1 78 | 79 | foreach ($File in $RecycleBinFiles) 80 | { 81 | Write-Verbose ("Attempting to Restore: " + $File.Title + " to: " + $File.DirName + "`n") 82 | Write-Verbose ("$LoopCounter" + " of " + $RecycleBinFiles.Count + "`n") 83 | $LoopCounter ++ 84 | 85 | $RestoreSucceeded = $true 86 | try {Restore-PnpRecycleBinItem -Force -Identity $File.Id.Guid -ErrorAction Stop} 87 | catch {$RestoreSucceeded = $false } 88 | 89 | $LogFile += '' | Select-Object @( 90 | @{N="RestoreAttempt"; e={Get-Date -UFormat "%D %r"}} 91 | @{N="RestoreSucceeded"; e={$RestoreSucceeded}} 92 | @{N="FileName"; e={$File.Title}} 93 | @{N="DirName"; e={$File.DirName}} 94 | @{N="OriginalDeletionTime"; e={$File.DeletedDateLocalFormatted}} 95 | @{N="Id"; e={$File.Id}} 96 | ) 97 | switch ($RestoreSucceeded) 98 | { 99 | $true {Write-Verbose ("Restored: " + ($File.Title))} 100 | $false {Write-Verbose ("ERROR: " + $Error[0].ErrorDetails)} 101 | } 102 | } 103 | 104 | $LogFile | Export-Excel @ExportParams -Path ("$LogDirectory\RecycleBinFiles\" + "RestoreLog--" + $ScriptDate + ".xlsx") 105 | } 106 | 107 | 108 | 109 | 110 | # 111 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Reporting Security Vulnerabilities 4 | 5 | Thank you for your interest in helping keep this repository and its users secure. I take security concerns seriously and appreciate responsible disclosure of potential vulnerabilities. 6 | 7 | ### How to Report a Vulnerability 8 | 9 | If you discover a security vulnerability within any of the scripts in this repository, please send a detailed report to: 10 | 11 | Mike [at] MikeCrowley [dot] us 12 | 13 | Please provide: 14 | 1. A clear description of the vulnerability 15 | 2. Steps to reproduce the issue 16 | 3. Potential impact of the vulnerability 17 | 4. Any suggested fixes or mitigations (if applicable) 18 | 19 | ### What to Expect 20 | 21 | After receiving your report, I will: 22 | - Acknowledge receipt of your vulnerability report within 72 hours 23 | - Provide an initial assessment of the report and expected time for resolution 24 | - Keep you informed about the progress of addressing the vulnerability 25 | - Credit you in the repo (unless you prefer to remain anonymous) 26 | 27 | ### Scope 28 | 29 | This security policy applies to all scripts and code contained within this repository. For vulnerabilities in third-party dependencies, please report them directly to the respective project maintainers. 30 | 31 | ### Responsible Disclosure 32 | 33 | I kindly request that you: 34 | - Allow reasonable time for me to address the vulnerability before public disclosure 35 | - Avoid accessing or modifying other users' data while investigating potential vulnerabilities 36 | - Not perform actions that could impact the availability of the repository or its resources 37 | 38 | ## Best Practices for Users 39 | 40 | When using scripts from this repository: 41 | - Always review the code before executing it in your environment 42 | - Keep all dependencies updated to their latest secure versions 43 | - Use the latest released version of scripts when possible 44 | - Report any suspicious behavior or potential security issues promptly 45 | 46 | 47 | Thank you for helping maintain the security of this project. 48 | -------------------------------------------------------------------------------- /SupportingFiles/Graph_SignInActivity_Report_AAD_SKUs.csv: -------------------------------------------------------------------------------- 1 | "SkuPartNumber","SkuId" 2 | "2b9c8e7c-319c-43a2-a2a0-48c5c6161de7","AAD_BASIC" 3 | "078d2b04-f1bd-4111-bbd4-b4b1b354cef4","AAD_PREMIUM" 4 | "30fc3c36-5a95-4956-ba57-c09c2a600bb9","AAD_PREMIUM_FACULTY" 5 | "84a661c4-e949-4bd2-a560-ed7766fcaf2b","AAD_PREMIUM_P2" 6 | "84d5f90f-cd0d-4864-b90b-1c7ba63b4808","ADALLOM_O365" 7 | "df845ce7-05f9-4894-b5f2-11bbfbcfd2b6","ADALLOM_STANDALONE" 8 | "e4654015-5daf-4a48-9b37-4f309dddd88b","ADV_COMMS" 9 | "98defdf7-f6c1-44f5-a1f6-943b6764e7a5","ATA" 10 | "4ef96642-f096-40de-a3e9-d83fb2f90211","ATP_ENTERPRISE" 11 | "26ad4b5c-b686-462e-84b9-d7c22b46837f","ATP_ENTERPRISE_FACULTY" 12 | "d0d1ca43-b81a-4f51-81e5-a5b1ad7bb005","ATP_ENTERPRISE_GOV" 13 | "fcecd1f9-a91e-488d-a918-a96cdb6ce2b0","AX7_USER_TRIAL" 14 | "d52db95a-5ecb-46b6-beb0-190ab5cda4a8","BUSINESS_VOICE_DIRECTROUTING" 15 | "8330dae3-d349-44f7-9cad-1b23c64baabe","BUSINESS_VOICE_DIRECTROUTING_MED" 16 | "a6051f20-9cbc-47d2-930d-419183bf6cf1","BUSINESS_VOICE_MED2" 17 | "08d7bce8-6e16-490e-89db-1d508e5e9609","BUSINESS_VOICE_MED2_TELCO" 18 | "606b54a9-78d8-4298-ad8b-df6ef4481c80","CCIBOTS_PRIVPREV_VIRAL" 19 | "e612d426-6bc3-4181-9658-91aa906b0ac0","CDS_DB_CAPACITY" 20 | "eddf428b-da0e-4115-accf-b29eb0b83965","CDS_DB_CAPACITY_GOV" 21 | "631d5fb1-a668-4c2a-9427-8830665a742e","CDS_FILE_CAPACITY" 22 | "448b063f-9cc6-42fc-a0e6-40e08724a395","CDS_LOG_CAPACITY" 23 | "d2dea78b-507c-4e56-b400-39447f4738f8","CDSAICAPACITY" 24 | "8a5fbbed-8b8c-41e5-907e-c50c471340fd","CMPA_addon" 25 | "a9d7ef53-9bea-4a2a-9650-fa7df58fe094","CMPA_addon_GCC" 26 | "816eacd3-e1e3-46b3-83c8-1ffd37e053d9","CPC_B_1C_2RAM_64GB" 27 | "135bee78-485b-4181-ad6e-40286e311850","CPC_B_2C_4RAM_128GB" 28 | "805d57c3-a97d-4c12-a1d0-858ffe5015d0","CPC_B_2C_4RAM_256GB" 29 | "42e6818f-8966-444b-b7ac-0027c83fa8b5","CPC_B_2C_4RAM_64GB" 30 | "71f21848-f89b-4aaa-a2dc-780c8e8aac5b","CPC_B_2C_8RAM_128GB" 31 | "750d9542-a2f8-41c7-8c81-311352173432","CPC_B_2C_8RAM_256GB" 32 | "ad83ac17-4a5a-4ebb-adb2-079fb277e8b9","CPC_B_4C_16RAM_128GB" 33 | "439ac253-bfbc-49c7-acc0-6b951407b5ef","CPC_B_4C_16RAM_128GB_WHB" 34 | "b3891a9f-c7d9-463c-a2ec-0b2321bda6f9","CPC_B_4C_16RAM_256GB" 35 | "1b3043ad-dfc6-427e-a2c0-5ca7a6c94a2b","CPC_B_4C_16RAM_512GB" 36 | "3cb45fab-ae53-4ff6-af40-24c1915ca07b","CPC_B_8C_32RAM_128GB" 37 | "fbc79df2-da01-4c17-8d88-17f8c9493d8f","CPC_B_8C_32RAM_256GB" 38 | "8ee402cd-e6a8-4b67-a411-54d1f37a2049","CPC_B_8C_32RAM_512GB" 39 | "0c278af4-c9c1-45de-9f4b-cd929e747a2c","CPC_E_1C_2GB_64GB" 40 | "226ca751-f0a4-4232-9be5-73c02a92555e","CPC_E_2C_4GB_128GB" 41 | "5265a84e-8def-4fa2-ab4b-5dc278df5025","CPC_E_2C_4GB_256GB" 42 | "7bb14422-3b90-4389-a7be-f1b745fc037f","CPC_E_2C_4GB_64GB" 43 | "e2aebe6c-897d-480f-9d62-fff1381581f7","CPC_E_2C_8GB_128GB" 44 | "1c79494f-e170-431f-a409-428f6053fa35","CPC_E_2C_8GB_256GB" 45 | "d201f153-d3b2-4057-be2f-fe25c8983e6f","CPC_E_4C_16GB_128GB" 46 | "96d2951e-cb42-4481-9d6d-cad3baac177e","CPC_E_4C_16GB_256GB" 47 | "0da63026-e422-4390-89e8-b14520d7e699","CPC_E_4C_16GB_512GB" 48 | "c97d00e4-0c4c-4ec2-a016-9448c65de986","CPC_E_8C_32GB_128GB" 49 | "7818ca3e-73c8-4e49-bc34-1276a2d27918","CPC_E_8C_32GB_256GB" 50 | "9fb0ba5f-4825-4e84-b239-5167a3a5d4dc","CPC_E_8C_32GB_512GB" 51 | "bce09f38-1800-4a51-8d50-5486380ba84a","CPC_LVL_1" 52 | "461cb62c-6db7-41aa-bf3c-ce78236cdb9e","CPC_LVL_2" 53 | "bbb4bf6e-3e12-4343-84a1-54d160c00f40","CPC_LVL_3" 54 | "977464c4-bfaf-4b67-b761-a9bb735a2196","CRM_AUTO_ROUTING_ADDON" 55 | "de176c31-616d-4eae-829a-718918d7ec23","CRM_HYBRIDCONNECTOR" 56 | "a4bfb28e-becc-41b0-a454-ac680dc258d3","CRM_ONLINE_PORTAL" 57 | "9d776713-14cb-4697-a21d-9a52455c738a","CRMINSTANCE" 58 | "906af65a-2970-46d5-9b58-4e9aa50f0657","CRMPLAN2" 59 | "d17b27af-3f49-4822-99f9-56a661538792","CRMSTANDARD" 60 | "328dc228-00bc-48c6-8b09-1fbc8bc3435d","CRMSTORAGE" 61 | "e06abcc2-7ec5-4a79-b08b-d9c282376f72","CRMTESTINSTANCE" 62 | "eb18b715-ea9d-4290-9994-2ebf4b5042d2","D365_CUSTOMER_SERVICE_ENT_ATTACH" 63 | "a36cdaa2-a806-4b6e-9ae0-28dbd993c20e","D365_FIELD_SERVICE_ATTACH" 64 | "4b32a493-9a67-4649-8eb9-9fc5a5f75c12","D365_MARKETING_USER" 65 | "5b22585d-1b71-4c6b-b6ec-160b1a9c2323","D365_SALES_ENT_ATTACH" 66 | "be9f9771-1c64-4618-9907-244325141096","D365_SALES_PRO" 67 | "245e6bf9-411e-481e-8611-5c08595e2988","D365_SALES_PRO_ATTACH" 68 | "9c7bff7a-3715-4da7-88d3-07f57f8d0fb6","D365_SALES_PRO_IW" 69 | "16a55f2f-ff35-4cd5-9146-fb784e3761a5","DEFENDER_ENDPOINT_P1" 70 | "bba890d4-7881-4584-8102-0c3fdfb739a7","DEFENDER_ENDPOINT_P1_EDU" 71 | "a9c51c15-ffad-4c66-88c0-8771455c832d","Defender_Threat_Intelligence" 72 | "4b585984-651b-448a-9e53-3b10f069cf7f","DESKLESSPACK" 73 | "189a915c-fe4f-4ffa-bde4-85b9628d07a0","DEVELOPERPACK" 74 | "c42b9cae-ea4f-4ab7-9717-81576235ccac","DEVELOPERPACK_E5" 75 | "4f05b1a3-a978-462c-b93f-781c6bee998f","DYN365_ ENTERPRISE _RELATIONSHIP_SALES" 76 | "61e6bd70-fbdb-4deb-82ea-912842f39431","DYN365_AI_SERVICE_INSIGHTS" 77 | "673afb9d-d85b-40c2-914e-7bf46cd5cd75","DYN365_ASSETMANAGEMENT" 78 | "a58f5506-b382-44d4-bfab-225b2fbf8390","DYN365_BUSCENTRAL_ADD_ENV_ADDON" 79 | "7d0d4f9a-2686-4cb8-814c-eff3fdab6d74","DYN365_BUSCENTRAL_DB_CAPACITY" 80 | "2880026b-2b0c-4251-8656-5d41ff11e3aa","DYN365_BUSCENTRAL_ESSENTIAL" 81 | "f991cecc-3f91-4cd0-a9a8-bf1c8167e029","DYN365_BUSCENTRAL_PREMIUM" 82 | "2e3c4023-80f6-4711-aa5d-29e0ecb46835","DYN365_BUSCENTRAL_TEAM_MEMBER" 83 | "238e2f8d-e429-4035-94db-6926be4ffe7b","DYN365_BUSINESS_MARKETING" 84 | "7d7af6c2-0be6-46df-84d1-c181b0272909","DYN365_CS_CHAT" 85 | "036c2481-aa8a-47cd-ab43-324f0c157c2d","DYN365_CUSTOMER_INSIGHTS_VIRAL" 86 | "1439b6e2-5d59-4873-8c59-d60e2a196e92","DYN365_CUSTOMER_SERVICE_PRO" 87 | "65f71586-ade3-4ce1-afc0-1b452eaf3782","DYN365_CUSTOMER_VOICE_ADDON" 88 | "359ea3e6-8130-4a57-9f8f-ad897a0342f1","DYN365_CUSTOMER_VOICE_BASE" 89 | "d39fb075-21ae-42d0-af80-22a2599749e0","DYN365_ENTERPRISE_CASE_MANAGEMENT" 90 | "749742bf-0d37-4158-a120-33567104deeb","DYN365_ENTERPRISE_CUSTOMER_SERVICE" 91 | "c7d15985-e746-4f01-b113-20b575898250","DYN365_ENTERPRISE_FIELD_SERVICE" 92 | "338148b6-1b11-4102-afb9-f92b6cdc0f8d","DYN365_ENTERPRISE_P1_IW" 93 | "ea126fc5-a19e-42e2-a731-da9d437bffcf","DYN365_ENTERPRISE_PLAN1" 94 | "1e1a282c-9c54-43a2-9310-98ef728faace","DYN365_ENTERPRISE_SALES" 95 | "8edc2cf8-6438-4fa9-b6e3-aa1660c640cc","DYN365_ENTERPRISE_SALES_CUSTOMERSERVICE" 96 | "8e7a3d30-d97d-43ab-837c-d7701cef83dc","DYN365_ENTERPRISE_TEAM_MEMBERS" 97 | "55c9eb4e-c746-45b4-b255-9ab6b19d5c62","DYN365_FINANCE" 98 | "9a1e33ed-9697-43f3-b84c-1b0959dbb1d4","DYN365_FINANCIALS_ACCOUNTANT_SKU" 99 | "cc13a803-544e-4464-b4e4-6d6169a138fa","DYN365_FINANCIALS_BUSINESS_SKU" 100 | "08e18479-4483-4f70-8f17-6f92156d8ea9","DYN365_IOT_INTELLIGENCE_ADDL_MACHINES" 101 | "9ea4bdef-a20b-4668-b4a7-73e1f7696e0a","DYN365_IOT_INTELLIGENCE_SCENARIO" 102 | "85430fb9-02e8-48be-9d7e-328beb41fa29","DYN365_MARKETING_APP_ATTACH" 103 | "99c5688b-6c75-4496-876f-07f0fbd69add","DYN365_MARKETING_APPLICATION_ADDON" 104 | "d8eec316-778c-4f14-a7d1-a0aca433b4e7","DYN365_MARKETING_CONTACT_ADDON_T5" 105 | "c393e9bd-2335-4b46-8b88-9e2a86a85ec1","DYN365_MARKETING_SANDBOX_APPLICATION_ADDON" 106 | "7ed4877c-0863-4f69-9187-245487128d4f","DYN365_REGULATORY_SERVICE" 107 | "2edaa1dc-966d-4475-93d6-8ee8dfd96877","DYN365_SALES_PREMIUM" 108 | "f2e48cb3-9da0-42cd-8464-4a54ce198ad0","DYN365_SCM" 109 | "7ac9fe77-66b7-4e5e-9e46-10eed1cff547","DYN365_TEAM_MEMBERS" 110 | "94a6fbd4-6a2f-4990-b356-dc7dd8bed08a","Dynamics_365_Customer_Service_Enterprise_admin_trial" 111 | "1e615a51-59db-4807-9957-aa83c3657351","Dynamics_365_Customer_Service_Enterprise_viral_trial" 112 | "29fcd665-d8d1-4f34-8eed-3811e3fca7b3","Dynamics_365_Field_Service_Enterprise_viral_trial" 113 | "ccba3cfe-71ef-423a-bd87-b6df3dce59a9","Dynamics_365_for_Operations" 114 | "3bbd44ed-8a70-4c07-9088-6232ddbd5ddd","Dynamics_365_for_Operations_Devices" 115 | "e485d696-4c87-4aac-bf4a-91b2fb6f0fa7","Dynamics_365_for_Operations_Sandbox_Tier2_SKU" 116 | "f7ad4bca-7221-452c-bdb6-3e6089f25e06","Dynamics_365_for_Operations_Sandbox_Tier4_SKU" 117 | "e561871f-74fa-4f02-abee-5b0ef54dd36d","Dynamics_365_Hiring_SKU" 118 | "b56e7ccc-d5c7-421f-a23b-5c18bdbad7c0","DYNAMICS_365_ONBOARDING_SKU" 119 | "6ec92958-3cc1-49db-95bd-bc6b3798df71","Dynamics_365_Sales_Premium_Viral_Trial" 120 | "d13ef257-988a-46f3-8fce-f47484dd4550","E3_VDA_only" 121 | "efccb6f7-5641-4e0e-bd10-b4976e1bf68e","EMS" 122 | "aedfac18-56b8-45e3-969b-53edb4ba4952","EMS_EDU_FACULTY" 123 | "c793db86-5237-494e-9b11-dcd4877c2c8c","EMS_GOV" 124 | "b05e124f-c7cc-45a0-a6aa-8cf78c946968","EMSPREMIUM" 125 | "8a180c2b-f4cf-4d44-897c-3d32acc4a60b","EMSPREMIUM_GOV" 126 | "6fd2c87f-b296-42f0-b197-1e91e994b900","ENTERPRISEPACK" 127 | "535a3a29-c5f0-42fe-8215-d3b9e1f38c4a","ENTERPRISEPACK_GOV" 128 | "b107e5a3-3e60-4c0d-a184-a7e4395eb44c","ENTERPRISEPACK_USGOV_DOD" 129 | "aea38a85-9bd5-4981-aa00-616b411205bf","ENTERPRISEPACK_USGOV_GCCHIGH" 130 | "e578b273-6db4-4691-bba0-8d691f4da603","ENTERPRISEPACKPLUS_FACULTY" 131 | "98b6e773-24d4-4c0d-a968-6e787a1f8204","ENTERPRISEPACKPLUS_STUDENT" 132 | "c7df2760-2c81-4ef7-b578-5b5392b571df","ENTERPRISEPREMIUM" 133 | "a4585165-0533-458a-97e3-c400570268c4","ENTERPRISEPREMIUM_FACULTY" 134 | "8900a2c0-edba-4079-bdf3-b276e293b6a8","ENTERPRISEPREMIUM_GOV" 135 | "26d45bd9-adf1-46cd-a9e1-51e9a5524128","ENTERPRISEPREMIUM_NOPSTNCONF" 136 | "ee656612-49fa-43e5-b67e-cb1fdf7699df","ENTERPRISEPREMIUM_STUDENT" 137 | "1392051d-0cb9-4b7a-88d5-621fee5e8711","ENTERPRISEWITHSCAL" 138 | "45a2423b-e884-448d-a831-d9e139c52d2f","EOP_ENTERPRISE" 139 | "e8ecdf70-47a8-4d39-9d15-093624b7f640","EOP_ENTERPRISE_PREMIUM" 140 | "1b1b1f7a-8355-43b6-829f-336cfccb744c","EQUIVIO_ANALYTICS" 141 | "1a585bba-1ce3-416e-b1d6-9c482b52fcf6","EQUIVIO_ANALYTICS_GOV" 142 | "e8f81a67-bd96-4074-b108-cf193eb9433b","EXCHANGE_S_ESSENTIALS" 143 | "90b5e015-709a-4b8b-b08e-3200f994494c","EXCHANGEARCHIVE" 144 | "ee02fd1b-340e-4a4b-b355-4a514e4c8943","EXCHANGEARCHIVE_ADDON" 145 | "80b2d799-d2ba-4d2a-8842-fb0d0f3a4b82","EXCHANGEDESKLESS" 146 | "19ec0d23-8335-4cbd-94ac-6050e30712fa","EXCHANGEENTERPRISE" 147 | "7fc0182e-d107-4556-8329-7caaa511197b","EXCHANGEESSENTIALS" 148 | "4b9405b0-7788-4568-add1-99614e613b69","EXCHANGESTANDARD" 149 | "aa0f9eb7-eff2-4943-8424-226fb137fcad","EXCHANGESTANDARD_ALUMNI" 150 | "f37d5ebf-4bf1-4aa2-8fa3-50c51059e983","EXCHANGESTANDARD_GOV" 151 | "ad2fe44a-915d-4e2b-ade1-6766d50a9d9c","EXCHANGESTANDARD_STUDENT" 152 | "cb0a98a8-11bc-494c-83d9-c1b1ac65327e","EXCHANGETELCO" 153 | "9fa2f157-c8e4-4351-a3f2-ffa506da1406","EXPERTS_ON_DEMAND" 154 | "b3a42176-0a8c-4c3f-ba4e-f2b37fe5be6b","FLOW_BUSINESS_PROCESS" 155 | "f30db892-07e9-47e9-837c-80727f46fd3d","FLOW_FREE" 156 | "4755df59-3f73-41ab-a249-596ad72b5504","FLOW_P2" 157 | "4a51bf65-409c-4a91-b845-1121b571cc9d","FLOW_PER_USER" 158 | "d80a4c5d-8f05-4b64-9926-6574b9e6aee4","FLOW_PER_USER_DEPT" 159 | "c8803586-c136-479a-8ff3-f5f32d23a68e","FLOW_PER_USER_GCC" 160 | "bc946dac-7877-4271-b2f7-99d2db13cd2c","FORMS_PRO" 161 | "446a86f8-a0cb-4095-83b3-d100eb050e3d","Forms_Pro_AddOn" 162 | "e2ae107b-a571-426f-9367-6d4c8f1390ba","Forms_Pro_USL" 163 | "0a389a77-9850-4dc4-b600-bc66fdfefc60","GUIDES_USER" 164 | "26124093-3d78-432b-b5dc-48bf992543d5","IDENTITY_THREAT_PROTECTION" 165 | "44ac31e7-2999-4304-ad94-c948886741d4","IDENTITY_THREAT_PROTECTION_FOR_EMS_E5" 166 | "184efa21-98c3-4e5d-95ab-d07053a96e67","INFORMATION_PROTECTION_COMPLIANCE" 167 | "f61d4aba-134f-44e9-a2a0-f81a5adb26e4","Intelligent_Content_Services" 168 | "061f9ace-7d42-4136-88ac-31dc755f143f","INTUNE_A" 169 | "2b317a4a-77a6-4188-9437-b68a77b4e2c6","INTUNE_A_D" 170 | "2c21e77a-e0d6-4570-b38a-7ff2dc17d2ca","INTUNE_A_D_GOV" 171 | "d9d89b70-a645-4c24-b041-8d3cb1884ec7","INTUNE_EDU" 172 | "e6025b08-2fa5-4313-bd0a-7e5ffca32958","INTUNE_SMB" 173 | "ba9a34de-4489-469d-879c-0f0f145321cd","IT_ACADEMY_AD" 174 | "bd09678e-b83c-4d3f-aaba-3dad4abd128b","LITEPACK" 175 | "fc14ec4a-4169-49a4-a51e-2c852931814b","LITEPACK_P2" 176 | "99cc8282-2f74-4954-83b7-c6a9a1999067","M365_E5_SUITE_COMPONENTS" 177 | "44575883-256e-4a79-9da4-ebe9acabe2b2","M365_F1" 178 | "50f60901-3181-4b75-8a2c-4c8e4c1d5a72","M365_F1_COMM" 179 | "2a914830-d700-444a-b73c-e3f31980d833","M365_F1_GOV" 180 | "e823ca47-49c4-46b3-b38d-ca11d5abe3d2","M365_G3_GOV" 181 | "e2be619b-b125-455f-8660-fb503e431a5d","M365_G5_GCC" 182 | "2347355b-4e81-41a4-9c22-55057a399791","M365_SECURITY_COMPLIANCE_FOR_FLW" 183 | "b17653a4-2443-4e8c-a550-18249dda78bb","M365EDU_A1" 184 | "4b590615-0888-425a-a965-b3bf7789848d","M365EDU_A3_FACULTY" 185 | "7cfd9a2b-e110-4c39-bf20-c6a3f36a3121","M365EDU_A3_STUDENT" 186 | "18250162-5d87-4436-a834-d795c15c80f3","M365EDU_A3_STUUSEBNFT" 187 | "1aa94593-ca12-4254-a738-81a5972958e8","M365EDU_A3_STUUSEBNFT_RPA1" 188 | "e97c048c-37a4-45fb-ab50-922fbf07a370","M365EDU_A5_FACULTY" 189 | "81441ae1-0b31-4185-a6c0-32b6b84d419f","M365EDU_A5_NOPSTNCONF_STUUSEBNFT" 190 | "46c119d4-0379-4a9d-85e4-97c66d3f909e","M365EDU_A5_STUDENT" 191 | "31d57bc7-3a05-4867-ab53-97a17835a411","M365EDU_A5_STUUSEBNFT" 192 | "295a8eb0-f78d-45c7-8b5b-1eed5ed02dff","MCOCAP" 193 | "b1511558-69bd-4e1b-8270-59ca96dba0f3","MCOCAP_GOV" 194 | "e43b5b99-8dfb-405f-9987-dc307f34bcbd","MCOEV" 195 | "d01d9287-694b-44f3-bcc5-ada78c8d953e","MCOEV_DOD" 196 | "d979703c-028d-4de5-acbf-7955566b69b9","MCOEV_FACULTY" 197 | "7035277a-5e49-4abc-a24f-0ec49c501bb5","MCOEV_GCCHIGH" 198 | "a460366a-ade7-4791-b581-9fbff1bdaa85","MCOEV_GOV" 199 | "1f338bbc-767e-4a1e-a2d4-b73207cc5b93","MCOEV_STUDENT" 200 | "ffaf2d68-1c95-4eb3-9ddd-59b81fba0f61","MCOEV_TELSTRA" 201 | "b0e7de67-e503-4934-b729-53d595ba5cd1","MCOEV_USGOV_DOD" 202 | "985fcb26-7b94-475b-b512-89356697be71","MCOEV_USGOV_GCCHIGH" 203 | "aa6791d3-bb09-4bc2-afed-c30c3fe26032","MCOEVSMB_1" 204 | "b8b749f8-a4ef-4887-9539-c95b1eaa5db7","MCOIMP" 205 | "df9561a4-4969-4e6a-8e73-c601b68ec077","MCOMEETACPEA" 206 | "0c266dff-15dd-4b49-8397-2bb16070ed52","MCOMEETADV" 207 | "2d3091c7-0712-488b-b3d8-6b97bde6a1f5","MCOMEETADV_GOV" 208 | "923f58ab-fca1-46a1-92f9-89fda21238a8","MCOPSTN_1_GOV" 209 | "11dee6af-eca8-419f-8061-6864517c1875","MCOPSTN_5" 210 | "0dab259f-bf13-4952-b7f8-7db8f131b28d","MCOPSTN1" 211 | "d3b4fe1f-9992-4930-8acb-ca6ec609365e","MCOPSTN2" 212 | "54a152dc-90de-4996-93d2-bc47e670fc06","MCOPSTN5" 213 | "47794cd0-f0e5-45c5-9033-2eb6b5fc84e0","MCOPSTNC" 214 | "de3312e1-c7b0-46e6-a7c3-a515ff90bc86","MCOPSTNEAU2" 215 | "06b48c5f-01d9-4b18-9015-03b52040f51a","MCOPSTNPP" 216 | "d42c793f-6c78-4f43-92ca-e8f6a02b035f","MCOSTANDARD" 217 | "ae2343d1-0999-43f6-ae18-d816516f6e78","MCOTEAMS_ESSENTIALS" 218 | "509e8ab6-0274-4cda-bcbd-bd164fd562c4","MDATP_Server" 219 | "b126b073-72db-4a9d-87a4-b17afe41d4ab","MDATP_XPLAT" 220 | "984df360-9a74-4647-8cf8-696749f6247a","MEE_FACULTY" 221 | "533b8f26-f74b-4e9c-9c59-50fc4b393b63","MEE_STUDENT" 222 | "6070a4c8-34c6-4937-8dfb-39bbc6397a60","MEETING_ROOM" 223 | "61bec411-e46a-4dab-8f46-8b58ec845ffe","MEETING_ROOM_NOAUDIOCONF" 224 | "cb2020b1-d8f6-41c0-9acd-8ff3d6d7831b","MFA_STANDALONE" 225 | "0c21030a-7e60-4ec7-9a0f-0042e0e0211a","Microsoft_365_E3" 226 | "db684ac5-c0e7-4f92-8284-ef9ebde75d33","Microsoft_365_E5" 227 | "2113661c-6509-4034-98bb-9c47bd28d63c","Microsoft_365_E5_without_Audio_Conferencing" 228 | "726a0894-2c77-4d65-99da-9775ef05aad1","MICROSOFT_BUSINESS_CENTER" 229 | "9706eed9-966f-4f1b-94f6-bb2b4af99a5b","Microsoft_Cloud_App_Security_App_Governance_Add_On" 230 | "a929cd4d-8672-47c9-8664-159c1f322ba8","Microsoft_Intune_Suite" 231 | "7a551360-26c4-4f61-84e6-ef715673e083","MICROSOFT_REMOTE_ASSIST" 232 | "e48328a2-8e98-4484-a70f-a99f8ac9ec89","MICROSOFT_REMOTE_ASSIST_HOLOLENS" 233 | "1c27243e-fb4d-42b1-ae8c-fe25c9616588","Microsoft_Teams_Audio_Conferencing_select_dial_out" 234 | "36a0f3b3-adb5-49ea-bf66-762134cf063a","Microsoft_Teams_Premium" 235 | "6af4b3d6-14bb-4a2a-960c-6c902aad34f3","Microsoft_Teams_Rooms_Basic" 236 | "a4e376bd-c61e-4618-9901-3fc0cb1b88bb","Microsoft_Teams_Rooms_Basic_FAC" 237 | "50509a35-f0bd-4c5e-89ac-22f0e16a00f8","Microsoft_Teams_Rooms_Basic_without_Audio_Conferencing" 238 | "4cde982a-ede4-4409-9ae6-b003453c8ea6","Microsoft_Teams_Rooms_Pro" 239 | "21943e3a-2429-4f83-84c1-02735cd49e78","Microsoft_Teams_Rooms_Pro_without_Audio_Conferencing" 240 | "04a7fb0d-32e0-4241-b4f5-3f7618cd1162","MIDSIZEPACK" 241 | "74fbf1bb-47c6-4796-9623-77dc7371723b","MS_TEAMS_IW" 242 | "4fb214cb-a430-4a91-9c91-4976763aa78f","MTR_PREM" 243 | "aa2695c9-8d59-4800-9dc8-12e01f1735af","NONPROFIT_PORTAL" 244 | "cdd28e44-67e3-425e-be4c-737fab2899d3","O365_BUSINESS" 245 | "3b555118-da6a-4418-894f-7df1e2096870","O365_BUSINESS_ESSENTIALS" 246 | "f245ecc8-75af-4f8e-b61f-27d8114de5f3","O365_BUSINESS_PREMIUM" 247 | "ea4c5ec8-50e3-4193-89b9-50da5bd4cdc7","OFFICE_PROPLUS_DEVICE1" 248 | "84951599-62b7-46f3-9c9d-30551b2ad607","OFFICE365_MULTIGEO" 249 | "c2273bd0-dff7-4215-9ef5-2c7bcfb06425","OFFICESUBSCRIPTION" 250 | "12b8c807-2e20-48fc-b453-542b6ee9d171","OFFICESUBSCRIPTION_FACULTY" 251 | "c32f9321-a627-406d-a114-1f9c81aaafac","OFFICESUBSCRIPTION_STUDENT" 252 | "7b26f5ab-a763-4c00-a1ac-f6c4b5506945","PBI_PREMIUM_P1_ADDON" 253 | "c1d032e0-5619-4761-9b5c-75b6831e1711","PBI_PREMIUM_PER_USER" 254 | "de376a03-6e5b-42ec-855f-093fb50b8ca5","PBI_PREMIUM_PER_USER_ADDON" 255 | "f168a3fb-7bcf-4a27-98c3-c235ea4b78b4","PBI_PREMIUM_PER_USER_DEPT" 256 | "060d8061-f606-4e69-a4e7-e8fff75ea1f5","PBI_PREMIUM_PER_USER_FACULTY" 257 | "440eaaa8-b3e0-484b-a8be-62870b9ba70a","PHONESYSTEM_VIRTUALUSER" 258 | "2cf22bcb-0c9e-4bc6-8daf-7e7654c0f285","PHONESYSTEM_VIRTUALUSER_GOV" 259 | "45bc2c81-6072-436a-9b0b-3b12eefbc402","POWER_BI_ADDON" 260 | "e2767865-c3c9-4f09-9f99-6eee6eef861a","POWER_BI_INDIVIDUAL_USER" 261 | "f8a1db68-be16-40ed-86d5-cb42ce701560","POWER_BI_PRO" 262 | "420af87e-8177-4146-a780-3786adaffbca","POWER_BI_PRO_CE" 263 | "3a6a908c-09c5-406a-8170-8ebb63c42882","POWER_BI_PRO_DEPT" 264 | "de5f128b-46d7-4cfc-b915-a89ba060ea56","POWER_BI_PRO_FACULTY" 265 | "a403ebcc-fae0-4ca2-8c8c-7a907fd6c235","POWER_BI_STANDARD" 266 | "3f9f06f5-3c31-472c-985f-62d9c10ec167","Power_Pages_vTrial_for_Makers" 267 | "5b631642-bd26-49fe-bd20-1daaa972ef80","POWERAPPS_DEV" 268 | "87bbbc60-4754-4998-8c88-227dca264858","POWERAPPS_INDIVIDUAL_USER" 269 | "eca22b68-b31f-4e9c-a20c-4d40287bc5dd","POWERAPPS_P1_GOV" 270 | "a8ad7d2b-b8cf-49d6-b25a-69094a0be206","POWERAPPS_PER_APP" 271 | "bf666882-9c9b-4b2e-aa2f-4789b0a52ba2","POWERAPPS_PER_APP_IW" 272 | "b4d7b828-e8dc-4518-91f9-e123ae48440d","POWERAPPS_PER_APP_NEW" 273 | "b30411f5-fea1-4a59-9ad9-3db7c7ead579","POWERAPPS_PER_USER" 274 | "8e4c6baa-f2ff-4884-9c38-93785d0d7ba1","POWERAPPS_PER_USER_GCC" 275 | "57f3babd-73ce-40de-bcb2-dadbfbfff9f7","POWERAPPS_PORTALS_LOGIN_T2" 276 | "26c903d5-d385-4cb1-b650-8d81a643b3c4","POWERAPPS_PORTALS_LOGIN_T2_GCC" 277 | "927d8402-8d3b-40e8-b779-34e859f7b497","POWERAPPS_PORTALS_LOGIN_T3" 278 | "a0de5e3a-2500-4a19-b8f4-ec1c64692d22","POWERAPPS_PORTALS_PAGEVIEW" 279 | "15a64d3e-5b99-4c4b-ae8f-aa6da264bfe7","POWERAPPS_PORTALS_PAGEVIEW_GCC" 280 | "dcb1a3ae-b33f-4487-846a-a640262fadf4","POWERAPPS_VIRAL" 281 | "eda1941c-3c4f-4995-b5eb-e85a42175ab9","POWERAUTOMATE_ATTENDED_RPA" 282 | "3539d28c-6e35-4a30-b3a9-cd43d5d3e0e2","POWERAUTOMATE_UNATTENDED_RPA" 283 | "f0612879-44ea-47fb-baf0-3d76d9235576","POWERBI_PRO_GOV" 284 | "ddfae3e3-fcb2-4174-8ebd-3023cb213c8b","POWERFLOW_P2" 285 | "e42bc969-759a-4820-9283-6b73085b68e6","PRIVACY_MANAGEMENT_RISK" 286 | "dcdbaae7-d8c9-40cb-8bb1-62737b9e5a86","PRIVACY_MANAGEMENT_RISK_EDU" 287 | "046f7d3b-9595-4685-a2e8-a2832d2b26aa","PRIVACY_MANAGEMENT_RISK_GCC" 288 | "83b30692-0d09-435c-a455-2ab220d504b9","PRIVACY_MANAGEMENT_RISK_USGOV_DOD" 289 | "787d7e75-29ca-4b90-a3a9-0b780b35367c","PRIVACY_MANAGEMENT_RISK_USGOV_GCCHIGH" 290 | "475e3e81-3c75-4e07-95b6-2fed374536c8","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_1_EDU_V2" 291 | "d9020d1c-94ef-495a-b6de-818cbbcaa3b8","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_1_V2" 292 | "017fb6f8-00dd-4025-be2b-4eff067cae72","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_1_V2_GCC" 293 | "d3c841f3-ea93-4da2-8040-6f2348d20954","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_1_V2_USGOV_DOD" 294 | "706d2425-6170-4818-ba08-2ad8f1d2d078","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_1_V2_USGOV_GCCHIGH" 295 | "e001d9f1-5047-4ebf-8927-148530491f83","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_10_EDU_V2" 296 | "78ea43ac-9e5d-474f-8537-4abb82dafe27","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_10_V2" 297 | "a056b037-1fa0-4133-a583-d05cff47d551","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_10_V2_GCC" 298 | "ab28dfa1-853a-4f54-9315-f5146975ac9a","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_10_V2_USGOV_DOD" 299 | "f6aa3b3d-62f4-4c1d-a44f-0550f40f729c","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_10_V2_USGOV_GCCHIGH" 300 | "9b85b4f0-92d9-4c3d-b230-041520cb1046","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_100_EDU_V2" 301 | "cf4c6c3b-f863-4940-97e8-1d25e912f4c4","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_100_V2" 302 | "91bbc479-4c2c-4210-9c88-e5b468c35b83","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_100_V2_GCC" 303 | "ba6e69d5-ba2e-47a7-b081-66c1b8e7e7d4","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_100_V2_USGOV_DOD" 304 | "cee36ce4-cc31-481f-8cab-02765d3e441f","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_100_V2_USGOV_GCCHIGH" 305 | "c416b349-a83c-48cb-9529-c420841dedd6","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_50" 306 | "ed45d397-7d61-4110-acc0-95674917bb14","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_50_EDU_V2" 307 | "f6c82f13-9554-4da1-bed3-c024cc906e02","PRIVACY_MANAGEMENT_SUB_RIGHTS_REQ_50_V2" 308 | "6a4a1628-9b9a-424d-bed5-4118f0ede3fd","PROJECT_MADEIRA_PREVIEW_IW_SKU" 309 | "beb6439c-caad-48d3-bf46-0c82871e12be","PROJECT_P1" 310 | "84cd610f-a3f8-4beb-84ab-d9d2c902c6c9","PROJECT_PLAN1_DEPT" 311 | "46102f44-d912-47e7-b0ca-1bd7b70ada3b","PROJECT_PLAN3_DEPT" 312 | "a10d5e58-74da-4312-95c8-76be4e5b75a0","PROJECTCLIENT" 313 | "776df282-9fc0-4862-99e2-70e561b9909e","PROJECTESSENTIALS" 314 | "e433b246-63e7-4d0b-9efa-7940fa3264d6","PROJECTESSENTIALS_FACULTY" 315 | "ca1a159a-f09e-42b8-bb82-cb6420f54c8e","PROJECTESSENTIALS_GOV" 316 | "2db84718-652c-47a7-860c-f10d8abbdae3","PROJECTONLINE_PLAN_1" 317 | "b732e2a7-5694-4dff-a0f2-9d9204c794ac","PROJECTONLINE_PLAN_1_FACULTY" 318 | "f82a60b8-1ee3-4cfb-a4fe-1c6a53c2656c","PROJECTONLINE_PLAN_2" 319 | "09015f9f-377f-4538-bbb5-f75ceb09358a","PROJECTPREMIUM" 320 | "f2230877-72be-4fec-b1ba-7156d6f75bd6","PROJECTPREMIUM_GOV" 321 | "53818b1b-4a27-454b-8896-0dba576410e6","PROJECTPROFESSIONAL" 322 | "46974aed-363e-423c-9e6a-951037cec495","PROJECTPROFESSIONAL_FACULTY" 323 | "074c6829-b3a0-430a-ba3d-aca365e57065","PROJECTPROFESSIONAL_GOV" 324 | "c52ea49f-fe5d-4e95-93ba-1de91d380f89","RIGHTSMANAGEMENT" 325 | "8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b","RIGHTSMANAGEMENT_ADHOC" 326 | "093e8d14-a334-43d9-93e3-30589a8b47d0","RMSBASIC" 327 | "a9732ec9-17d9-494c-a51c-d6b45b384dcb","SHAREPOINTENTERPRISE" 328 | "1fc08a02-8b3d-43b9-831e-f76859e04e1a","SHAREPOINTSTANDARD" 329 | "99049c9c-6011-4908-bf17-15f496e6519d","SHAREPOINTSTORAGE" 330 | "e5788282-6381-469f-84f0-3d7d4021d34d","SHAREPOINTSTORAGE_GOV" 331 | "3a256e9a-15b6-4092-b0dc-82993f4debc6","SKU_Dynamics_365_for_HCM_Trial" 332 | "90d8b3f8-712e-4f7b-aa1e-62e7ae6cbe96","SMB_APPS" 333 | "b214fe43-f5a3-4703-beeb-fa97188220fc","SMB_BUSINESS" 334 | "dab7782a-93b1-4074-8bb1-0e61318bea0b","SMB_BUSINESS_ESSENTIALS" 335 | "ac5cef5d-921b-4f97-9ef3-c99076e5470f","SMB_BUSINESS_PREMIUM" 336 | "c6df1e30-1c9f-427f-907c-3d913474a1c7","SOCIAL_ENGAGEMENT_APP_USER" 337 | "cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46","SPB" 338 | "05e9a617-0261-4cee-bb44-138d3ef5d965","SPE_E3" 339 | "c2ac2ee4-9bb1-47e4-8541-d689c7e83371","SPE_E3_RPA1" 340 | "d61d61cc-f992-433f-a577-5bd016037eeb","SPE_E3_USGOV_DOD" 341 | "ca9d1dd9-dfe9-4fef-b97c-9bc1ea3c3658","SPE_E3_USGOV_GCCHIGH" 342 | "06ebc4ee-1bb5-47dd-8120-11324bc54e06","SPE_E5" 343 | "a91fc4e0-65e5-4266-aa76-4037509c1626","SPE_E5_CALLINGMINUTES" 344 | "cd2925a3-5076-4233-8931-638a8c94f773","SPE_E5_NOPSTNCONF" 345 | "66b55226-6b4f-492c-910c-a3b7a3c9d993","SPE_F1" 346 | "91de26be-adfa-4a3d-989e-9131cc23dda7","SPE_F5_COMP" 347 | "9cfd6bc3-84cd-4274-8a21-8c7c41d6c350","SPE_F5_COMP_AR_D_USGOV_DOD" 348 | "9f436c0e-fb32-424b-90be-6a9f2919d506","SPE_F5_COMP_AR_USGOV_GCCHIGH" 349 | "3f17cf90-67a2-4fdb-8587-37c1539507e1","SPE_F5_COMP_GCC" 350 | "67ffe999-d9ca-49e1-9d2c-03fb28aa7a48","SPE_F5_SEC" 351 | "32b47245-eb31-44fc-b945-a8b1576c439f","SPE_F5_SECCOMP" 352 | "8f0c5670-4e56-4892-b06d-91c085d7004f","SPZA_IW" 353 | "18181a46-0d4e-45cd-891e-60aabd171b4e","STANDARDPACK" 354 | "3f4babde-90ec-47c6-995d-d223749065d1","STANDARDPACK_GOV" 355 | "6634e0ce-1a9f-428c-a498-f84ec7b8aa2e","STANDARDWOFFPACK" 356 | "94763226-9b3c-4e75-a931-5c89701abe66","STANDARDWOFFPACK_FACULTY" 357 | "78e66a63-337a-4a9a-8959-41c6654dfb56","STANDARDWOFFPACK_IW_FACULTY" 358 | "e82ae690-a2d5-4d76-8d30-7c6e01e6022e","STANDARDWOFFPACK_IW_STUDENT" 359 | "314c4481-f395-4525-be8b-2ec4bb1e9d91","STANDARDWOFFPACK_STUDENT" 360 | "1f2f344a-700d-42c9-9427-5cea1d5d7ba6","STREAM" 361 | "ec156933-b85b-4c50-84ec-c9e5603709ef","STREAM_P2" 362 | "9bd7c846-9556-4453-a542-191d527209e8","STREAM_STORAGE" 363 | "29a2f828-8f39-4837-b8ff-c957e86abe3c","TEAMS_COMMERCIAL_TRIAL" 364 | "fde42873-30b6-436b-b361-21af5a6b84ae","Teams_Ess" 365 | "3ab6abff-666f-4424-bfb7-f0bc274ec7bc","TEAMS_ESSENTIALS_AAD" 366 | "710779e8-3d4a-4c88-adb9-386c958d1fdf","TEAMS_EXPLORATORY" 367 | "16ddbbfc-09ea-4de2-b1d7-312db6112d70","TEAMS_FREE" 368 | "3dd6cf57-d688-4eed-ba52-9e40b5468c3e","THREAT_INTELLIGENCE" 369 | "56a59ffb-9df1-421b-9e61-8b568583474d","THREAT_INTELLIGENCE_GOV" 370 | "4016f256-b063-4864-816e-d818aad600c9","TOPIC_EXPERIENCES" 371 | "ad7a56e0-6903-4d13-94f3-5ad491e78960","TVM_Premium_Add_on" 372 | "9f3d9c1d-25a5-4aaa-8e59-23a1e6450a67","UNIVERSAL_PRINT" 373 | "e4e55366-9635-46f4-a907-fc8c3b5ec81f","VIRTUAL_AGENT_BASE" 374 | "4b74a65c-8b4a-4fc8-9f6b-5177ed11ddfa","VIRTUAL_AGENT_USL" 375 | "ca7f3140-d88c-455b-9a1c-7f0679e31a76","VISIO_PLAN1_DEPT" 376 | "38b434d2-a15e-4cde-9a98-e737c75623e1","VISIO_PLAN2_DEPT" 377 | "c5928f49-12ba-48f7-ada3-0d743a3601d5","VISIOCLIENT" 378 | "bf95fd32-576a-4742-8d7a-6dc4940b9532","VISIOCLIENT_FACULTY" 379 | "4ae99959-6b0f-43b0-b1ce-68146001bdba","VISIOCLIENT_GOV" 380 | "4b244418-9658-4451-a2b8-b5e2b364e9bd","VISIOONLINE_PLAN1" 381 | "61902246-d7cb-453e-85cd-53ee28eec138","VIVA" 382 | "ed01faf2-1d88-4947-ae91-45ca18703a96","WACONEDRIVEENTERPRISE" 383 | "e6778190-713e-4e4f-9119-8b8238de25df","WACONEDRIVESTANDARD" 384 | "111046dd-295b-4d6d-9724-d52ac90bd1f2","WIN_DEF_ATP" 385 | "1e7e1070-8ccb-4aca-b470-d7cb538cb07e","WIN_ENT_E5" 386 | "8efbe2f6-106e-442f-97d4-a59aa6037e06","WIN10_ENT_A3_FAC" 387 | "d4ef921e-840b-4b48-9a90-ab6698bc7b31","WIN10_ENT_A3_STU" 388 | "cb10e6cd-9da4-4992-867b-67546b1db821","WIN10_PRO_ENT_SUB" 389 | "6a0f6da5-0b87-4190-a6ae-9bb5a2b9546a","WIN10_VDA_E3" 390 | "488ba24a-39a9-4473-8ee5-19291e71b002","WIN10_VDA_E5" 391 | "90369797-7141-4e75-8f5e-d13f4b6092c1","Windows_365_S_2vCPU_4GB_128GB" 392 | "8fe96593-34d3-49bb-aeee-fb794fed0800","Windows_365_S_2vCPU_4GB_256GB" 393 | "1f9990ca-45d9-4c8d-8d04-a79241924ce1","Windows_365_S_2vCPU_4GB_64GB" 394 | "2d21fc84-b918-491e-ad84-e24d61ccec94","Windows_365_S_2vCPU_8GB_128GB" 395 | "2eaa4058-403e-4434-9da9-ea693f5d96dc","Windows_365_S_2vCPU_8GB_256GB" 396 | "1bf40e76-4065-4530-ac37-f1513f362f50","Windows_365_S_4vCPU_16GB_128GB" 397 | "a9d1e0df-df6f-48df-9386-76a832119cca","Windows_365_S_4vCPU_16GB_256GB" 398 | "469af4da-121c-4529-8c85-9467bbebaa4b","Windows_365_S_4vCPU_16GB_512GB" 399 | "f319c63a-61a9-42b7-b786-5695bc7edbaf","Windows_365_S_8vCPU_32GB_128GB" 400 | "fb019e88-26a0-4218-bd61-7767d109ac26","Windows_365_S_8vCPU_32GB_256GB" 401 | "f4dc1de8-8c94-4d37-af8a-1fca6675590a","Windows_365_S_8vCPU_32GB_512GB" 402 | "6470687e-a428-4b7a-bef2-8a291ad947c9","WINDOWS_STORE" 403 | "938fd547-d794-42a4-996c-1cc206619580","WINE5_GCC_COMPAT" 404 | "3d957427-ecdc-4df2-aacd-01cc9d519da8","WORKPLACE_ANALYTICS" 405 | "c7e9d9e6-1981-4bf3-bb50-a5bdfaa06fb2","WSFB_EDU_FACULTY" 406 | -------------------------------------------------------------------------------- /SupportingFiles/Graph_SignInActivity_Report_AAD_Service_Plan_Ids.csv: -------------------------------------------------------------------------------- 1 | ServicePlanId, ServicePlanName 2 | c4da7f8a-5ee2-4c99-a7e1-87d2df57f6fe,AAD_BASIC 3 | 1d0f309f-fdf9-4b2a-9ae7-9c48b91f1426,AAD_BASIC_EDU 4 | 3a3976ce-de18-4a87-a78e-5e9245e252df,AAD_EDU 5 | 41781fb2-bc02-4b7c-bd55-b576c07bb09d,AAD_PREMIUM 6 | eec0eb4f-6444-4f95-aba0-50c24d67f998,AAD_PREMIUM_P2 7 | de377cbc-0019-4ec2-b77c-3f223947e102,AAD_SMB 8 | 61d18b02-6889-479f-8f36-56e6e0fe5792,ADALLOM_FOR_AATP 9 | 932ad362-64a8-4783-9106-97849a1a30b9,ADALLOM_S_DISCOVERY 10 | 8c098270-9dd4-4350-9b30-ba4703f3b36b,ADALLOM_S_O365 11 | 2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2,ADALLOM_S_STANDALONE 12 | 6ebdddb7-8e55-4af2-952b-69e77262f96c,ADALLOM_S_STANDALONE_DOD 13 | 14ab5db5-e6c4-4b20-b4bc-13e36fd2227f,ATA 14 | f20fedf3-f3c3-43c3-8267-2bfdd51c0939,ATP_ENTERPRISE 15 | 493ff600-6a2b-4db6-ad37-a7d4eb214516,ATP_ENTERPRISE_GOV 16 | 944e9726-f011-4353-b654-5f7d2663db76,BI_AZURE_P_2_GOV 17 | 2049e525-b859-401b-b2a0-e0a31c4b1fe4,BI_AZURE_P0 18 | 2125cfd7-2110-4567-83c4-c1cd5275163d,BI_AZURE_P1 19 | 70d33638-9c74-4d01-bfd3-562de28bd4ba,BI_AZURE_P2 20 | 0bf3c642-7bb5-4ccc-884e-59d09df0266c,BI_AZURE_P3 21 | 9bec7e34-c9fa-40b7-a9d1-bd6d1165c7ed,BPOS_S_DlpAddOn 22 | 5e62787c-c316-451f-b873-1d05acd4d12c,BPOS_S_TODO_1 23 | c87f142c-d1e9-4363-8630-aaea9c4d9ae5,BPOS_S_TODO_2 24 | 3fb82609-8c27-4f7b-bd51-30634711ee67,BPOS_S_TODO_3 25 | 80873e7a-cd2a-4e67-b061-1b5381a676a5,BPOS_S_TODO_FIRSTLINE 26 | ce312d15-8fdf-44c0-9974-a25a177125ee,CCIBOTS_PRIVPREV_VIRAL 27 | 3da2fd4c-1bee-4b61-a17f-94c31e5cab93,CDS_ATTENDED_RPA 28 | 94e5cbf6-d843-4ee8-a2ec-8b15eb52019e,CDS_CUSTOMER_INSIGHTS_TRIAL 29 | 360bcc37-0c11-4264-8eed-9fa7a3297c9b,CDS_DB_CAPACITY 30 | 1ddffef6-4f69-455e-89c7-d5d72105f915,CDS_DB_CAPACITY_GOV 31 | dd12a3a8-caec-44f8-b4fb-2f1a864b51e3,CDS_FILE_CAPACITY 32 | c84e52ae-1906-4947-ac4d-6fb3e5bf7c2e,CDS_Flow_Business_Process 33 | e9830cfd-e65d-49dc-84fb-7d56b9aa2c89,CDS_FORM_PRO_USL 34 | dc48f5c5-e87d-43d6-b884-7ac4a59e7ee9,CDS_LOG_CAPACITY 35 | 3069d530-e41b-421c-ad59-fb1001a23e11,CDS_O365_E5_KM 36 | 90db65a7-bf11-4904-a79f-ef657605145b,CDS_O365_F1 37 | 5e05331a-0aec-437e-87db-9ef5934b5771,CDS_O365_F1_GCC 38 | bed136c6-b799-4462-824d-fc045d3a9d25,CDS_O365_P1 39 | 959e5dec-6522-4d44-8349-132c27c3795a,CDS_O365_P1_GCC 40 | 95b76021-6a53-4741-ab8b-1d1f3d66a95a,CDS_O365_P2 41 | a70bbf38-cdda-470d-adb8-5804b8770f41,CDS_O365_P2_GCC 42 | afa73018-811e-46e9-988f-f75d2b1b8430,CDS_O365_P3 43 | bce5e5ca-c2fd-4d53-8ee2-58dfffed4c10,CDS_O365_P3_GCC 44 | 9f2f00ad-21ae-4ceb-994b-d8bc7be90999,CDS_PER_APP 45 | 94a669d1-84d5-4e54-8462-53b0ae2c8be5,CDS_PER_APP_IWTRIAL 46 | 32ad3a4e-2272-43b4-88d0-80d284258208,CDS_POWERAPPS_PORTALS_LOGIN 47 | 0f7b9a29-7990-44ff-9d05-a76be778f410,CDS_POWERAPPS_PORTALS_LOGIN_GCC 48 | 72c30473-7845-460a-9feb-b58f216e8694,CDS_POWERAPPS_PORTALS_PAGEVIEW 49 | 352257a9-db78-4217-a29d-8b8d4705b014,CDS_POWERAPPS_PORTALS_PAGEVIEW_GCC 50 | 0850ebb5-64ee-4d3a-a3e1-5a97213653b5,CDS_REMOTE_ASSIST 51 | b475952f-128a-4a44-b82a-0b98a45ca7fb,CDS_UNATTENDED_RPA 52 | 0a0a23fa-fea1-4195-bb89-b4789cb12f7f,CDS_VIRTUAL_AGENT_BASE 53 | cb867b3c-7f38-4d0d-99ce-e29cd69812c8,CDS_VIRTUAL_AGENT_USL 54 | a7c70a41-5e02-4271-93e6-d9b4184d83f5,CDSAICAPACITY 55 | 5d7a2e9a-4ee5-4f1c-bc9f-abc481bf39d8,CDSAICAPACITY_PERAPP 56 | 91f50f7b-2204-4803-acac-5cf5668b8b39,CDSAICAPACITY_PERUSER 57 | 74d93933-6f22-436e-9441-66d205435abb,CDSAICAPACITY_PERUSER_NEW 58 | 41fcdd7d-4733-4863-9cf4-c65b83ce2df4,COMMUNICATIONS_COMPLIANCE 59 | 6dc145d6-95dd-4191-b9c3-185575ee6f6b,COMMUNICATIONS_DLP 60 | 3a117d30-cfac-4f00-84ac-54f8b6a18d78,COMPLIANCE_MANAGER_PREMIUM_ASSESSMENT_ADDON 61 | d9fa6af4-e046-4c89-9226-729a0786685d,Content_Explorer 62 | 2b815d45-56e4-4e3a-b65c-66cb9175b560,ContentExplorer_Standard 63 | c815c93d-0759-4bb8-b857-bc921a71be83,CORTEX 64 | 545e3611-3af8-49a5-9a0a-b7867968f4b0,CPC_1 65 | 3efff3fe-528a-4fc5-b1ba-845802cc764f,CPC_2 66 | 3b98b912-1720-4a1e-9630-c9a41dbb61d8,CPC_B_1C_2RAM_64GB 67 | 1a13832e-cd79-497d-be76-24186f55c8b0,CPC_B_2C_4RAM_128GB 68 | a0b1c075-51c9-4a42-b34c-308f3993bb7e,CPC_B_2C_4RAM_256GB 69 | a790cd6e-a153-4461-83c7-e127037830b6,CPC_B_2C_4RAM_64GB 70 | 1a3ef005-2ef6-434b-8be1-faa56c892854,CPC_B_2C_8RAM_256GB 71 | 1d4f75d3-a19b-49aa-88cb-f1ea1690b550,CPC_B_4C_16RAM_128GB 72 | 30f6e561-8805-41d0-80ce-f82698b72d7d,CPC_B_4C_16RAM_256GB 73 | 15499661-b229-4a1f-b0f9-bd5832ef7b3e,CPC_B_4C_16RAM_512GB 74 | 648005fc-b330-4bd9-8af6-771f28958ac0,CPC_B_8C_32RAM_128GB 75 | d7a5113a-0276-4dc2-94f8-ca9f2c5ae078,CPC_B_8C_32RAM_256GB 76 | 4229a0b4-7f34-4835-b068-6dc8d10be57c,CPC_B_8C_32RAM_512GB 77 | 86d70dbb-d4c6-4662-ba17-3014204cbb28,CPC_E_1C_2GB_64GB 78 | 0d143570-9b92-4f57-adb5-e4efcd23b3bb,CPC_E_2C_4GB_256GB 79 | 23a25099-1b2f-4e07-84bd-b84606109438,CPC_E_2C_4GB_64GB 80 | d3468c8c-3545-4f44-a32f-b465934d2498,CPC_E_2C_8GB_256GB 81 | 2de9c682-ca3f-4f2b-b360-dfc4775db133,CPC_E_4C_16GB_128GB 82 | 9ecf691d-8b82-46cb-b254-cd061b2c02fb,CPC_E_4C_16GB_256GB 83 | 3bba9856-7cf2-4396-904a-00de74fba3a4,CPC_E_4C_16GB_512GB 84 | 2f3cdb12-bcde-4e37-8529-e9e09ec09e23,CPC_E_8C_32GB_128GB 85 | 69dc175c-dcff-4757-8389-d19e76acb45d,CPC_E_8C_32GB_256GB 86 | 0e837228-8250-4047-8a80-d4a34ba11658,CPC_E_8C_32GB_512GB 87 | 51855c77-4d2e-4736-be67-6dca605f2b57,CPC_S_2C_4GB_128GB 88 | aa8fbe7b-695c-4c05-8d45-d1dddf6f7616,CPC_S_2C_4GB_256GB 89 | 64981bdb-a5a6-4a22-869f-a9455366d5bc,CPC_S_2C_4GB_64GB 90 | 057efbfe-a95d-4263-acb0-12b4a31fed8d,CPC_S_2C_8GB_128GB 91 | 50ef7026-6174-40ba-bff7-f0e4fcddbf65,CPC_S_2C_8GB_256GB 92 | dd3801e2-4aa1-4b16-a44b-243e55497584,CPC_S_4C_16GB_128GB 93 | 2d1d344e-d10c-41bb-953b-b3a47521dca0,CPC_S_4C_16GB_256GB 94 | 48b82071-99a5-4214-b493-406a637bd68d,CPC_S_4C_16GB_512GB 95 | e4dee41f-a5c5-457d-b7d3-c309986fdbb2,CPC_S_8C_32GB_128GB 96 | 1e2321a0-f81c-4d43-a0d5-9895125706b8,CPC_S_8C_32GB_256GB 97 | fa0b4021-0f60-4d95-bf68-95036285282a,CPC_S_8C_32GB_512GB 98 | 9d2eed2c-b0c0-4a89-940c-bc303444a41b,CPC_SS_2 99 | 2ba394e0-6f18-4b77-b45f-a5663bbab540,CRM_AUTO_ROUTING_ADDON 100 | 24435e4b-87d0-4d7d-8beb-63a9b1573022,CRM_AUTO_ROUTING_ENGINE_ADDON 101 | 0210d5c8-49d2-4dd1-a01b-a91c7c14e0bf,CRM_HYBRIDCONNECTOR 102 | 1d4e9cb1-708d-449c-9f71-943aa8ed1d6a,CRM_ONLINE_PORTAL 103 | eeea837a-c885-4167-b3d5-ddde30cbd85f,CRMINSTANCE 104 | bf36ca64-95c6-4918-9275-eb9f4ce2c04f,CRMPLAN2 105 | f9646fb2-e3b2-4309-95de-dc4833737456,CRMSTANDARD 106 | 77866113-0f3e-4e6e-9666-b1e25c6f99b0,CRMSTORAGE 107 | a98b7619-66c7-4885-bdfc-1d9c8c3d279f,CRMTESTINSTANCE 108 | 6db1f1db-2b46-403f-be40-e39395f08dbb,CUSTOMER_KEY 109 | e6e35e2d-2e7f-4e71-bc6f-2f40ed062f5d,CUSTOMER_VOICE_ADDON 110 | 296820fe-dce5-40f4-a4f2-e14b8feef383,Customer_Voice_Base 111 | dbe07046-af68-4861-a20d-1c8cbda9194f,CUSTOMER_VOICE_DYN365_VIRAL_TRIAL 112 | 90467813-5b40-40d4-835c-abd48009b1d9,D365_AssetforSCM 113 | 1412cdc1-d593-4ad1-9050-40c30ad0b023,D365_CSI_EMBED_CE 114 | 5b1e5982-0e88-47bb-a95e-ae6085eda612,D365_CSI_EMBED_CSEnterprise 115 | 61a2665f-1873-488c-9199-c3d0bc213fdf,D365_CUSTOMER_SERVICE_ENT_ATTACH 116 | 55c9148b-d5f0-4101-b5a0-b2727cfc0916,D365_FIELD_SERVICE_ATTACH 117 | 9f0e1b4e-9b33-4300-b451-b2c662cd4ff7,D365_Finance 118 | 83dd9619-c7d5-44da-9250-dc4ee79fff7e,D365_IOTFORSCM 119 | a5f38206-2f48-4d83-9957-525f4e75e9c0,D365_IOTFORSCM_ADDITIONAL 120 | 69f07c66-bee4-4222-b051-195095efee5b,D365_ProjectOperations 121 | 18fa3aba-b085-4105-87d7-55617b8585e6,D365_ProjectOperationsCDS 122 | 3ae52229-572e-414f-937c-ff35a87d4f29,D365_SALES_ENT_ATTACH 123 | 065f3c64-0649-4ec7-9f47-ef5cf134c751,D365_SALES_PRO_ATTACH 124 | 73f205fc-6b15-47a5-967e-9e64fdf72d0a,D365_SALES_PRO_IW 125 | db39a47e-1f4f-462b-bf5b-2ec471fb7b88,D365_SALES_PRO_IW_Trial 126 | 1224eae4-0d91-474a-8a52-27ec96a63fe7,D365_SCM 127 | 46129a58-a698-46f0-aa5b-17f6586297d9,DATA_INVESTIGATIONS 128 | 59231cdf-b40d-4534-a93e-14d0cd31d27e,DATAVERSE_FOR_POWERAUTOMATE_DESKTOP 129 | 6f0e9100-ff66-41ce-96fc-3d8b7ad26887,DATAVERSE_POWERAPPS_PER_APP_NEW 130 | d1142cfd-872e-4e77-b6ff-d98ec5a51f66,DDYN365_CDS_DYN_P2 131 | 8c7d2df8-86f0-4902-b2ed-a0458298f3b3,Deskless 132 | 56e3d4ca-2e31-4c3f-8d57-89c1d363503b,DYN365_ ENTERPRISE _RELATIONSHIP_SALES 133 | 4ade5aa6-5959-4d2c-bf0a-f4c9e2cc00f2,DYN365_AI_SERVICE_INSIGHTS 134 | ae6b27b3-fe31-4e77-ae06-ec5fabbc103a,DYN365_BUSCENTRAL_DB_CAPACITY 135 | d397d6c6-9664-4502-b71c-66f39c400ca4,DYN365_BUSCENTRAL_ENVIRONMENT 136 | 8e9002c0-a1d8-4465-b952-817d2948e6e2,DYN365_BUSCENTRAL_PREMIUM 137 | 393a0c96-9ba1-4af0-8975-fa2f853a25ac,DYN365_BUSINESS_Marketing 138 | cf7034ed-348f-42eb-8bbd-dddeea43ee81,DYN365_CDS_CCI_BOTS 139 | d8c638e2-9508-40e3-9877-feb87603837b,DYN365_CDS_DEV_VIRAL 140 | 2d925ad8-2479-4bd8-bb76-5b80f1d48935,DYN365_CDS_DYN_APPS 141 | e95d7060-d4d9-400a-a2bd-a244bf0b609e,DYN365_CDS_FINANCE 142 | a6f677b3-62a6-4644-93e7-2a85d240845e,DYN365_CDS_FOR_PROJECT_P1 143 | 363430d1-e3f7-43bc-b07b-767b6bb95e4b,DYN365_CDS_FORMS_PRO 144 | 1315ade1-0410-450d-b8e3-8050e6da320f,DYN365_CDS_GUIDES 145 | ca6e61ec-d4f4-41eb-8b88-d96e0e14323f,DYN365_CDS_O365_F1 146 | 29007dd3-36c0-4cc2-935d-f5bca2c2c473,DYN365_CDS_O365_F1_GCC 147 | 40b010bb-0b69-4654-ac5e-ba161433f4b4,DYN365_CDS_O365_P1 148 | 8eb5e9bc-783f-4425-921a-c65f45dd72c6,DYN365_CDS_O365_P1_GCC 149 | 4ff01e01-1ba7-4d71-8cf8-ce96c3bbcf14,DYN365_CDS_O365_P2 150 | 06162da2-ebf9-4954-99a0-00fee96f95cc,DYN365_CDS_O365_P2_GCC 151 | 28b0fa46-c39a-4188-89e2-58e979a6b014,DYN365_CDS_O365_P3 152 | a7d3fb37-b6df-4085-b509-50810d991a39,DYN365_CDS_O365_P3_GCC 153 | ce361df2-f2a5-4713-953f-4050ba09aad8,DYN365_CDS_P1_GOV 154 | 6ea4c1ef-c259-46df-bce2-943342cd3cb2,DYN365_CDS_P2 155 | 37396c73-2203-48e6-8be1-d882dae53275,DYN365_CDS_P2_GOV 156 | 50554c47-71d9-49fd-bc54-42a2765c555c,DYN365_CDS_PROJECT 157 | b6a8b974-2956-4e14-ae81-f0384c363528,DYN365_CDS_SUPPLYCHAINMANAGEMENT 158 | 17ab22cd-a0b3-4536-910a-cb6eb12696c0,DYN365_CDS_VIRAL 159 | f69129db-6dc1-4107-855e-0aaebbcd9dd4,DYN365_CS_CHAT 160 | 426ec19c-d5b1-4548-b894-6fe75028c30d,DYN365_CS_CHAT_FPA 161 | 94fb67d3-465f-4d1f-a50a-952da079a564,DYN365_CS_ENTERPRISE_VIRAL_TRIAL 162 | 47c2b191-a5fb-4129-b690-00c474d2f623,DYN365_CS_MESSAGING_TPS 163 | 3bf52bdf-5226-4a97-829e-5cca9b3f3392,DYN365_CS_MESSAGING_VIRAL_TRIAL 164 | f6ec6dfa-2402-468d-a455-89be11116d43,DYN365_CS_VOICE 165 | 3de81e39-4ce1-47f7-a77f-8473d4eb6d7c,DYN365_CS_VOICE_VIRAL_TRIAL 166 | e2bdea63-235e-44c6-9f5e-5b0e783f07dd,DYN365_CUSTOMER_INSIGHTS_ENGAGEMENT_INSIGHTS_BASE_TRIAL 167 | ed8e8769-94c5-4132-a3e7-7543b713d51f,DYN365_CUSTOMER_INSIGHTS_VIRAL 168 | 6929f657-b31b-4947-b4ce-5066c3214f54,DYN365_CUSTOMER_SERVICE_PRO 169 | 2822a3a1-9b8f-4432-8989-e11669a60dc8,DYN365_ENTERPRISE_CASE_MANAGEMENT 170 | 99340b49-fb81-4b1e-976b-8f2ae8e9394f,DYN365_ENTERPRISE_CUSTOMER_SERVICE 171 | 8c66ef8a-177f-4c0d-853c-d4f219331d09,DYN365_ENTERPRISE_FIELD_SERVICE 172 | d56f3deb-50d8-465a-bedb-f079817ccac1,DYN365_ENTERPRISE_P1 173 | 056a5f80-b4e0-4983-a8be-7ad254a113c9,DYN365_ENTERPRISE_P1_IW 174 | 2da8e897-7791-486b-b08f-cc63c8129df7,DYN365_ENTERPRISE_SALES 175 | 643d201a-9884-45be-962a-06ba97062e5e,DYN365_Enterprise_Talent_Attract_TeamMember 176 | f2f49eef-4b3f-4853-809a-a055c6103fe0,DYN365_Enterprise_Talent_Onboard_TeamMember 177 | 6a54b05e-4fab-40e7-9828-428db3b336fa,DYN365_ENTERPRISE_TEAM_MEMBERS 178 | 170991d7-b98e-41c5-83d4-db2052e1795f,DYN365_FINANCIALS_ACCOUNTANT 179 | 920656a2-7dd8-4c83-97b6-a356414dbd36,DYN365_FINANCIALS_BUSINESS 180 | d9a6391b-8970-4976-bd94-5f205007c8d8,DYN365_FINANCIALS_TEAM_MEMBERS 181 | 20d1455b-72b2-4725-8354-a177845ab77d,DYN365_FS_ENTERPRISE_VIRAL_TRIAL 182 | e626a4ec-1ba2-409e-bf75-9bc0bc30cca7,DYN365_MARKETING_50K_CONTACT_ADDON 183 | a3a4fa10-5092-401a-af30-0462a95a7ac8,DYN365_MARKETING_APP 184 | 51cf0638-4861-40c0-8b20-1161ab2f80be,DYN365_MARKETING_APPLICATION_ADDON 185 | 2824c69a-1ac5-4397-8592-eae51cb8b581,DYN365_MARKETING_MSE_USER 186 | 1599de10-5250-4c95-acf2-491f74edce48,DYN365_MARKETING_SANDBOX_APPLICATION_ADDON 187 | 5d7a6abc-eebd-46ab-96e1-e4a2f54a2248,DYN365_MARKETING_USER 188 | c7657ae3-c0b0-4eed-8c1d-6a7967bd9c65,DYN365_REGULATORY_SERVICE 189 | ceb28005-d758-4df7-bb97-87a617b93d6c,DYN365_RETAIL_DEVICE 190 | 7f636c80-0961-41b2-94da-9642ccf02de0,DYN365_SALES_ENTERPRISE_VIRAL_TRIAL 191 | fedc185f-0711-4cc0-80ed-0a92da1a8384,DYN365_SALES_INSIGHTS 192 | 456747c0-cf1e-4b0d-940f-703a01b964cc,DYN365_SALES_INSIGHTS_VIRAL_TRIAL 193 | 88d83950-ff78-4e85-aa66-abfc787f8090,DYN365_SALES_PRO 194 | 65a1ebf4-6732-4f00-9dcb-3d115ffdeecd,DYN365_TALENT_ENTERPRISE 195 | 4092fdb5-8d81-41d3-be76-aaba4074530b,DYN365_TEAM_MEMBERS 196 | 39b5c996-467e-4e60-bd62-46066f572726,DYN365BC_MS_INVOICING 197 | 5ed38b64-c3b7-4d9f-b1cd-0de18c9c4331,Dynamics_365_for_HCM_Trial 198 | 95d2cd7b-1007-484b-8595-5e97e63fe189,Dynamics_365_for_Operations 199 | d8ba6fb2-c6b1-4f07-b7c8-5f2745e36b54,Dynamics_365_for_Operations_Sandbox_Tier2 200 | f6b5efb1-1813-426f-96d0-9b4f7438714f,Dynamics_365_for_Operations_Sandbox_Tier4 201 | f5aa7b45-8a36-4cd1-bc37-5d06dea98645,DYNAMICS_365_FOR_OPERATIONS_TEAM_MEMBERS 202 | 2c9fb43e-915a-4d61-b6ca-058ece89fd66,Dynamics_365_for_OperationsDevices 203 | a9e39199-8369-444b-89c1-5fe65ec45665,Dynamics_365_for_Retail 204 | c0454a3d-32b5-4740-b090-78c32f48f0ad,Dynamics_365_for_Retail_Team_members 205 | d5156635-0704-4f66-8803-93258f8b2678,DYNAMICS_365_FOR_TALENT_TEAM_MEMBERS 206 | f815ac79-c5dd-4bcc-9b78-d97f7b817d0d,DYNAMICS_365_HIRING_FREE_PLAN 207 | 300b8114-8555-4313-b861-0c115d820f50,Dynamics_365_Onboarding_Free_PLAN 208 | 048a552e-c849-4027-b54c-4c7ead26150a,Dynamics_365_Talent_Onboard 209 | 33f1466e-63a6-464c-bf6a-d1787928a56a,DYNB365_CSI_VIRAL_TRIAL 210 | a9b86446-fa4e-498f-a92a-41b447e03337,EducationAnalyticsP1 211 | 326e2b78-9d27-42c9-8509-46c827743a17,EOP_ENTERPRISE 212 | 75badc48-628e-4446-8460-41344d73abd6,EOP_ENTERPRISE_PREMIUM 213 | 4de31727-a228-4ec3-a5bf-8e45b5ca48cc,EQUIVIO_ANALYTICS 214 | d1cbfb67-18a8-4792-b643-630b7f19aad1,EQUIVIO_ANALYTICS_GOV 215 | e2f705fd-2468-4090-8c58-fad6e6b1e724,ERP_TRIAL_INSTANCE 216 | 531ee2f8-b1cb-453b-9c21-d2180d014ca5,EXCEL_PREMIUM 217 | 34c0d7a0-a70f-4668-9238-47f9fc208882,EXCHANGE_ANALYTICS 218 | 208120d1-9adb-4daf-8c22-816bd5d237e7,EXCHANGE_ANALYTICS_GOV 219 | 90927877-dcff-4af6-b346-2332c0b15bb7,EXCHANGE_B_STANDARD 220 | 922ba911-5694-4e99-a794-73aed9bfeec8,EXCHANGE_FOUNDATION_GOV 221 | d42bdbd6-c335-4231-ab3d-c8f348d5aff5,EXCHANGE_L_STANDARD 222 | da040e0a-b393-4bea-bb76-928b3fa1cf5a,EXCHANGE_S_ARCHIVE 223 | 176a09a6-7ec5-4039-ac02-b2791c6ba793,EXCHANGE_S_ARCHIVE_ADDON 224 | 4a82b400-a79f-41a4-b4e2-e94f5787b113,EXCHANGE_S_DESKLESS 225 | 88f4d7ef-a73b-4246-8047-516022144c9f,EXCHANGE_S_DESKLESS_GOV 226 | efb87545-963c-4e0d-99df-69c6916d9eb0,EXCHANGE_S_ENTERPRISE 227 | 8c3069c0-ccdb-44be-ab77-986203a67df2,EXCHANGE_S_ENTERPRISE_GOV 228 | 1126bef5-da20-4f07-b45e-ad25d2581aa8,EXCHANGE_S_ESSENTIALS 229 | 113feb6c-3fe4-4440-bddc-54d774bf0318,EXCHANGE_S_FOUNDATION 230 | 9aaf7827-d63c-4b61-89c3-182f06f82e5c,EXCHANGE_S_STANDARD 231 | e9b4930a-925f-45e2-ac2a-3f7788ca6fdd,EXCHANGE_S_STANDARD_GOV 232 | fc52cc4b-ed7d-472d-bbe7-b081c23ecc56,EXCHANGE_S_STANDARD_MIDMARKET 233 | 897d51f1-2cfa-4848-9b30-469149f5e68e,EXCHANGEONLINE_MULTIGEO 234 | b83a66d4-f05f-414d-ac0f-ea1c5239c42b,EXPERTS_ON_DEMAND 235 | 7e017b61-a6e0-4bdc-861a-932846591f6e,FLOW_BUSINESS_PROCESS 236 | 5d798708-6473-48ad-9776-3acc301c40af,FLOW_CCI_BOTS 237 | 0368fc9c-3721-437f-8b7d-3d0f888cdefc,FLOW_CUSTOMER_SERVICE_PRO 238 | c7ce3f26-564d-4d3a-878d-d8ab868c85fe,FLOW_DEV_VIRAL 239 | 7e6d7d78-73de-46ba-83b1-6d25117334ba,FLOW_DYN_APPS 240 | b650d915-9886-424b-a08d-633cede56f57,FLOW_DYN_P2 241 | 1ec58c70-f69c-486a-8109-4b87ce86e449,FLOW_DYN_TEAM 242 | fa200448-008c-4acb-abd4-ea106ed2199d,FLOW_FOR_PROJECT 243 | 57a0746c-87b8-4405-9397-df365a9db793,FLOW_FORMS_PRO 244 | 0f9b09cb-62d1-4ff4-9129-43f4996f83f4,FLOW_O365_P1 245 | ad6c8870-6356-474c-901c-64d7da8cea48,FLOW_O365_P1_GOV 246 | 76846ad7-7776-4c40-a281-a386362dd1b9,FLOW_O365_P2 247 | c537f360-6a00-4ace-a7f5-9128d0ac1e4b,FLOW_O365_P2_GOV 248 | 07699545-9485-468e-95b6-2fca3738be01,FLOW_O365_P3 249 | 8055d84a-c172-42eb-b997-6c2ae4628246,FLOW_O365_P3_GOV 250 | bd91b1a4-9f94-4ecf-b45b-3a65e5c8128a,FLOW_O365_S1 251 | 5d32692e-5b24-4a59-a77e-b2a8650e25c1,FLOW_O365_S1_GOV 252 | 774da41c-a8b3-47c1-8322-b9c1ab68be9f,FLOW_P1_GOV 253 | 56be9436-e4b2-446c-bb7f-cc15d16cca4d,FLOW_P2 254 | 50e68c76-46c6-4674-81f9-75456511b170,FLOW_P2_VIRAL 255 | d20bfa21-e9ae-43fc-93c2-20783f0840c3,FLOW_P2_VIRAL_REAL 256 | c539fa36-a64e-479a-82e1-e40ff2aa83ee,Flow_Per_APP 257 | dd14867e-8d31-4779-a595-304405f5ad39,Flow_Per_APP_IWTRIAL 258 | c5002c70-f725-4367-b409-f0eff4fee6c0,FLOW_PER_USER 259 | 769b8bee-2779-4c5a-9456-6f4f8629fd41,FLOW_PER_USER_GCC 260 | dc789ed8-0170-4b65-a415-eb77d5bb350a,Flow_PowerApps_PerUser 261 | 8e3eb3bd-bc99-4221-81b8-8b8bc882e128,Flow_PowerApps_PerUser_GCC 262 | 4b81a949-69a1-4409-ad34-9791a6ec88aa,FLOW_VIRTUAL_AGENT_BASE 263 | 82f141c9-2e87-4f43-8cb2-12d2701dc6b3,FLOW_VIRTUAL_AGENT_USL 264 | f4cba850-4f34-4fd2-a341-0fddfdce1e8f,FORMS_GOV_E1 265 | 24af5f65-d0f3-467b-9f78-ea798c4aeffc,FORMS_GOV_E3 266 | 843da3a8-d2cc-4e7a-9e90-dc46019f964c,FORMS_GOV_E5 267 | bfd4133a-bbf3-4212-972b-60412137c428,FORMS_GOV_F1 268 | 159f4cd6-e380-449f-a816-af1a9ef76344,FORMS_PLAN_E1 269 | 2789c901-c14e-48ab-a76a-be334d9d793a,FORMS_PLAN_E3 270 | e212cbc7-0961-4c40-9825-01117710dcb1,FORMS_PLAN_E5 271 | f07046bd-2a3c-4b96-b0be-dea79d7cbfb8,FORMS_PLAN_K 272 | 17efdd9f-c22c-4ad8-b48e-3b1f3ee1dc9a,FORMS_PRO 273 | 90a816f6-de5f-49fd-963c-df490d73b7b5,Forms_Pro_AddOn 274 | 97f29a83-1a20-44ff-bf48-5e4ad11f3e51,Forms_Pro_CE 275 | fe581650-cf61-4a09-8814-4bd77eca9cb5,Forms_Pro_Customer_Insights 276 | 9c439259-63b0-46cc-a258-72be4313a42d,Forms_Pro_FS 277 | 76366ba0-d230-47aa-8087-b6d55dae454f,Forms_Pro_Marketing 278 | 22b657cf-0a9e-467b-8a91-5e31f21bc570,Forms_Pro_Marketing_App 279 | 507172c0-6001-4f4f-80e7-f350507af3e5,Forms_Pro_Relationship_Sales 280 | 8839ef0e-91f1-4085-b485-62e06e7c7987,Forms_Pro_SalesEnt 281 | 67bf4812-f90b-4db9-97e7-c0bbbf7b2d09,Forms_Pro_Service 282 | 3ca0766a-643e-4304-af20-37f02726339b,Forms_Pro_USL 283 | a6520331-d7d4-4276-95f5-15c0933bc757,GRAPH_CONNECTORS_SEARCH_INDEX 284 | b74d57b2-58e9-484a-9731-aeccbba954f0,GRAPH_CONNECTORS_SEARCH_INDEX_TOPICEXP 285 | 0b2c029c-dca0-454a-a336-887285d6ef07,GUIDES 286 | e26c2fcc-ab91-4a61-b35c-03cdc8dddf66,INFO_GOVERNANCE 287 | c4801e8a-cb58-4c35-aca6-f2dcc106f287,INFORMATION_BARRIERS 288 | d587c7a3-bda9-4f99-8776-9bcf59c84f75,INSIDER_RISK 289 | 9d0c4ee5-e4a1-4625-ab39-d82b619b1a34,INSIDER_RISK_MANAGEMENT 290 | f00bd55e-1633-416e-97c0-03684e42bc42,Intelligent_Content_Services 291 | fd2e7f90-1010-487e-a11b-d2b1ae9651fc,Intelligent_Content_Services_SPO_type 292 | c1ec4a95-1f05-45b3-a911-aa3fa01094f5,INTUNE_A 293 | 2a4baa0e-5e99-4c38-b1f2-6864960f1bd1,Intune_AdvancedEA 294 | 1689aade-3d6a-4bfc-b017-46d2672df5ad,Intune_Defender 295 | da24caf9-af8e-485c-b7c8-e73336da2693,INTUNE_EDU 296 | 882e1d05-acd1-4ccb-8708-6ee03664b117,INTUNE_O365 297 | d9923fe3-a2de-4d29-a5be-e3e83bb786be,INTUNE_P2 298 | 8e9ff0ff-aa7a-4b20-83c1-2f636b600ac2,INTUNE_SMBIZ 299 | bb73f429-78ef-4ff2-83c8-722b04c3e7d1,Intune-EPM 300 | a6e407da-7411-4397-8a2e-d9b52780849e,Intune-MAMTunnel 301 | d736def0-1fde-43f0-a5be-e3f8b2de6e41,IT_ACADEMY_AD 302 | 73b2a583-6a59-42e3-8e83-54db46bc3278,KAIZALA_O365_P1 303 | 54fc630f-5a40-48ee-8965-af0503c1386e,KAIZALA_O365_P2 304 | aebd3021-9f8f-4bf8-bbe3-0ed2f4f047a1,KAIZALA_O365_P3 305 | 0898bdbb-73b0-471a-81e5-20f1fe4dd66e,KAIZALA_STANDALONE 306 | 9f431833-0334-42de-a7dc-70aa40db46db,LOCKBOX_ENTERPRISE 307 | 89b5d3b1-3855-49fe-b46c-87c66dbc1526,LOCKBOX_ENTERPRISE_GOV 308 | 2f442157-a11c-46b9-ae5b-6e39ff4e5849,M365_ADVANCED_AUDITING 309 | f6de4823-28fa-440b-b886-4783fa86ddba,M365_AUDIT_PLATFORM 310 | 6f23d6a9-adbf-481c-8538-b4c095654487,M365_LIGHTHOUSE_CUSTOMER_PLAN1 311 | d55411c9-cfff-40a9-87c7-240f14df7da5,M365_LIGHTHOUSE_PARTNER_PLAN1 312 | 42a3ec34-28ba-46b6-992f-db53a675ac5b,MCO_TEAMS_IW 313 | 711413d0-b36e-4cd4-93db-0a50a4ab7ea3,MCO_VIRTUAL_APPT 314 | 4828c8ec-dc2e-4779-b502-87ac9ce28ab7,MCOEV 315 | db23fce2-a974-42ef-9002-d78dd42a0f22,MCOEV_GOV 316 | f47330e9-c134-43b3-9993-e7f004506889,MCOEV_VIRTUALUSER 317 | 0628a73f-3b4a-4989-bd7b-0f8823144313,MCOEV_VIRTUALUSER_GOV 318 | ed777b71-af04-42ca-9798-84344c66f7c6,MCOEVSMB 319 | 617d9209-3b90-4879-96e6-838c42b2701d,MCOFREE 320 | afc06cb0-b4f4-4473-8286-d644f70d8faf,MCOIMP 321 | 8a9f17f1-5872-44e8-9b11-3caade9dc90f,MCOIMP_GOV 322 | 70710b6b-3ab4-4a38-9f6d-9f169461650a,MCOLITE 323 | bb038288-76ab-49d6-afc1-eaa6c222c65a,MCOMEETACPEA 324 | 3e26ee1f-8a5f-4d52-aee2-b81ce45c8f40,MCOMEETADV 325 | f544b08d-1645-4287-82de-8d91f37c02a1,MCOMEETADV_GOV 326 | 9974d6cf-cd24-4ba2-921c-e2aa687da846,MCOMEETBASIC 327 | 4ed3ff63-69d7-4fb7-b984-5aec7f605ca8,MCOPSTN1 328 | 3c8a8792-7866-409b-bb61-1b20ace0368b,MCOPSTN1_GOV 329 | 5a10155d-f5c1-411a-a8ec-e99aae125390,MCOPSTN2 330 | 6b340437-d6f9-4dc5-8cc2-99163f7f83d6,MCOPSTN3 331 | 54a152dc-90de-4996-93d2-bc47e670fc06,MCOPSTN5 332 | 16935b20-87c0-4908-934a-22aa267d0d26,MCOPSTN8 333 | 505e180f-f7e0-4b65-91d4-00d670bbd18c,MCOPSTNC 334 | 7861360b-dc3b-4eba-a3fc-0d323a035746,MCOPSTNEAU 335 | 0feaeb32-d00e-4d66-bd5a-43b5b83db82c,MCOSTANDARD 336 | a31ef4a2-f787-435e-8335-e47eb0cafc94,MCOSTANDARD_GOV 337 | b2669e95-76ef-4e7e-a367-002f60a39f3e,MCOSTANDARD_MIDMARKET 338 | 27216c54-caf8-4d0d-97e2-517afb5c08f6,MCOVOICECONF 339 | 292cc034-7b7c-4950-aaf5-943befd3f1d4,MDE_LITE 340 | bfc1bbd9-981b-4f71-9b82-17c35fd0e2a4,MDE_SMB 341 | 3413916e-ee66-4071-be30-6f94d4adfeda,MDM_SALES_COLLABORATION 342 | 8a256a2b-b617-496d-b51b-e76466e88db0,MFA_PREMIUM 343 | 5f3b1ded-75c0-4b31-8e6e-9b077eaadfd5,MICROSOFT_APPLICATION_PROTECTION_AND_GOVERNANCE_A 344 | 2e6ffd72-52d1-4541-8f6c-938f9a8d4cdc,MICROSOFT_APPLICATION_PROTECTION_AND_GOVERNANCE_D 345 | cca845f9-fd51-4df6-b563-976a37c56ce0,MICROSOFT_BUSINESS_CENTER 346 | a413a9ff-720c-4822-98ef-2f37c2a21f4c,MICROSOFT_COMMUNICATION_COMPLIANCE 347 | 85704d55-2e73-47ee-93b4-4b8ea14db92b,MICROSOFT_ECDN 348 | 4f4c7800-298a-4e22-8867-96b17850d4dd,MICROSOFT_REMOTE_ASSIST 349 | 94065c59-bc8e-4e8b-89e5-5138d471eaff,MICROSOFT_SEARCH 350 | a933a62f-c3fb-48e5-a0b7-ac92b94b4420,Microsoft_Viva_Sales_PowerAutomate 351 | 8ba1ff15-7bf6-4620-b65c-ecedb6942766,Microsoft_Viva_Sales_PremiumTrial 352 | 199a5c09-e0ca-4e37-8f7c-b05d533e1ea2,MICROSOFTBOOKINGS 353 | 64bfac92-2b17-4482-b5e5-a0304429de3e,MICROSOFTENDPOINTDLP 354 | acffdce6-c30f-4dc2-81c0-372e33c515ec,MICROSOFTSTREAM 355 | 4c246bbc-f513-4311-beff-eba54c353256,MINECRAFT_EDUCATION_EDITION 356 | 5136a095-5cf0-4aff-bec3-e84448b38ea5,MIP_S_CLP1 357 | efb0351d-3b08-4503-993d-383af8de41e3,MIP_S_CLP2 358 | cd31b152-6326-4d1b-ae1b-997b625182e6,MIP_S_Exchange 359 | 5b96ffc4-3853-4cf4-af50-e38505080f6b,MIP_S_EXCHANGE_CO 360 | d2d51368-76c9-4317-ada2-a12c004c432f,ML_CLASSIFICATION 361 | bdaa59a3-74fd-4137-981a-31d4f84eb8a0,MMR_P1 362 | bf28f719-7844-4079-9c78-c1307898e192,MTP 363 | 33c4f319-9bdd-48d6-9c4d-410b750a4a5a,MYANALYTICS_P2 364 | 6e5b7995-bd4f-4cbd-9d19-0e32010c72f0,MYANALYTICS_P2_GOV 365 | 03acaee3-9492-4f40-aed4-bcb6b32981b6,NBENTERPRISE 366 | 3e58e97c-9abe-ebab-cd5f-d543d1529634,NBPROFESSIONALFORCRM 367 | 7dbc2d88-20e2-4eb6-b065-4510b38d6eb2,NONPROFIT_PORTAL 368 | db4d623d-b514-490b-b7ef-8885eee514de,Nucleus 369 | 5bfe124c-bbdc-4494-8835-f1297d457d79,O365_SB_Relationship_Management 370 | 094e7854-93fc-4d55-b2c0-3ab5369ebdc1,OFFICE_BUSINESS 371 | 9b5de886-f035-4ff2-b3d8-c9127bea3620,OFFICE_FORMS_PLAN_2 372 | 96c1e14a-ef43-418d-b115-9636cdaa8eed,OFFICE_FORMS_PLAN_3 373 | 8ca59559-e2ca-470b-b7dd-afd8c0dee963,OFFICE_PRO_PLUS_SUBSCRIPTION_SMBIZ 374 | 3c994f28-87d5-4273-b07a-eb6190852599,OFFICE_PROPLUS_DEVICE 375 | 276d6e8a-f056-4f70-b7e8-4fc27f79f809,OFFICE_SHARED_COMPUTER_ACTIVATION 376 | c63d4d19-e8cb-460e-b37c-4d6c34603745,OFFICEMOBILE_SUBSCRIPTION 377 | 4ccb60ee-9523-48fd-8f63-4b090f1ad77a,OFFICEMOBILE_SUBSCRIPTION_GOV 378 | 43de0ff5-c92c-492b-9116-175376d08c38,OFFICESUBSCRIPTION 379 | de9234ff-6483-44d9-b15e-dca72fdd27af,OFFICESUBSCRIPTION_GOV 380 | 8d77e2d9-9e28-4450-8431-0def64078fc5,OFFICESUBSCRIPTION_unattended 381 | da792a53-cbc0-4184-a10d-e544dd34b3c1,ONEDRIVE_BASIC 382 | 98709c2e-96b5-4244-95f5-a0ebe139fb8a,ONEDRIVE_BASIC_GOV 383 | 4495894f-534f-41ca-9d3b-0ebf1220a423,ONEDRIVE_BASIC_P2 384 | afcafa6a-d966-4462-918c-ec0b4e0fe642,ONEDRIVEENTERPRISE 385 | 13696edf-5a08-49f6-8134-03083ed8ba30,ONEDRIVESTANDARD 386 | b1188c4c-1b36-4018-b48b-ee07604f6feb,PAM_ENTERPRISE 387 | 9da49a6d-707a-48a1-b44a-53dcde5267f8,PBI_PREMIUM_P1_ADDON 388 | 54b37829-818e-4e3c-a08a-3ea66ab9b45d,POWER_APPS_DYN365_VIRAL_TRIAL 389 | 375cd0ad-c407-49fd-866a-0bff4f8a9a4d,POWER_AUTOMATE_ATTENDED_RPA 390 | 81d4ecb8-0481-42fb-8868-51536c5aceeb,POWER_AUTOMATE_DYN365_VIRAL_TRIAL 391 | 00283e6b-2bd8-440f-a2d5-87358e4c89a1,Power_Automate_For_Project_P1 392 | 0d373a98-a27a-426f-8993-f9a425ae99c5,POWER_AUTOMATE_UNATTENDED_RPA 393 | 60bf28f9-2b70-4522-96f7-335f5e06c941,Power_Pages_Internal_User 394 | 6817d093-2d30-4249-8bd6-774f01efa78c,POWER_PAGES_VTRIAL 395 | 19e4c3a8-3ebe-455f-a294-4f3479873ae3,POWER_VIRTUAL_AGENTS_D365_CS_CHAT 396 | 2d2f174c-c3cc-4abe-9ce8-4dd86f469ab1,POWER_VIRTUAL_AGENTS_D365_CS_MESSAGING 397 | a3dce1be-e9ca-453a-9483-e69a5b46ce98,POWER_VIRTUAL_AGENTS_D365_CS_VOICE 398 | ba2fdb48-290b-4632-b46a-e4ecc58ac11a,POWER_VIRTUAL_AGENTS_O365_F1 399 | 0683001c-0492-4d59-9515-d9a6426b5813,POWER_VIRTUAL_AGENTS_O365_P1 400 | 041fe683-03e4-45b6-b1af-c0cdc516daee,POWER_VIRTUAL_AGENTS_O365_P2 401 | ded3d325-1bdc-453e-8432-5bac26d7a014,POWER_VIRTUAL_AGENTS_O365_P3 402 | c507b04c-a905-4940-ada6-918891e6d3ad,POWERAPPS_CUSTOMER_SERVICE_PRO 403 | a2729df7-25f8-4e63-984b-8a8484121554,POWERAPPS_DEV_VIRAL 404 | 874fc546-6efe-4d22-90b8-5c4e7aa59f4b,POWERAPPS_DYN_APPS 405 | 0b03f40b-c404-40c3-8651-2aceb74365fa,POWERAPPS_DYN_P2 406 | 52e619e2-2730-439a-b0d3-d09ab7e8b705,POWERAPPS_DYN_TEAM 407 | 816971f4-37c5-424a-b12b-b56881f402e7,POWERAPPS_GUIDES 408 | 92f7a6f3-b89b-4bbd-8c30-809e6da5ad1c,POWERAPPS_O365_P1 409 | c42aa49a-f357-45d5-9972-bc29df885fee,POWERAPPS_O365_P1_GOV 410 | c68f8d98-5534-41c8-bf36-22fa496fa792,POWERAPPS_O365_P2 411 | 0a20c815-5e81-4727-9bdc-2b5a117850c3,POWERAPPS_O365_P2_GOV 412 | 9c0dab89-a30c-4117-86e7-97bda240acd2,POWERAPPS_O365_P3 413 | 0eacfc38-458a-40d3-9eab-9671258f1a3e,POWERAPPS_O365_P3_GOV 414 | e0287f9f-e222-4f98-9a83-f379e249159a,POWERAPPS_O365_S1 415 | 49f06c3d-da7d-4fa0-bcce-1458fdd18a59,POWERAPPS_O365_S1_GOV 416 | 5ce719f1-169f-4021-8a64-7d24dcaec15f,POWERAPPS_P1_GOV 417 | 00527d7f-d5bc-4c2a-8d1e-6c0de2410c81,POWERAPPS_P2 418 | d5368ca3-357e-4acb-9c21-8495fb025d1f,POWERAPPS_P2_VIRAL 419 | b4f657ff-d83e-4053-909d-baa2b595ec97,POWERAPPS_PER_APP 420 | 35122886-cef5-44a3-ab36-97134eabd9ba,POWERAPPS_PER_APP_IWTRIAL 421 | 14f8dac2-0784-4daa-9cb2-6d670b088d64,POWERAPPS_PER_APP_NEW 422 | ea2cf03b-ac60-46ae-9c1d-eeaeb63cec86,POWERAPPS_PER_USER 423 | 8f55b472-f8bf-40a9-be30-e29919d4ddfe,POWERAPPS_PER_USER_GCC 424 | 084747ad-b095-4a57-b41f-061d84d69f6f,POWERAPPS_PORTALS_LOGIN 425 | bea6aef1-f52d-4cce-ae09-bed96c4b1811,POWERAPPS_PORTALS_LOGIN_GCC 426 | 1c5a559a-ec06-4f76-be5b-6a315418495f,POWERAPPS_PORTALS_PAGEVIEW 427 | 483d5646-7724-46ac-ad71-c78b7f099d8d,POWERAPPS_PORTALS_PAGEVIEW_GCC 428 | 6f9f70ce-138d-49f8-bb8b-2e701b7dde75,POWERAPPS_SALES_PRO 429 | e61a2945-1d4e-4523-b6e7-30ba39d20f32,POWERAPPSFREE 430 | 2d589a15-b171-4e61-9b5f-31d15eeb2872,POWERAUTOMATE_DESKTOP_FOR_WIN 431 | 0b4346bb-8dc3-4079-9dfc-513696f56039,POWERFLOWSFREE 432 | 2c4ec2dc-c62d-4167-a966-52a3e6374015,POWERVIDEOSFREE 433 | 617b097b-4b93-4ede-83de-5f075bb5fb2f,PREMIUM_ENCRYPTION 434 | 8bbd1fea-6dc6-4aef-8abc-79af22d746e4,PRIVACY_MANGEMENT_DSR 435 | 07a4098c-3f2d-427f-bfe2-5889ed75dd7b,PRIVACY_MANGEMENT_DSR_1 436 | 74853901-d7a9-428e-895d-f4c8687a9f0b,PRIVACY_MANGEMENT_DSR_10 437 | 500f440d-167e-4030-a3a7-8cd35421fbd8,PRIVACY_MANGEMENT_DSR_100 438 | 7ca7f875-98db-4458-ab1b-47503826dd73,PRIVACY_MANGEMENT_DSR_EXCHANGE 439 | 93d24177-c2c3-408a-821d-3d25dfa66e7a,PRIVACY_MANGEMENT_DSR_EXCHANGE_1 440 | f0241705-7b44-4401-a6b6-7055062b5b03,PRIVACY_MANGEMENT_DSR_EXCHANGE_10 441 | 5c221cec-2c39-435b-a1e2-7cdd7fac5913,PRIVACY_MANGEMENT_DSR_EXCHANGE_100 442 | f281fb1f-99a7-46ab-9edb-ffd74e260ed3,PRIVACY_MANGEMENT_RISK 443 | ebb17a6e-6002-4f65-acb0-d386480cebc1,PRIVACY_MANGEMENT_RISK_EXCHANGE 444 | fafd7243-e5c1-4a3a-9e40-495efcb1d3c3,PROJECT_CLIENT_SUBSCRIPTION 445 | 45c6831b-ad74-4c7f-bd03-7c2b3fa39067,PROJECT_CLIENT_SUBSCRIPTION_GOV 446 | 1259157c-8581-4875-bca7-2ffb18c51bda,PROJECT_ESSENTIALS 447 | fdcb7064-f45c-46fa-b056-7e0e9fdf4bf3,PROJECT_ESSENTIALS_GOV 448 | 0a05d977-a21a-45b2-91ce-61c240dbafa2,PROJECT_FOR_PROJECT_OPERATIONS 449 | 3f2afeed-6fb5-4bf9-998f-f2912133aead,PROJECT_MADEIRA_PREVIEW_IW 450 | 7f6f28c2-34bb-4d4b-be36-48ca2e77e1ec,PROJECT_O365_F3 451 | a55dfd10-0864-46d9-a3cd-da5991a3e0e2,PROJECT_O365_P1 452 | 31b4e2fc-4cd6-4e7d-9c1b-41407303bd66,PROJECT_O365_P2 453 | b21a6b06-1988-436e-a07b-51ec6d9f52ad,PROJECT_O365_P3 454 | 4a12c688-56c6-461a-87b1-30d6f32136f9,PROJECT_P1 455 | 818523f5-016b-4355-9be8-ed6944946ea7,PROJECT_PROFESSIONAL 456 | 22572403-045f-432b-a660-af949c0a77b5,PROJECT_PROFESSIONAL_FACULTY 457 | b737dad2-2f6c-4c65-90e3-ca563267e8b9,PROJECTWORKMANAGEMENT 458 | 5b4ef465-7ea1-459a-9f91-033317755a51,PROJECTWORKMANAGEMENT_GOV 459 | 65cc641f-cccd-4643-97e0-a17e3045e541,RECORDS_MANAGEMENT 460 | a4c6cf29-1168-4076-ba5c-e8fe0e62b17e,REMOTE_HELP 461 | 7a39d7dd-e456-4e09-842a-0204ee08187b,RMS_S_ADHOC 462 | 31cf2cfc-6b0d-4adc-a336-88b724ed8122,RMS_S_BASIC 463 | bea4c11e-220a-4e6d-8eb8-8ea15d019f90,RMS_S_ENTERPRISE 464 | 6a76346d-5d6e-4051-9fe3-ed3f312b5597,RMS_S_ENTERPRISE_GOV 465 | 6c57d4b6-3b23-47a5-9bc9-69f17b4947b3,RMS_S_PREMIUM 466 | 1b66aedf-8ca1-4f73-af76-ec76c6180f98,RMS_S_PREMIUM_GOV 467 | 5689bec4-755d-4753-8b61-40975025187c,RMS_S_PREMIUM2 468 | 5400a66d-eaa5-427d-80f2-0f26d59d8fce,RMS_S_PREMIUM2_GOV 469 | bf6f5520-59e3-4f82-974b-7dbbc4fd27c7,SAFEDOCS 470 | c33802dd-1b50-4b9a-8bb9-f13d2cdeadac,SCHOOL_DATA_SYNC_P1 471 | 500b6a2a-7a50-4f40-b5f9-160e5b8c2f48,SCHOOL_DATA_SYNC_P2 472 | f9c43823-deb4-46a8-aa65-8b551f0c4f8a,SharePoint Plan 1G 473 | fe71d6c3-a2ea-4499-9778-da042bf08063,SHAREPOINT_PROJECT 474 | 664a2fed-6c7a-468e-af35-d61740f0ec90,SHAREPOINT_PROJECT_EDU 475 | e57afa78-1f19-4542-ba13-b32cd4d8f472,SHAREPOINT_PROJECT_GOV 476 | a361d6e2-509e-4e25-a8ad-950060064ef4,SHAREPOINT_S_DEVELOPER 477 | 902b47e5-dcb2-4fdc-858b-c63a90a2bdb9,SHAREPOINTDESKLESS 478 | b1aeb897-3a19-46e2-8c27-a609413cf193,SHAREPOINTDESKLESS_GOV 479 | 5dbe027f-2339-4123-9542-606e4d348a72,SHAREPOINTENTERPRISE 480 | 63038b2c-28d0-45f6-bc36-33062963b498,SHAREPOINTENTERPRISE_EDU 481 | 153f85dd-d912-4762-af6c-d6e0fb4f6692,SHAREPOINTENTERPRISE_GOV 482 | 6b5b6a67-fc72-4a1f-a2b5-beecf05de761,SHAREPOINTENTERPRISE_MIDMARKET 483 | a1f3d0a8-84c0-4ae0-bae4-685917b8ab48,SHAREPOINTLITE 484 | 735c1d98-dd3f-4818-b4ed-c8052e18e62d,SHAREPOINTONLINE_MULTIGEO 485 | c7699d2e-19aa-44de-8edf-1736da088ca1,SHAREPOINTSTANDARD 486 | 0a4983bb-d3e5-4a09-95d8-b2d0127b3df5,SHAREPOINTSTANDARD_EDU 487 | be5a7ed5-c598-4fcd-a061-5e6724c68a58,SHAREPOINTSTORAGE 488 | e5bb877f-6ac9-4461-9e43-ca581543ab16,SHAREPOINTSTORAGE_GOV 489 | e95bec33-7c88-4a70-8e19-b10bd9d0c014,SHAREPOINTWAC 490 | 527f7cdd-0e86-4c47-b879-f5fd357a3ac6,SHAREPOINTWAC_DEVELOPER 491 | e03c7e47-402c-463c-ab25-949079bedb21,SHAREPOINTWAC_EDU 492 | 8f9f0f3b-ca90-406c-a842-95579171f8ec,SHAREPOINTWAC_GOV 493 | 339f4def-5ad8-4430-8d12-da5fd4c769a7,SOCIAL_ENGAGEMENT_APP_USER 494 | 0bfc98ed-1dbc-4a97-b246-701754e48b17,SPZA 495 | fc0a60aa-feee-4746-a0e3-aecfe81a38dd,SQL_IS_SSIM 496 | 743dd19e-1ce3-4c62-a3ad-49ba8f63a2f6,STREAM_O365_E1 497 | 15267263-5986-449d-ac5c-124f3b49b2d6,STREAM_O365_E1_GOV 498 | 9e700747-8b1d-45e5-ab8d-ef187ceec156,STREAM_O365_E3 499 | 2c1ada27-dbaa-46f9-bda6-ecb94445f758,STREAM_O365_E3_GOV 500 | 6c6042f5-6f01-4d67-b8c1-eb99d36eed3e,STREAM_O365_E5 501 | 92c2089d-9a53-49fe-b1a6-9e6bdf959547,STREAM_O365_E5_GOV 502 | 3ffba0d2-38e5-4d5e-8ec0-98f2b05c09d9,STREAM_O365_K 503 | d65648f1-9504-46e4-8611-2658763f28b8,STREAM_O365_K_GOV 504 | 3c53ea51-d578-46fa-a4c0-fd0a92809a60,STREAM_O365_SMB 505 | d3a458d0-f10d-48c2-9e44-86f3f684029e,STREAM_P2 506 | 83bced11-77ce-4071-95bd-240133796768,STREAM_STORAGE 507 | a23b959c-7ce8-4e57-9140-b90eb88a9e97,SWAY 508 | 604ec28a-ae18-4bc6-91b0-11da94504ba9,TEAMS_ADVCOMMS 509 | fd500458-c24c-478e-856c-a6067a8376cd,TEAMS_AR_DOD 510 | 9953b155-8aef-4c56-92f3-72b0487fce41,TEAMS_AR_GCCHIGH 511 | 4fa4026d-ce74-4962-a151-8e96d57ea8e4,TEAMS_FREE 512 | bd6f2ac2-991a-49f9-b23c-18c96a02c228,TEAMS_FREE_SERVICE 513 | 304767db-7d23-49e8-a945-4a7eb65f9f28,TEAMS_GOV 514 | 8081ca9c-188c-4b49-a8e5-c23b5e9463a8,Teams_Room_Basic 515 | ec17f317-f4bc-451e-b2da-0167e5c260f9,Teams_Room_Pro 516 | 92c6b761-01de-457a-9dd9-793a975238f7,Teams_Room_Standard 517 | 57ff2da0-773e-42df-b2af-ffb7a2317929,TEAMS1 518 | f4f2f6de-6830-442b-a433-e92249faebe2,TeamsEss 519 | 41eda15d-6b52-453b-906f-bc4a5b25a26b,TEAMSMULTIGEO 520 | cc8c0802-a325-43df-8cba-995d0c6cb373,TEAMSPRO_CUST 521 | 0504111f-feb8-4a3c-992a-70280f9a2869,TEAMSPRO_MGMT 522 | f8b44f54-18bb-46a3-9658-44ab58712968,TEAMSPRO_PROTECTION 523 | 9104f592-f2a7-4f77-904c-ca5a5715883f,TEAMSPRO_VIRTUALAPPT 524 | 78b58230-ec7e-4309-913c-93a45cc4735b,TEAMSPRO_WEBINAR 525 | 8e0c0a52-6a6c-4d40-8370-dd62790dcd70,THREAT_INTELLIGENCE 526 | fbdb91e6-7bfd-4a1f-8f7a-d27f4ef39702,THREAT_INTELLIGENCE_APP 527 | 900018f1-0cdb-4ecb-94d4-90281760fdc6,THREAT_INTELLIGENCE_GOV 528 | 36810a13-b903-490a-aa45-afbeb7540832,TVM_PREMIUM_1 529 | 795f6fe0-cc4d-4773-b050-5dde4dc704c9,UNIVERSAL_PRINT_01 530 | b67adbaf-a096-42c9-967e-5a84edbe0086,UNIVERSAL_PRINT_NO_SEEDING 531 | f6934f16-83d3-4f3b-ad27-c6e9c187b260,VIRTUAL_AGENT_BASE 532 | 1263586c-59a4-4ad0-85e1-d50bc7149501,VIRTUAL_AGENT_USL 533 | e7c91390-7625-45be-94e0-e16907e03118,Virtualization Rights for Windows 10 (E3/E5+VDA) 534 | 663a804f-1c30-4ff0-9915-9db84f0d1cea,VISIO_CLIENT_SUBSCRIPTION 535 | f85945f4-7a55-4009-bc39-6a5f14a8eac1,VISIO_CLIENT_SUBSCRIPTION_GOV 536 | 2bdbaf8f-738f-4ac7-9234-3c3ee2ce7d0f,VISIOONLINE 537 | 8a9ecb07-cfc0-48ab-866c-f83c4d911576,VISIOONLINE_GOV 538 | b44c6eaf-5c9f-478c-8f16-8cea26353bfb,Viva_Goals_Premium 539 | 7162bd38-edae-4022-83a7-c5837f951759,VIVA_LEARNING_PREMIUM 540 | b76fb638-6ba6-402a-b9f9-83d28acb3d86,VIVA_LEARNING_SEEDED 541 | 43304c6a-1d4e-4e0b-9b06-5b2a2ff58a90,VIVAENGAGE_COMMUNITIES_AND_COMMUNICATIONS 542 | a82fbf69-b4d7-49f4-83a6-915b2cf354f4,VIVAENGAGE_CORE 543 | c244cc9e-622f-4576-92ea-82e233e44e36,VIVAENGAGE_KNOWLEDGE 544 | 36b29273-c6d0-477a-aca6-6fbe24f538e3,WHITEBOARD_FIRSTLINE1 545 | b8afc642-032e-4de5-8c0a-507a7bba7e5d,WHITEBOARD_PLAN1 546 | 94a54592-cd8b-425e-87c6-97868b000b91,WHITEBOARD_PLAN2 547 | 4a51bca5-1eff-43f5-878c-177680f191af,WHITEBOARD_PLAN3 548 | e041597c-9c7f-4ed9-99b0-2663301576f7,WIN10_ENT_LOC_F1 549 | 21b439ba-a0ca-424f-a6cc-52f954a5b111,WIN10_PRO_ENT_SUB 550 | 8e229017-d77b-43d5-9305-903395523b99,WINBIZ 551 | 871d91ec-ec1a-452b-a83f-bd76c7d770ef,WINDEFATP 552 | 9a6eeb79-0b4b-4bf0-9808-39d99a2cd5a3,Windows Autopatch 553 | aaa2cd24-5519-450f-a1a0-160750710ca1,Windows Store for Business EDU Store_faculty 554 | a420f25f-a7b3-4ff5-a9d0-5d58f73b537d,WINDOWS_STORE 555 | 7bf960f6-2cd9-443a-8046-5dbff9558365,WINDOWSUPDATEFORBUSINESS_DEPLOYMENTSERVICE 556 | f477b0f0-3bb1-4890-940c-40fcee6ce05f,WORKPLACE_ANALYTICS 557 | ff7b261f-d98b-415b-827c-42a3fdf015af,WORKPLACE_ANALYTICS_INSIGHTS_BACKEND 558 | b622badb-1b45-48d5-920f-4b27a2c0996c,WORKPLACE_ANALYTICS_INSIGHTS_USER 559 | 2078e8df-cff6-4290-98cb-5408261a760a,YAMMER_EDU 560 | 7547a3fe-08ee-4ccb-b430-5077c5041653,YAMMER_ENTERPRISE 561 | 41bf139a-4e60-409f-9346-a1361efc6dfb,YAMMER_MIDSIZE 562 | 32d15238-9a8c-46da-af3f-21fc5351d365,BI_AZURE_P3_GOV 563 | 80f0ae31-0dfb-425c-b3fc-36f40170eb35,CAREERCOACH_EDU 564 | 54b61386-c818-4634-8400-61c9e8f6acd3,CDS_Flow_Business_Process_GCC 565 | d7f9c9bc-0a28-4da4-b5f1-731acb27a3e4,CDS_PER_APP_GCC 566 | 5141c408-df3d-456a-9878-a65119b0a750,CDS_UNATTENDED_RPA_GCC 567 | e4d0b25d-e440-4ee9-aac4-1d5a5db9f3ef,CDS_Virtual_Agent_Base_Gov 568 | 95df1203-fee7-4726-b7e1-8037a8e899eb,CDS_Virtual_Agent_Usl_GCC 569 | bcc0702e-ba97-48d9-ae04-fa8689c53bba,CDS_Virtual_Agent_Usl_Gov 570 | 4802707d-47e1-45dc-82c5-b6981f0fb38c,CDS_ATTENDED_RPA_GCC 571 | eac6b45b-aa89-429f-a37b-c8ce00e8367e,CRM_ONLINE_PORTAL_GCC 572 | 483cc331-f4df-4a3b-b8ca-fe1a247569f6,CRMINSTANCE_GCC 573 | 62edd427-6067-4274-93c4-29afdeb30707,CRMSTORAGE_GCC 574 | 6d99eb83-7b5f-4947-8e99-cc12f1adb399,CRMTESTINSTANCE_GCC 575 | 7aae746a-3463-4737-b295-3c1a16c31438,DV_PowerPages_Authenticated_User 576 | 83837d9c-c21a-46a0-873e-d834c94015d6,DYN365_CDS_PROJECT_GCC 577 | b9f7ce72-67ff-4695-a9d9-5ff620232024,DYN365_CS_CHAT_FPA_GOV 578 | ffb878a5-3184-472b-800b-65eadc63d764,DYN365_CS_CHAT_GOV 579 | e304c3c3-f86c-4200-b174-1ade48805b22,DYN365_CS_MESSAGING_GOV 580 | 9d37aa61-3cc3-457c-8b54-e6f3853aa6b6,DYN365_CS_MESSAGING_TPS_GOV 581 | 79bb0a8d-e686-4e16-ac59-2b3fd0014a61,DYN365_ENTERPRISE_CASE_MANAGEMENT_GOV 582 | dc6643d9-1e72-4dce-9f64-1d6eac1f1c5a,DYN365_ENTERPRISE_CUSTOMER_SERVICE_GOV 583 | dd89efa0-5a55-4892-ba30-82e3f8008339,DYN365_SALES_PRO_GOV 584 | cb83e771-a077-4a73-9201-d955585b29fa,FLOW_BUSINESS_PROCESS_GCC 585 | 2c6af4f1-e7b6-4d59-bbc8-eaa884f42d69,FLOW_DYN_APPS_GOV 586 | 16687e20-06f9-4577-9cc0-34a2704260fc,FLOW_FOR_PROJECT_GOV 587 | 8e2c2c3d-07f6-4da7-86a9-e78cc8c2c8b9,Flow_Per_APP_GCC 588 | e62ffe5b-7612-441f-a72d-c11cf456d33a,FLOW_SALES_PRO_GOV 589 | f9f6db16-ace6-4838-b11c-892ee75e810a,FLOW_Virtual_Agent_Base_Gov 590 | 0b939472-1861-45f1-ab6d-208f359c05cd,Flow_Virtual_Agent_Usl_Gov 591 | bb681a9b-58f5-42ee-9926-674325be8aaa,Forms_Pro_Service_GCC 592 | d216f254-796f-4dab-bbfa-710686e646b9,INTUNE_A_GOV 593 | 30df3dbd-5bf6-4d74-9417-cccc096595e4,PBI_PREMIUM_P1_ADDON_GCC 594 | fb613c67-1a58-4645-a8df-21e95a37d433,POWER_AUTOMATE_ATTENDED_RPA_GCC 595 | 45e63e9f-6dd9-41fd-bd41-93bfa008c537,POWER_AUTOMATE_UNATTENDED_RPA_GCC 596 | 0bdd5466-65c3-470a-9fa6-f679b48286b0,Power_Virtual_Agent_Usl_GCC 597 | 9023fe69-f9e0-4c1e-bfde-654954469162,POWER_VIRTUAL_AGENTS_D365_CS_CHAT_GOV 598 | e501d49b-1176-4816-aece-2563c0d995db,POWER_VIRTUAL_AGENTS_D365_CS_MESSAGING_GOV 599 | 3089c02b-e533-4b73-96a5-01fa648c3c3c,POWERAPPS_DYN_APPS_GOV 600 | be6e5cba-3661-424c-b79a-6d95fa1d849a,POWERAPPS_PER_APP_GCC 601 | 12cf31f8-754f-4efe-87a8-167c19e30831,POWERAPPS_SALES_PRO_GOV 602 | cdf787bd-1546-48d2-9e93-b21f9ea7067a,PowerPages_Authenticated_User_GCC 603 | e7d09ae4-099a-4c34-a2a2-3e166e95c44a,PROJECT_O365_P2_GOV 604 | 9b7c50ec-cd50-44f2-bf48-d72de6f90717,PROJECT_O365_P3_GOV 605 | 49c7bc16-7004-4df6-8cd5-4ec48b7e9ea0,PROJECT_PROFESSIONAL_FOR_GOV 606 | e425b9f6-1543-45a0-8efb-f8fdaf18cba1,Virtual_Agent_Base_GCC 607 | 00b6f978-853b-4041-9de0-a233d18669aa,Virtual_Agent_Usl_Gov 608 | --------------------------------------------------------------------------------