MSCommerce.ps1
# This file contains functions for MS Commerce # List self-service-purchase products # Aug 27th 2021 function Get-SelfServicePurchaseProducts { <# .SYNOPSIS Lists the status of self-service purchase products .DESCRIPTION Lists the status of self-service purchase products .Parameter AccessToken The access token used to get the status of the self-service purchase products. .Example PS C:\>Get-AADIntAccessTokenForMSCommerce -SaveToCache PS C:\>Get-AADIntSelfServicePurchaseProducts Product Id Status ------- -- ------ Windows 365 Enterprise CFQ7TTC0HHS9 Enabled Windows 365 Business with Windows Hybrid Benefit CFQ7TTC0HX99 Enabled Windows 365 Business CFQ7TTC0J203 Enabled Power Automate per user CFQ7TTC0KP0N Enabled Power Apps per user CFQ7TTC0KP0P Enabled Power Automate RPA CFQ7TTC0KXG6 Enabled Power BI Premium (standalone) CFQ7TTC0KXG7 Enabled Visio Plan 2 CFQ7TTC0KXN8 Enabled Visio Plan 1 CFQ7TTC0KXN9 Enabled Project Plan 3 CFQ7TTC0KXNC Enabled Project Plan 1 CFQ7TTC0KXND Enabled Power BI Pro CFQ7TTC0L3PB Enabled #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache -AccessToken $AccessToken -Resource "aeb86249-8ea3-49e2-900b-54cc8e308f85" -ClientId "3d5cffa9-04da-4657-8cab-c7f074657cad" # Set the headers $headers=@{ "Authorization" = "Bearer $AccessToken" } # Invoke the command $response = Invoke-RestMethod -UseBasicParsing -Method Get -Uri "https://licensing.m365.microsoft.com/v1.0/policies/AllowSelfServicePurchase/products" -Headers $headers # Return the products foreach($item in $response.items) { New-Object psobject -Property ([ordered]@{ "Product" = $item.productName "Id" = $item.productID "Status" = $item.policyValue }) } } } # Change the status of self-service-purchase products # Aug 27th 2021 function Set-SelfServicePurchaseProduct { <# .SYNOPSIS Change the status of the given self-service purchase product .DESCRIPTION Change the status of the given self-service purchase product .Parameter AccessToken The access token used to change the status of the self-service purchase product. .Example PS C:\>Get-AADIntAccessTokenForMSCommerce -SaveToCache PS C:\>Set-AADIntSelfServicePurchaseProduct -Id CFQ7TTC0L3PB -Enabled $false Product Id Status ------- -- ------ Power BI Pro CFQ7TTC0L3PB Disabled .Example Get-AADIntSelfServicePurchaseProducts | Set-AADIntSelfServicePurchaseProduct -Enabled $false Product Id Status ------- -- ------ Windows 365 Enterprise CFQ7TTC0HHS9 Disabled Windows 365 Business with Windows Hybrid Benefit CFQ7TTC0HX99 Disabled Windows 365 Business CFQ7TTC0J203 Disabled Power Automate per user CFQ7TTC0KP0N Disabled Power Apps per user CFQ7TTC0KP0P Disabled Power Automate RPA CFQ7TTC0KXG6 Disabled Power BI Premium (standalone) CFQ7TTC0KXG7 Disabled Visio Plan 2 CFQ7TTC0KXN8 Disabled Visio Plan 1 CFQ7TTC0KXN9 Disabled Project Plan 3 CFQ7TTC0KXNC Disabled Project Plan 1 CFQ7TTC0KXND Disabled Power BI Pro CFQ7TTC0L3PB Disabled #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True,ValueFromPipelineByPropertyName=$True)] [String]$Id, [Parameter(Mandatory=$True)] [Boolean]$Enabled ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache -AccessToken $AccessToken -Resource "aeb86249-8ea3-49e2-900b-54cc8e308f85" -ClientId "3d5cffa9-04da-4657-8cab-c7f074657cad" # Set the headers $headers=@{ "Authorization" = "Bearer $AccessToken" } if($Enabled) { $policyValue = "Enabled" } else { $policyValue = "Disabled" } $body = @{ "policyValue" = $policyValue} # Invoke the command try { $response = Invoke-RestMethod -UseBasicParsing -Method Put -Uri "https://licensing.m365.microsoft.com/v1.0/policies/AllowSelfServicePurchase/products/$Id" -Headers $headers -Body ($body | ConvertTo-Json) -ContentType "application/json; charset=utf-8" # Return New-Object psobject -Property ([ordered]@{ "Product" = $response.productName "Id" = $response.productID "Status" = $response.policyValue }) } catch { throw $_ } } } |