ProvisioningAPI.ps1
# Autogenerated Sep 23rd 2018 # Get-PartnerContracts function Get-PartnerContracts { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PartnerContractSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [ValidateSet('MicrosoftSupportContract','SyndicationSupportContract','SupportPartnerContract','ResellerPartnerContract','DistributionContract')] $ContractType="MicrosoftSupportContract", [Parameter(Mandatory=$False)] $DomainName, [Parameter(Mandatory=$False)] $ManagedTenantId, [Parameter(Mandatory=$False)] $SearchKey ) Process { $command="ListPartnerContracts" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PartnerContractSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:ContractType>$ContractType</c:ContractType> <c:DomainName i:nil="true"/> <c:ManagedTenantId i:nil="true"/> <c:SearchKey i:nil="true"/> </b:PartnerContractSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Set-PartnerInformation # Oct 18th 2018 function Set-PartnerInformation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PartnerInformation, [ValidateSet('CompanyTenant','MicrosoftSupportTenant','SyndicatePartnerTenant','SupportPartnerTenant','ResellerPartnerTenant','ValueAddedResellerPartnerTenant')] $CompanyType="SupportPartnerTenant", [Parameter(Mandatory=$False)] $Contracts, [Parameter] [Switch]$DapEnabled, [Parameter(Mandatory=$True)] $PartnerTenantId, [Parameter(Mandatory=$False)] $PartnerCommerceUrl, [Parameter(Mandatory=$False)] $PartnerCompanyName, [Parameter(Mandatory=$False)] $PartnerContracts, [Parameter(Mandatory=$True)] $PartnerHelpUrl, [Parameter(Mandatory=$False)] $PartnerRoleMap, [Parameter(Mandatory=$True)] $PartnerSupportEmail, [Parameter(Mandatory=$True)] $PartnerSupportTelephone, [Parameter(Mandatory=$False)] $PartnerSupportUrl ) Process { $command="SetPartnerInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PartnerInformation xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> $(Add-CElement -Parameter "CompanyType" -Value $CompanyType) <c:Contracts i:nil="true"/> $(Add-CElement -Parameter "DapEnabled" -Value $DapEnabled) $(Add-CElement -Parameter "ObjectId" -Value $PartnerTenantId) $(Add-CElement -Parameter "PartnerCompanyName" -Value $PartnerCompanyName) <c:PartnerCommerceUrl i:nil="true"/> <c:PartnerContracts i:nil="true"/> <c:PartnerHelpUrl i:nil="true"/> <c:PartnerRoleMap i:nil="true"/> <c:PartnerSupportEmails i:nil="true"/> <c:PartnerSupportTelephones i:nil="true"/> <c:PartnerSupportUrl i:nil="true"/> </b:PartnerInformation> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Set-PartnerInformation # Oct 18th 2018 function Set-PartnerInformation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PartnerInformation, [ValidateSet('CompanyTenant','MicrosoftSupportTenant','SyndicatePartnerTenant','SupportPartnerTenant','ResellerPartnerTenant','ValueAddedResellerPartnerTenant')] $CompanyType="SupportPartnerTenant", [Parameter(Mandatory=$False)] $Contracts, [Parameter] [Switch]$DapEnabled, [Parameter(Mandatory=$True)] $PartnerTenantId, [Parameter(Mandatory=$False)] $PartnerCommerceUrl, [Parameter(Mandatory=$False)] $PartnerCompanyName, [Parameter(Mandatory=$False)] $PartnerContracts, [Parameter(Mandatory=$False)] $PartnerHelpUrl, [Parameter(Mandatory=$False)] $PartnerRoleMap, [Parameter(Mandatory=$False)] $PartnerSupportEmails, [Parameter(Mandatory=$False)] $PartnerSupportTelephones, [Parameter(Mandatory=$False)] $PartnerSupportUrl ) Process { $command="SetPartnerInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PartnerInformation xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> $(Add-CElement -Parameter "CompanyType" -Value $CompanyType) <c:Contracts i:nil="true"/> $(Add-CElement -Parameter "DapEnabled" -Value $DapEnabled) $(Add-CElement -Parameter "ObjectId" -Value $PartnerTenantId) $(Add-CElement -Parameter "PartnerCompanyName" -Value $PartnerCompanyName) <c:PartnerCommerceUrl i:nil="true"/> <c:PartnerContracts i:nil="true"/> <c:PartnerHelpUrl i:nil="true"/> <c:PartnerRoleMap i:nil="true"/> <c:PartnerSupportEmails i:nil="true"/> <c:PartnerSupportTelephones i:nil="true"/> <c:PartnerSupportUrl i:nil="true"/> </b:PartnerInformation> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-UserByUpn function Remove-UserByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$RemoveFromRecycleBin=$False, [Parameter(Mandatory=$True)] [string]$UserPrincipalName ) Process { $command="RemoveUserByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RemoveFromRecycleBin>$(b2s($RemoveFromRecycleBin))</b:RemoveFromRecycleBin> <b:UserPrincipalName>$UserPrincipalName</b:UserPrincipalName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-AdministrativeUnit function Remove-AdministrativeUnit { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RemoveAdministrativeUnit" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Contact function Get-Contact { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="GetContact" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-AdministrativeUnit function Get-AdministrativeUnit { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="GetAdministrativeUnit" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipalCredentialsByAppPrincipalId function Get-ServicePrincipalCredentialsByAppPrincipalId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$AppPrincipalId, [Parameter(Mandatory=$False)] [Boolean]$ReturnKeyValues ) Process { $command="ListServicePrincipalCredentialsByAppPrincipalId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AppPrincipalId>$AppPrincipalId</b:AppPrincipalId> <b:ReturnKeyValues i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipal function Remove-ServicePrincipal { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$ObjectId ) Process { $command="RemoveServicePrincipal" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipalBySpn function Get-ServicePrincipalBySpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ServicePrincipalName ) Process { $command="GetServicePrincipalBySpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipalName>$ServicePrincipalName</b:ServicePrincipalName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-Domain function Remove-Domain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$DomainName ) Process { $command="RemoveDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DomainName>$DomainName</b:DomainName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-AdministrativeUnitResults function Navigate-AdministrativeUnitResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateAdministrativeUnitResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-RoleMembers function Remove-RoleMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $RoleObjectId, [Parameter(Mandatory=$False)] $RoleMembers ) Process { $command="RemoveRoleMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleObjectId i:nil="true"/> <b:RoleMembers i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Subscriptions function Get-Subscriptions { <# .SYNOPSIS Gets tenant's subscriptions .DESCRIPTION Gets tenant's subscriptions .Parameter AccessToken Access Token .Example Get-AADIntSubscriptions SkuPartNumber : EMSPREMIUM WarningUnits : 0 TotalLicenses : 250 IsTrial : true NextLifecycleDate : 2018-11-13T00:00:00Z OcpSubscriptionId : 76909010-12ed-4b05-b3d7-ee1b42c21b4e ConsumedUnits : 23 ObjectId : 58265dbe-24e0-4cdb-8b62-51197a4c1c13 SkuId : b05e124f-c7cc-45a0-a6aa-8cf78c946968 DateCreated : 2018-08-13T00:00:00Z Status : Enabled SuspendedUnits : 0 AccountName : company SkuPartNumber : ENTERPRISEPREMIUM WarningUnits : 25 TotalLicenses : 25 IsTrial : true NextLifecycleDate : 2018-10-27T15:47:40Z OcpSubscriptionId : 7c206b83-2487-49fa-b91e-3d676de02ccb ConsumedUnits : 22 ObjectId : df58544b-5062-4d6c-85de-937f203bbe0f SkuId : c7df2760-2c81-4ef7-b578-5b5392b571df DateCreated : 2018-08-27T00:00:00Z Status : Warning SuspendedUnits : 0 AccountName : company #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ReturnValue ) Process { $command="ListSubscriptions" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Get skus $skus = Get-AccountSkus -AccessToken $AccessToken # Loop through the results foreach($subs in $results.Subscription) { $attributes=@{} $attributes.DateCreated=$subs.DateCreated $attributes.IsTrial=$subs.IsTrial $attributes.NextLifecycleDate=$subs.NextLifecycleDate $attributes.ObjectId=$subs.ObjectId $attributes.OcpSubscriptionId=$subs.OcpSubscriptionId #$attributes.OwnerContextId=$subs.OwnerContextId #$attributes.OwnerObjectId=$subs.OwnerObjectId #$attributes.OwnerType=$subs.OwnerType $attributes.SkuId=$subs.SkuId $attributes.SkuPartNumber=$subs.SkuPartNumber $attributes.Status=$subs.Status $attributes.TotalLicenses=$subs.TotalLicenses # Get the SKU $sku = $skus | where SkuId -eq $attributes.SkuId $attributes.WarningUnits = $sku.WarningUnits $attributes.ConsumedUnits = $sku.ConsumedUnits $attributes.SuspendedUnits = $sku.SuspendedUnits $attributes.AccountName = $sku.AccountName # Loop through service status objects <# $attributes.ServiceStatus=@() foreach($status in $subs.ServiceStatus.ServiceStatus) { $service_status=@{} $service_status.ProvisioningStatus=$status.ProvisioningStatus $service_status.ServiceName=$status.ServicePlan.ServiceName $service_status.ServicePlanId=$status.ServicePlan.ServicePlanId $service_status.ServiceType=$status.ServicePlan.ServiceType $service_status.TargetClass=$status.ServicePlan.TargetClass $attributes.ServiceStatus += New-Object psobject -Property $service_status } #> # Return New-Object psobject -Property $attributes } } } # Autogenerated Sep 23rd 2018 # Set-PasswordPolicy function Set-PasswordPolicy { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Policy, [Parameter(Mandatory=$False)] [string]$DomainName, [Parameter(Mandatory=$False)] [int]$NotificationDays=14, [Parameter(Mandatory=$False)] [int]$ValidityPeriod=90 ) Process { $command="SetPasswordPolicy" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Policy xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:NotificationDays>$NotificationDays</c:NotificationDays> <c:ValidityPeriod>$ValidityPeriod</c:ValidityPeriod> </b:Policy> <b:DomainName i:nil="$(([string]::IsNullOrEmpty($DomainName)).toString().ToLower())">$DomainName</b:DomainName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Groups function Get-Groups { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $GroupSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $AccountSku, [ValidateSet('DistributionList','Security','MailEnabledSecurity')] [string]$GroupType, [Parameter(Mandatory=$False)] $HasErrorsOnly, [Parameter(Mandatory=$False)] $HasLicenseErrorsOnly, [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $IsAgentRole, [Parameter(Mandatory=$False)] $UserObjectId, [Parameter(Mandatory=$False)] $UserPrincipalName ) Process { $command="ListGroups" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:GroupSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:AccountSku i:nil="true"/> <c:GroupType i:nil="true"/> <c:HasErrorsOnly i:nil="true"/> <c:HasLicenseErrorsOnly i:nil="true"/> <c:IncludedProperties i:nil="true"/> <c:IsAgentRole i:nil="true"/> <c:UserObjectId i:nil="true"/> <c:UserPrincipalName i:nil="true"/> </b:GroupSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results.Results.Group } } # Autogenerated Sep 23rd 2018 # Get-Subscription function Get-Subscription { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$SubscriptionId ) Process { $command="GetSubscription" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:SubscriptionId>$SubscriptionId</b:SubscriptionId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-GroupMembers function Remove-GroupMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $GroupMembers, [Parameter(Mandatory=$False)] $GroupObjectId ) Process { $command="RemoveGroupMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:GroupMembers i:nil="true"/> <b:GroupObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-ContactResults function Navigate-ContactResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateContactResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Domain function Get-Domain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$DomainName ) Process { $command="GetDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DomainName>$DomainName</b:DomainName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-AdministrativeUnit function Add-AdministrativeUnit { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnit, [Parameter(Mandatory=$False)] $Description, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="AddAdministrativeUnit" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnit xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:Description i:nil="true"/> <c:DisplayName i:nil="true"/> <c:ObjectId i:nil="true"/> </b:AdministrativeUnit> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipal function Get-ServicePrincipal { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="GetServicePrincipal" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get-AccountSkus # Aug 12th 018 function Get-AccountSkus { <# .SYNOPSIS Gets tenant's SKUs .DESCRIPTION Gets tenant's stock keeping units (SKUs) .Parameter AccessToken Access Token .Example Get-AADIntAccountSkus TargetClass : User SkuPartNumber : EMSPREMIUM WarningUnits : 58265dbe-24e0-4cdb-8b62-51197a4c1c13 ServiceStatus : {@{ServiceName=EXCHANGE_S_FOUNDATION; TargetClass=Tenant; ServiceType=Exchange; ServicePlanId=113feb6c-3fe4-4440-bddc-54d774bf0318; ProvisioningStatus=Success}, @{ServiceName=ATA; TargetClass=User; ServiceType=AzureAdvancedThreatAnalytics; ServicePlanId=14ab5db5-e6c4-4b20-b4bc-13e36fd2227f; ProvisioningStatus=Success}, @{ServiceName=ADALLOM_S_STANDALONE; T argetClass=User; ServiceType=Adallom; ServicePlanId=2e2ddb96-6af9-4b1d-a3f0-d6ecfd22edb2; ProvisioningStatus=Success}, @{ServiceName=RMS_S_PREMIUM2; TargetClass=User; ServiceType= RMSOnline; ServicePlanId=5689bec4-755d-4753-8b61-40975025187c; ProvisioningStatus=Success}...} AccountObjectId : 1b78d686-e37b-4c01-a1ec-c963fbae482a SuspendedUnits : 0 ConsumedUnits : 23 SkuId : b05e124f-c7cc-45a0-a6aa-8cf78c946968 ActiveUnits : 250 LockedOutUnits : 0 AccountSkuId : company:EMSPREMIUM AccountName : company TargetClass : User SkuPartNumber : ENTERPRISEPREMIUM WarningUnits : df58544b-5062-4d6c-85de-937f203bbe0f ServiceStatus : {@{ServiceName=PAM_ENTERPRISE; TargetClass=User; ServiceType=Exchange; ServicePlanId=b1188c4c-1b36-4018-b48b-ee07604f6feb; ProvisioningStatus=Success}, @{ServiceName=BPOS_S_TODO_3 ; TargetClass=User; ServiceType=To-Do; ServicePlanId=3fb82609-8c27-4f7b-bd51-30634711ee67; ProvisioningStatus=Success}, @{ServiceName=FORMS_PLAN_E5; TargetClass=User; ServiceType= OfficeForms; ServicePlanId=e212cbc7-0961-4c40-9825-01117710dcb1; ProvisioningStatus=Success}, @{ServiceName=STREAM_O365_E5; TargetClass=User; ServiceType=MicrosoftStream; ServiceP lanId=6c6042f5-6f01-4d67-b8c1-eb99d36eed3e; ProvisioningStatus=Success}...} AccountObjectId : 1b78d686-e37b-4c01-a1ec-c963fbae482a SuspendedUnits : 0 ConsumedUnits : 22 SkuId : c7df2760-2c81-4ef7-b578-5b5392b571df ActiveUnits : 0 LockedOutUnits : 0 AccountSkuId : company:ENTERPRISEPREMIUM AccountName : company #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AccountId ) Process { $command="ListAccountSkus" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AccountId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Loop through the results foreach($sku in $results.AccountSkuDetails) { $attributes=@{} $attributes.AccountName=$sku.AccountName $attributes.AccountObjectId=$sku.AccountObjectId $attributes.AccountSkuId=$sku.AccountSkuId $attributes.ActiveUnits=$sku.ActiveUnits $attributes.ConsumedUnits=$sku.ConsumedUnits $attributes.LockedOutUnits=$sku.LockedOutUnits $attributes.SkuId=$sku.SkuId $attributes.SkuPartNumber=$sku.SkuPartNumber $attributes.SuspendedUnits=$sku.SuspendedUnits $attributes.TargetClass=$sku.TargetClass $attributes.WarningUnits=$sku.WarningUnits # FIx: There might be more than one! $attributes.SubscriptionIds=$sku.SubscriptionIds.guid # Loop through service status objects $attributes.ServiceStatus=@() foreach($status in $sku.ServiceStatus.ServiceStatus) { $service_status=@{} $service_status.ProvisioningStatus=$status.ProvisioningStatus $service_status.ServiceName=$status.ServicePlan.ServiceName $service_status.ServicePlanId=$status.ServicePlan.ServicePlanId $service_status.ServiceType=$status.ServicePlan.ServiceType $service_status.TargetClass=$status.ServicePlan.TargetClass $attributes.ServiceStatus += New-Object psobject -Property $service_status } # Return New-Object psobject -Property $attributes } } } # Autogenerated Sep 23rd 2018 # Set-CompanyMultiNationalEnabled function Set-CompanyMultiNationalEnabled { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$Enable=$false, [Parameter(Mandatory=$False)] [string]$ServiceType ) Process { $command="SetCompanyMultiNationalEnabled" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" $(Add-BElement -Parameter "Enable" -Value $Enable) $(Add-BElement -Parameter "ServiceType" -Value $ServiceType) "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipalByAppPrincipalId function Remove-ServicePrincipalByAppPrincipalId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AppPrincipalId ) Process { $command="RemoveServicePrincipalByAppPrincipalId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AppPrincipalId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipalCredentials function Get-ServicePrincipalCredentials { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] [Boolean]$ReturnKeyValues ) Process { $command="ListServicePrincipalCredentials" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:ReturnKeyValues>true</b:ReturnKeyValues> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results.ServicePrincipalCredential } } # Get-AccidentalDeletionInformation # Oct 18th 2018 function Get-AccidentalDeletionInformation { <# .SYNOPSIS Get accidental deletion information .Description Get accidental deletion information of Azure AD .Parameter AccessToken Access Token. .Example GetAADIntAccidentalDeletionInformation AccidentalDeletionThreshold DeletionPreventionType --------------------------- ---------------------- 500 EnabledForCount #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { $command="GetAccidentalDeletionInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Verify-Domain function Verify-Domain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $FederationSettings, [Parameter(Mandatory=$False)] $ForceTakeover, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="VerifyDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:FederationSettings i:nil="true"/> <b:ForceTakeover i:nil="true"/> <b:DomainName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-RolesForUser function Get-RolesForUser { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="ListRolesForUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-DirSyncProvisioningErrors function Navigate-DirSyncProvisioningErrors { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateDirSyncProvisioningErrors" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-DomainVerificationDns function Get-DomainVerificationDns { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$Mode, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="GetDomainVerificationDns" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Mode i:nil="true"/> <b:DomainName>$DomainName</b:DomainName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-CompanyAllowedDataLocation function Set-CompanyAllowedDataLocation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ServiceType, [Parameter(Mandatory=$False)] [Boolean]$IsDefault, [Parameter(Mandatory=$False)] [string]$InitialDomain, [Parameter(Mandatory=$False)] [string]$Location, [Parameter(Mandatory=$False)] [Boolean]$Overwrite ) Process { $command="SetCompanyAllowedDataLocation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServiceType i:nil="true"/> <b:IsDefault i:nil="true"/> <b:InitialDomain i:nil="true"/> <b:Location i:nil="true"/> <b:Overwrite i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Has-ObjectsWithDirSyncProvisioningErrors function Has-ObjectsWithDirSyncProvisioningErrors { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$ReturnValue ) Process { $command="HasObjectsWithDirSyncProvisioningErrors" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-CompanyDirSyncFeature function Set-CompanyDirSyncFeature { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [Boolean]$Enable, [Parameter(Mandatory=$false)] [Boolean]$DeviceWriteback, [Parameter(Mandatory=$false)] $DirectoryExtensions, [Parameter(Mandatory=$false)] $DuplicateProxyAddressResiliency, [Parameter(Mandatory=$false)] $DuplicateUPNResiliency, [Parameter(Mandatory=$false)] $EnableSoftMatchOnUpn, [Parameter(Mandatory=$false)] $EnforceCloudPasswordPolicyForPasswordSyncedUsers, [Parameter(Mandatory=$false)] $PasswordSync, [Parameter(Mandatory=$false)] $SynchronizeUpnForManagedUsers, [Parameter(Mandatory=$false)] $UnifiedGroupWriteback, [Parameter(Mandatory=$false)] $UserWriteback ) Process { $command="SetCompanyDirSyncFeature" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Enable>$Enable</b:Enable> <b:Feature>$Feature</b:Feature> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get-PartnerInformation # Oct 18th 2018 function Get-PartnerInformation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ReturnValue ) Process { $command="GetPartnerInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get-DomainFederationSettings function Get-DomainFederationSettings { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="GetDomainFederationSettings" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DomainName>$DomainName</b:DomainName> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Return $results } } # Autogenerated Sep 23rd 2018 # Get-DirSyncProvisioningErrors function Get-DirSyncProvisioningErrors { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $DirSyncProvisioningErrorSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $ErrorCategory, [Parameter(Mandatory=$False)] $ObjectType, [Parameter(Mandatory=$False)] $PropertyName, [Parameter(Mandatory=$False)] $PropertyValue ) Process { $command="ListDirSyncProvisioningErrors" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DirSyncProvisioningErrorSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:ErrorCategory i:nil="true"/> <c:ObjectType i:nil="true"/> <c:PropertyName i:nil="true"/> <c:PropertyValue i:nil="true"/> </b:DirSyncProvisioningErrorSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipalBySpn function Remove-ServicePrincipalBySpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ServicePrincipalName ) Process { $command="RemoveServicePrincipalBySpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipalName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-ServicePrincipalResults function Navigate-ServicePrincipalResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateServicePrincipalResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-AdministrativeUnitMembers function Add-AdministrativeUnitMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnitMembers, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId ) Process { $command="AddAdministrativeUnitMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnitMembers i:nil="true"/> <b:AdministrativeUnitObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-RoleMembersByRoleName function Remove-RoleMembersByRoleName { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$RoleName, [Parameter(Mandatory=$False)] $RoleMembers ) Process { $command="RemoveRoleMembersByRoleName" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleName i:nil="true"/> <b:RoleMembers i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-UserResults function Navigate-UserResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateUserResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-RoleMemberResults function Navigate-RoleMemberResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateRoleMemberResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipalCredentialsBySpn function Get-ServicePrincipalCredentialsBySpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { $command="ListServicePrincipalCredentialsBySpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-CompanyAllowedDataLocation function Get-CompanyAllowedDataLocation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ReturnValue ) Process { $command="GetCompanyAllowedDataLocation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Reset-UserPasswordByUpn function Reset-UserPasswordByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$ForceChangePasswordOnly, [Parameter(Mandatory=$False)] [string]$UserPrincipalName, [Parameter(Mandatory=$False)] [Boolean]$ForceChangePassword, [Parameter(Mandatory=$False)] [string]$NewPassword ) Process { $command="ResetUserPasswordByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ForceChangePasswordOnly i:nil="true"/> <b:UserPrincipalName i:nil="true"/> <b:ForceChangePassword i:nil="true"/> <b:NewPassword i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Contacts function Get-Contacts { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ContactSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $HasErrorsOnly, [Parameter(Mandatory=$False)] $IncludedProperties ) Process { $command="ListContacts" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ContactSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:HasErrorsOnly i:nil="true"/> <c:IncludedProperties i:nil="true"/> </b:ContactSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-RoleScopedMemberResults function Navigate-RoleScopedMemberResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateRoleScopedMemberResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Has-ObjectsWithDirSyncProvisioningErrors2 function Has-ObjectsWithDirSyncProvisioningErrors2 { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ObjectType ) Process { $command="HasObjectsWithDirSyncProvisioningErrors2" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectType i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-RoleScopedMembers function Add-RoleScopedMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $RoleMembers, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId, [Parameter(Mandatory=$False)] $RoleObjectId ) Process { $command="AddRoleScopedMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleMembers i:nil="true"/> <b:AdministrativeUnitObjectId i:nil="true"/> <b:RoleObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-UserLicensesByUpn function Set-UserLicensesByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AddLicenses, [Parameter(Mandatory=$False)] $RemoveLicenses, [Parameter(Mandatory=$False)] $LicenseOptions, [Parameter(Mandatory=$False)] [string]$UserPrincipalName ) Process { $command="SetUserLicensesByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AddLicenses i:nil="true"/> <b:RemoveLicenses i:nil="true"/> <b:LicenseOptions i:nil="true"/> <b:UserPrincipalName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-RoleByName function Get-RoleByName { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$RoleName ) Process { $command="GetRoleByName" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Add-RoleMembers # Oct 19th 2018 function Add-RoleMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] $RoleObjectId, [Parameter(Mandatory=$True)] [String]$RoleMemberObjectId, [ValidateSet('Other','Group','User','ServicePrincipal')] [String]$RoleMemberType="User" ) Process { $command="AddRoleMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleMembers xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:RoleMember> <c:DisplayName i:nil="true"/> <c:EmailAddress i:nil="true"/> <c:IsLicensed i:nil="true"/> <c:LastDirSyncTime i:nil="true"/> $(Add-CElement -Parameter "ObjectId" -Value $RoleMemberObjectId) <c:OverallProvisioningStatus i:nil="true"/> $(Add-CElement -Parameter "RoleMemberType" -Value $RoleMemberType) <c:StrongAuthenticationRequirements i:nil="true"/> <c:ValidationStatus i:nil="true"/> </c:RoleMember> </b:RoleMembers> $(Add-BElement -Parameter "RoleObjectId" -Value $RoleObjectId) "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-User function Set-User { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AlternateEmailAddresses, [Parameter(Mandatory=$False)] $AlternateMobilePhones, [Parameter(Mandatory=$False)] $AlternativeSecurityIds, [Parameter(Mandatory=$False)] $BlockCredential, [Parameter(Mandatory=$False)] $City, [Parameter(Mandatory=$False)] $CloudExchangeRecipientDisplayType, [Parameter(Mandatory=$False)] $Country, [Parameter(Mandatory=$False)] $Department, [Parameter(Mandatory=$False)] $DirSyncProvisioningErrors, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $Errors, [Parameter(Mandatory=$False)] $Fax, [Parameter(Mandatory=$False)] $FirstName, [Parameter(Mandatory=$False)] $ImmutableId, [Parameter(Mandatory=$False)] $IndirectLicenseErrors, [Parameter(Mandatory=$False)] $IsBlackberryUser, [Parameter(Mandatory=$False)] $IsLicensed, [Parameter(Mandatory=$False)] $LicenseAssignmentDetails, [Parameter(Mandatory=$False)] $LicenseReconciliationNeeded, [Parameter(Mandatory=$False)] $Licenses, [Parameter(Mandatory=$False)] $LiveId, [Parameter(Mandatory=$False)] $MSExchRecipientTypeDetails, [Parameter(Mandatory=$False)] $MSRtcSipDeploymentLocator, [Parameter(Mandatory=$False)] $MSRtcSipPrimaryUserAddress, [Parameter(Mandatory=$False)] $MobilePhone, [Parameter(Mandatory=$False)] $OathTokenMetadata, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $Office, [Parameter(Mandatory=$False)] $OverallProvisioningStatus="None", [Parameter(Mandatory=$False)] $PasswordNeverExpires, [Parameter(Mandatory=$False)] $PasswordResetNotRequiredDuringActivate, [Parameter(Mandatory=$False)] $PhoneNumber, [Parameter(Mandatory=$False)] $PortalSettings, [Parameter(Mandatory=$False)] $PostalCode, [Parameter(Mandatory=$False)] $PreferredDataLocation, [Parameter(Mandatory=$False)] $PreferredLanguage, [Parameter(Mandatory=$False)] [String[]]$ProxyAddresses, [ValidateSet('Other','StagedRolloutOne','StagedRolloutTwo','Compass','Dogfood')] $ReleaseTrack, [Parameter(Mandatory=$False)] $ServiceInformation, [Parameter(Mandatory=$False)] $SignInName, [Parameter(Mandatory=$False)] $SoftDeletionTimestamp, [Parameter(Mandatory=$False)] $State, [Parameter(Mandatory=$False)] $StreetAddress, [Parameter(Mandatory=$False)] $StrongAuthenticationMethods, [Parameter(Mandatory=$False)] $StrongAuthenticationPhoneAppDetails, [Parameter(Mandatory=$False)] $StrongAuthenticationProofupTime, [Parameter(Mandatory=$False)] $StrongAuthenticationRequirements, [Parameter(Mandatory=$False)] $StrongAuthenticationUserDetails, [Parameter(Mandatory=$False)] $StrongPasswordRequired, [Parameter(Mandatory=$False)] $StsRefreshTokensValidFrom, [Parameter(Mandatory=$False)] $Title, [Parameter(Mandatory=$False)] $UsageLocation, [ValidateSet('homepage_office365','shellmail','shellcalendar','shellpeople')] $UserLandingPageIdentifierForO365Shell, [Parameter(Mandatory=$True)] $UserPrincipalName, [ValidateSet('Super','Bricks')] $UserThemeIdentifierForO365Shell, [ValidateSet('Member','Guest','Viral')] $UserType, [ValidateSet('NotAvailable','Healthy','Error')] $ValidationStatus="NotAvailable" ) Process { $command="SetUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:User xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:AlternateEmailAddresses i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <c:AlternateMobilePhones i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <c:AlternativeSecurityIds i:nil="true"/> $(Add-CElement -Parameter "BlockCredential" -Value "$BlockCredential") $(Add-CElement -Parameter "City" -Value "$City") <c:CloudExchangeRecipientDisplayType i:nil="true"/> $(Add-CElement -Parameter "Country" -Value "$Country") $(Add-CElement -Parameter "Department" -Value "$Department") <c:DirSyncProvisioningErrors i:nil="true"/> $(Add-CElement -Parameter "DisplayName" -Value "$DisplayName") <c:Errors i:nil="true"/> $(Add-CElement -Parameter "Fax" -Value "$Fax") $(Add-CElement -Parameter "FirstName" -Value "$FirstName") $(Add-CElement -Parameter "ImmutableId" -Value "$ImmutableId") <c:IndirectLicenseErrors i:nil="true"/> $(Add-CElement -Parameter "IsBlackberryUser" -Value "$IsBlackberryUser") <c:IsLicensed i:nil="true"/> <c:LastDirSyncTime i:nil="true"/> $(Add-CElement -Parameter "LastName" -Value "$LastName") <c:LastPasswordChangeTimestamp i:nil="true"/> <c:LicenseAssignmentDetails i:nil="true"/> <c:LicenseReconciliationNeeded i:nil="true"/> <c:Licenses i:nil="true"/> <c:LiveId i:nil="true"/> <c:MSExchRecipientTypeDetails i:nil="true"/> <c:MSRtcSipDeploymentLocator i:nil="true"/> <c:MSRtcSipPrimaryUserAddress i:nil="true"/> $(Add-CElement -Parameter "MobilePhone" -Value "$MobilePhone") <c:ObjectId i:nil="true"/> $(Add-CElement -Parameter "Office" -Value "$Office") $(Add-CElement -Parameter "OverallProvisioningStatus" -Value "$OverallProvisioningStatus") $(Add-CElement -Parameter "PasswordNeverExpires" -Value "$PasswordNeverExpires") $(Add-CElement -Parameter "PasswordResetNotRequiredDuringActivate" -Value "$PasswordResetNotRequiredDuringActivate") $(Add-CElement -Parameter "PhoneNumber" -Value "$PhoneNumber") <c:PortalSettings i:nil="true"/> $(Add-CElement -Parameter "PostalCode" -Value "$PostalCode") <c:PreferredDataLocation i:nil="true"/> $(Add-CElement -Parameter "PreferredLanguage" -Value "$PreferredLanguage") <c:ProxyAddresses i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> $(Add-CElement -Parameter "ReleaseTrack" -Value "$ReleaseTrack") <c:ServiceInformation i:nil="true"/> $(Add-CElement -Parameter "SignInName" -Value "$SignInName") <c:SoftDeletionTimestamp i:nil="true"/> $(Add-CElement -Parameter "State" -Value "$State") $(Add-CElement -Parameter "StreetAddress" -Value "$StreetAddress") <c:StrongAuthenticationMethods i:nil="true"/> <c:StrongAuthenticationPhoneAppDetails i:nil="true"/> <c:StrongAuthenticationProofupTime i:nil="true"/> <c:StrongAuthenticationRequirements i:nil="true"/> <c:StrongAuthenticationUserDetails i:nil="true"/> $(Add-CElement -Parameter "StrongPasswordRequired" -Value "$StrongPasswordRequired") <c:StsRefreshTokensValidFrom i:nil="true"/> $(Add-CElement -Parameter "Title" -Value "$Title") $(Add-CElement -Parameter "UsageLocation" -Value "$UsageLocation") $(Add-CElement -Parameter "UserLandingPageIdentifierForO365Shell" -Value "$UserLandingPageIdentifierForO365Shell") $(Add-CElement -Parameter "UserPrincipalName" -Value "$UserPrincipalName") $(Add-CElement -Parameter "UserThemeIdentifierForO365Shell" -Value "$UserThemeIdentifierForO365Shell") $(Add-CElement -Parameter "UserType" -Value "$UserType") <c:ValidationStatus i:nil="true"/> <c:WhenCreated i:nil="true"/> </b:User> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-AdministrativeUnitMemberResults function Navigate-AdministrativeUnitMemberResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateAdministrativeUnitMemberResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Set-CompanySettings # Oct 19th 2018 function Set-CompanySettings { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$AllowAdHocSubscriptions, [Parameter(Mandatory=$False)] [Boolean]$AllowEmailVerifiedUsers, [Parameter(Mandatory=$False)] [string]$DefaultUsageLocation, [Parameter(Mandatory=$False)] [Boolean]$RmsViralSignUpEnabled, [Parameter(Mandatory=$False)] [Boolean]$SelfServePasswordResetEnabled, [Parameter(Mandatory=$False)] [Boolean]$UsersPermissionToCreateGroupsEnabled, [Parameter(Mandatory=$False)] [Boolean]$UsersPermissionToCreateLOBAppsEnabled, [Parameter(Mandatory=$False)] [Boolean]$UsersPermissionToReadOtherUsersEnabled, [Parameter(Mandatory=$False)] [Boolean]$UsersPermissionToUserConsentToAppEnabled, [ValidateSet('Other','StagedRolloutOne','StagedRolloutTwo','Compass','Dogfood')] [String]$O365UserReleaseTrack ) Process { $command="SetCompanySettings" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Settings xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> $(Add-CElement -Parameter "AllowAdHocSubscriptions" -Value $AllowAdHocSubscriptions) $(Add-CElement -Parameter "AllowEmailVerifiedUsers" -Value $AllowEmailVerifiedUsers) $(Add-CElement -Parameter "DefaultUsageLocation" -Value $DefaultUsageLocation) $(Add-CElement -Parameter "RmsViralSignUpEnabled" -Value $RmsViralSignUpEnabled) $(Add-CElement -Parameter "SelfServePasswordResetEnabled" -Value $SelfServePasswordResetEnabled) $(Add-CElement -Parameter "UsersPermissionToCreateGroupsEnabled" -Value $UsersPermissionToCreateGroupsEnabled) $(Add-CElement -Parameter "UsersPermissionToCreateLOBAppsEnabled" -Value $UsersPermissionToCreateLOBAppsEnabled) $(Add-CElement -Parameter "UsersPermissionToReadOtherUsersEnabled" -Value $UsersPermissionToReadOtherUsersEnabled) $(Add-CElement -Parameter "UsersPermissionToUserConsentToAppEnabled" -Value $UsersPermissionToUserConsentToAppEnabled) $(Add-CElement -Parameter "O365UserReleaseTrack" -Value $O365UserReleaseTrack) </b:Settings> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Roles function Get-Roles { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ReturnValue ) Process { $command="ListRoles" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-ServicePrincipal function Add-ServicePrincipal { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AppPrincipalId, [Parameter(Mandatory=$False)] $Addresses, [Parameter(Mandatory=$False)] [Boolean]$TrustedForDelegation, [Parameter(Mandatory=$False)] [Boolean]$AccountEnabled, [Parameter(Mandatory=$False)] $ServicePrincipalNames, [Parameter(Mandatory=$False)] $Credentials, [Parameter(Mandatory=$False)] [string]$DisplayName ) Process { $command="AddServicePrincipal" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AppPrincipalId i:nil="true"/> <b:Addresses i:nil="true"/> <b:TrustedForDelegation i:nil="true"/> <b:AccountEnabled i:nil="true"/> <b:ServicePrincipalNames i:nil="true"/> <b:Credentials i:nil="true"/> <b:DisplayName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-ServicePrincipal function Set-ServicePrincipal { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ServicePrincipal, [Parameter(Mandatory=$False)] $AccountEnabled, [Parameter(Mandatory=$False)] $Addresses, [Parameter(Mandatory=$False)] $AppPrincipalId, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $ServicePrincipalNames, [Parameter(Mandatory=$False)] $TrustedForDelegation ) Process { $command="SetServicePrincipal" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipal xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:AccountEnabled i:nil="true"/> <c:Addresses i:nil="true"/> <c:AppPrincipalId i:nil="true"/> <c:DisplayName i:nil="true"/> <c:ObjectId i:nil="true"/> <c:ServicePrincipalNames i:nil="true"/> <c:TrustedForDelegation i:nil="true"/> </b:ServicePrincipal> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-CompanyDirSyncFeatures function Get-CompanyDirSyncFeatures { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$Feature ) Process { $command="GetCompanyDirSyncFeatures" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Feature i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results.DirSyncFeatureDetails } } # Get-Users function Get-Users { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $UserSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $AccountSku, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId, [Parameter(Mandatory=$False)] $BlackberryUsersOnly, [Parameter(Mandatory=$False)] $City, [Parameter(Mandatory=$False)] $Country, [Parameter(Mandatory=$False)] $Department, [Parameter(Mandatory=$False)] $DomainName, [Parameter(Mandatory=$False)] $EnabledFilter, [Parameter(Mandatory=$False)] $HasErrorsOnly, [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $IndirectLicenseFilter, [Parameter(Mandatory=$False)] $LicenseReconciliationNeededOnly, [Parameter(Mandatory=$False)] $ReturnDeletedUsers, [Parameter(Mandatory=$False)] $State, [Parameter(Mandatory=$False)] $Synchronized, [Parameter(Mandatory=$False)] $Title, [Parameter(Mandatory=$False)] [Boolean]$UnlicensedUsersOnly, [Parameter(Mandatory=$False)] $UsageLocation ) Process { $command="ListUsers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> $(Add-CElement -Parameter "SearchString" -Value $SearchString) <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:AccountSku i:nil="true"/> <c:AdministrativeUnitObjectId i:nil="true"/> <c:BlackberryUsersOnly i:nil="true"/> <c:City i:nil="true"/> <c:Country i:nil="true"/> <c:Department i:nil="true"/> <c:DomainName i:nil="true"/> <c:EnabledFilter i:nil="true"/> <c:HasErrorsOnly i:nil="true"/> <c:IncludedProperties i:nil="true"/> <c:IndirectLicenseFilter i:nil="true"/> <c:LicenseReconciliationNeededOnly i:nil="true"/> <c:ReturnDeletedUsers i:nil="true"/> <c:State i:nil="true"/> <c:Synchronized i:nil="true"/> <c:Title i:nil="true"/> <c:UnlicensedUsersOnly i:nil="true"/> <c:UsageLocation i:nil="true"/> </b:UserSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Return $results.results.user } } # Autogenerated Sep 23rd 2018 # Convert-FederatedUserToManaged function Convert-FederatedUserToManaged { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$UserPrincipalName, [Parameter(Mandatory=$False)] [string]$NewPassword ) Process { $command="ConvertFederatedUserToManaged" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName i:nil="true"/> <b:NewPassword i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Role function Get-Role { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="GetRole" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Set-DomainFederationSettings # Aug 12th 2018 function Set-DomainFederationSettings { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$DomainName, [Parameter(Mandatory=$False)] [string]$ActiveLogOnUri, [Parameter(Mandatory=$False)] [string]$DefaultInteractiveAuthenticationMethod, [Parameter(Mandatory=$False)] [string]$FederationBrandName, [Parameter(Mandatory=$True)] [string]$IssuerUri, [Parameter(Mandatory=$True)] [string]$LogOffUri, [Parameter(Mandatory=$False)] [string]$MetadataExchangeUri, [Parameter(Mandatory=$False)] [string]$NextSigningCertificate, [Parameter(Mandatory=$False)] [string]$OpenIdConnectDiscoveryEndpoint, [Parameter(Mandatory=$True)] [string]$PassiveLogOnUri, [Parameter(Mandatory=$False)] [string]$PasswordChangeUri, [Parameter(Mandatory=$False)] [string]$PasswordResetUri, [Parameter(Mandatory=$False)] [validateset("WsFed","SAMLP")] [string]$PreferredAuthenticationProtocol="WsFed", [Parameter(Mandatory=$False)] [string]$PromptLoginBehavior, [Parameter(Mandatory=$True)] [string]$SigningCertificate, [Parameter(Mandatory=$False)] [string]$SigningCertificateUpdateStatus #[Parameter(Mandatory=$False)] #[Boolean]$SupportsMfa=$true ) Process { $command="SetDomainFederationSettings" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" $(Add-BElement -Parameter "VerifiedDomain" -Value $VerifiedDomain) $(Add-BElement -Parameter "Authentication" -Value "Federated") $(Add-BElement -Parameter "DomainName" -Value $DomainName) <b:FederationSettings xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> $(Add-CElement -Parameter "ActiveLogonUri" -Value $ActiveLogOnUri) $(Add-CElement -Parameter "DefaultInteractiveAuthenticationMethod" -Value $DefaultInteractiveAuthenticationMethod) $(Add-CElement -Parameter "FederationBrandName" -Value $FederationBrandName) $(Add-CElement -Parameter "IssuerUri" -Value $IssuerUri) $(Add-CElement -Parameter "LogOffUri" -Value $LogOffUri) $(Add-CElement -Parameter "MetadataExchangeUri" -Value $MetadataExchangeUri) $(Add-CElement -Parameter "NextSigningCertificate" -Value $NextSigningCertificate) $(Add-CElement -Parameter "OpenIdConnectDiscoveryEndpoint" -Value $OpenIdConnectDiscoveryEndpoint) $(Add-CElement -Parameter "PassiveLogOnUri" -Value $PassiveLogOnUri) $(Add-CElement -Parameter "PasswordChangeUri" -Value $PasswordChangeUri) $(Add-CElement -Parameter "PasswordResetUri" -Value $PasswordResetUri) $(Add-CElement -Parameter "PreferredAuthenticationProtocol" -Value $PreferredAuthenticationProtocol) $(Add-CElement -Parameter "PromptLoginBehavior" -Value $PromptLoginBehavior) $(Add-CElement -Parameter "SigningCertificate" -Value $SigningCertificate) $(Add-CElement -Parameter "SigningCertificateUpdateStatus" -Value $SigningCertificateUpdateStatus) $(Add-CElement -Parameter "SupportsMfa" -Value $SupportsMfa) </b:FederationSettings> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-Group function Set-Group { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Group, [Parameter(Mandatory=$False)] $AssignedLicenses, [Parameter(Mandatory=$False)] $CommonName, [Parameter(Mandatory=$False)] $Description, [Parameter(Mandatory=$False)] $DirSyncProvisioningErrors, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $EmailAddress, [Parameter(Mandatory=$False)] $Errors, [Parameter(Mandatory=$False)] $GroupLicenseProcessingDetail, [ValidateSet('DistributionList','Security','MailEnabledSecurity')] $GroupType="DistributionList", [Parameter(Mandatory=$False)] $IsSystem, [Parameter(Mandatory=$False)] $LastDirSyncTime, [Parameter(Mandatory=$False)] $Licenses, [Parameter(Mandatory=$False)] $ManagedBy, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $ProxyAddresses, [ValidateSet('NotAvailable','Healthy','Error')] $ValidationStatus="NotAvailable" ) Process { $command="SetGroup" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Group xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:AssignedLicenses i:nil="true"/> <c:CommonName i:nil="true"/> <c:Description i:nil="true"/> <c:DirSyncProvisioningErrors i:nil="true"/> <c:DisplayName i:nil="true"/> <c:EmailAddress i:nil="true"/> <c:Errors i:nil="true"/> <c:GroupLicenseProcessingDetail i:nil="true"/> <c:GroupType i:nil="true"/> <c:IsSystem i:nil="true"/> <c:LastDirSyncTime i:nil="true"/> <c:Licenses i:nil="true"/> <c:ManagedBy i:nil="true"/> <c:ObjectId i:nil="true"/> <c:ProxyAddresses i:nil="true"/> <c:ValidationStatus i:nil="true"/> </b:Group> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Verify-Domain2 function Verify-Domain2 { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $FederationSettings, [Parameter(Mandatory=$False)] $ForceTakeover, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="VerifyDomain2" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:FederationSettings i:nil="true"/> <b:ForceTakeover i:nil="true"/> <b:DomainName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-Domain function Set-Domain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Domain, [Parameter(Mandatory=$False)] $Authentication, [Parameter(Mandatory=$False)] $Capabilities, [Parameter(Mandatory=$False)] $IsDefault, [Parameter(Mandatory=$False)] $IsInitial, [Parameter(Mandatory=$False)] $Name, [Parameter(Mandatory=$False)] $RootDomain, [Parameter(Mandatory=$False)] $Status, [Parameter(Mandatory=$False)] $VerificationMethod ) Process { $command="SetDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Domain xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:Authentication i:nil="true"/> <c:Capabilities i:nil="true"/> <c:IsDefault i:nil="true"/> <c:IsInitial i:nil="true"/> <c:Name i:nil="true"/> <c:RootDomain i:nil="true"/> <c:Status i:nil="true"/> <c:VerificationMethod i:nil="true"/> </b:Domain> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Retry-UserProvisioning function Retry-UserProvisioning { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RetryUserProvisioning" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipalCredentials function Remove-ServicePrincipalCredentials { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $KeyIds, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore ) Process { $command="RemoveServicePrincipalCredentials" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:KeyIds i:nil="true"/> <b:MsodsAsKeyStore i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Set-ADDirSyncEnabled # May 8th 2019 function Set-ADSyncEnabled { <# .SYNOPSIS Enables or disables directory synchronization .DESCRIPTION Enables or disables directory synchronization using provisioning API. Enabling / disabling the synchrnoization usually takes less than 10 seconds. Check the status using Get-AADIntCompanyInformation. .Parameter AccessToken Access Token .Parameter Enabled True or False .Example Set-AADIntADSyncEnabled -Enabled $true #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$EnableDirSync ) Process { $command="SetCompanyDirSyncEnabled" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" $(Add-BElement -Parameter "EnableDirSync" -Value $EnableDirSync) "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Change-UserPrincipalName function Change-UserPrincipalName { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] [string]$ImmutableId, [Parameter(Mandatory=$False)] [string]$NewUserPrincipalName, [Parameter(Mandatory=$False)] [string]$NewPassword ) Process { $command="ChangeUserPrincipalName" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:ImmutableId i:nil="true"/> <b:NewUserPrincipalName i:nil="true"/> <b:NewPassword i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get-RoleMembers # Oct 19th 2018 function Get-GlobalAdmins { <# .SYNOPSIS Returns Global Admins .Description Returns Global Admins .Parameter AccessToken Access Token .Example Get-AADIntGlobalAdmins DisplayName UserPrincipalName ----------- ----------------- Admin admin@company.onmicrosoft.com Admin Two admin.two@company.com #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Return role members using well-known Global Admins role object id. return Get-RoleMembers -AccessToken $AccessToken -RoleObjectId "62e90394-69f5-4237-9190-012177145e10" | select @{N='DisplayName'; E={$_.DisplayName}},@{N='UserPrincipalName'; E={$_.EmailAddress}} } } # Get-RoleMembers # Oct 19th 2018 function Get-RoleMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $MemberObjectTypes, [Parameter(Mandatory=$False)] $RoleObjectId ) Process { $command="ListRoleMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleMemberSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:IncludedProperties i:nil="true"/> <c:MemberObjectTypes i:nil="true"/> $(Add-CElement -Parameter "RoleObjectId" -Value $RoleObjectId) </b:RoleMemberSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Return $results.Results.RoleMember } } # Autogenerated Sep 23rd 2018 # Get-AdministrativeUnits function Get-AdministrativeUnits { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnitSearchDefinition, [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $UserObjectId, [Parameter(Mandatory=$False)] $UserPrincipalName ) Process { $command="ListAdministrativeUnits" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnitSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:IncludedProperties i:nil="true"/> <c:UserObjectId i:nil="true"/> <c:UserPrincipalName i:nil="true"/> </b:AdministrativeUnitSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Reset-UserPassword function Reset-UserPassword { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] [Boolean]$ForceChangePasswordOnly, [Parameter(Mandatory=$False)] [Boolean]$ForceChangePassword, [Parameter(Mandatory=$False)] [string]$NewPassword ) Process { $command="ResetUserPassword" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:ForceChangePasswordOnly i:nil="true"/> <b:ForceChangePassword i:nil="true"/> <b:NewPassword i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-PartnerContracts function Navigate-PartnerContracts { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigatePartnerContracts" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-User function Remove-UserByObjectId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] $ObjectId, [Parameter(Mandatory=$False)] [Boolean]$RemoveFromRecycleBin=$False ) Process { $command="RemoveUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:RemoveFromRecycleBin>$(b2s($RemoveFromRecycleBin))</b:RemoveFromRecycleBin> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-Contact function Remove-Contact { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RemoveContact" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-GroupMembers function Add-GroupMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $GroupMembers, [Parameter(Mandatory=$False)] $GroupObjectId ) Process { $command="AddGroupMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:GroupMembers i:nil="true"/> <b:GroupObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-ServicePrincipalByAppPrincipalId function Get-ServicePrincipalByAppPrincipalId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AppPrincipalId ) Process { $command="GetServicePrincipalByAppPrincipalId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AppPrincipalId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Domains function Get-Domains { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $SearchFilter ) Process { $command="ListDomains" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:SearchFilter i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-UserByUpn function Get-UserByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$UserPrincipalName, [Parameter(Mandatory=$False)] [Boolean]$ReturnDeletedUsers=$False ) Process { $command="GetUserByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName>$UserPrincipalName</b:UserPrincipalName> <b:ReturnDeletedUsers>$(b2s($ReturnDeletedUsers))</b:ReturnDeletedUsers> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-CompanySecurityComplianceContactInformation function Set-CompanySecurityComplianceContactInformation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $SecurityComplianceNotificationPhones, [Parameter(Mandatory=$False)] $SecurityComplianceNotificationEmails ) Process { $command="SetCompanySecurityComplianceContactInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:SecurityComplianceNotificationPhones i:nil="true"/> <b:SecurityComplianceNotificationEmails i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-UserByObjectID function Get-UserByObjectId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] $ObjectId, [Parameter(Mandatory=$False)] [Boolean]$ReturnDeletedUsers=$False ) Process { $command="GetUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:ReturnDeletedUsers>$(b2s($ReturnDeletedUsers))</b:ReturnDeletedUsers> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get individual user function Get-User { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(ParameterSetName='ByObjectId',Mandatory=$True)] $ObjectId, [Parameter(ParameterSetName='ByUPN',Mandatory=$True)] $UserPrincipalName, [Parameter(ParameterSetName='ByLiveID',Mandatory=$True)] $LiveID, [Parameter(Mandatory=$False)] [Boolean]$ReturnDeletedUsers=$False ) Process { if($ObjectId -ne $null) { return Get-UserByObjectId -AccessToken $AccessToken -ObjectId $ObjectId -ReturnDeletedUsers $ReturnDeletedUsers } elseif($UserPrincipalName -ne $null) { return Get-UserByUpn -AccessToken $AccessToken -UserPrincipalName $UserPrincipalName -ReturnDeletedUsers $ReturnDeletedUsers } elseif($LiveID -ne $null) { return Get-UserByLiveId -AccessToken $AccessToken -LiveId $LiveID } } } # Remove user function Remove-User { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(ParameterSetName='ByObjectId',Mandatory=$True)] $ObjectId, [Parameter(ParameterSetName='ByUPN',Mandatory=$True)] $UserPrincipalName, [Parameter(Mandatory=$False)] [Boolean]$RemoveFromRecycleBin=$False ) Process { if($ObjectId -ne $null) { return Remove-UserByObjectId -AccessToken $AccessToken -ObjectId $ObjectId -RemoveFromRecycleBin $RemoveFromRecycleBin } elseif($UserPrincipalName -ne $null) { return Remove-UserByUpn -AccessToken $AccessToken -UserPrincipalName $UserPrincipalName -RemoveFromRecycleBin $RemoveFromRecycleBin } } } # Get-ServicePrincipals function Get-ServicePrincipals { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ServicePrincipalSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] $SortField="DisplayName" ) Process { $command="ListServicePrincipals" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipalSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> </b:ServicePrincipalSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Return $results.Results.ServicePrincipal } } # Add-ForeignGroupToRole # Oct 19th 2018 function Add-ForeignGroupToRole { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] $RoleObjectId, [Parameter(Mandatory=$True)] $ForeignCompanyObjectId, [Parameter(Mandatory=$True)] $ForeignGroupObjectId ) Process { $command="AddForeignGroupToRole" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" $(Add-BElement -Parameter "RoleObjectId" -Value $RoleObjectId) $(Add-BElement -Parameter "ForeignCompanyObjectId" -Value $ForeignCompanyObjectId) $(Add-BElement -Parameter "ForeignGroupObjectId" -Value $ForeignGroupObjectId) "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Restore-User function Restore-User { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] [string]$NewUserPrincipalName, [Parameter(Mandatory=$False)] [Boolean]$AutoReconcileProxyConflicts ) Process { $command="RestoreUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:NewUserPrincipalName i:nil="true"/> <b:AutoReconcileProxyConflicts i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-CompanyPasswordSyncEnabled function Set-CompanyPasswordSyncEnabled { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$EnablePasswordSync ) Process { $command="SetCompanyPasswordSyncEnabled" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:EnablePasswordSync i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Restore-UserByUpn function Restore-UserByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$UserPrincipalName, [Parameter(Mandatory=$False)] [string]$NewUserPrincipalName, [Parameter(Mandatory=$False)] [Boolean]$AutoReconcileProxyConflicts ) Process { $command="RestoreUserByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName i:nil="true"/> <b:NewUserPrincipalName i:nil="true"/> <b:AutoReconcileProxyConflicts i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Msol-Connect function Msol-Connect { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$UpdateAvailable ) Process { $command="MsolConnect" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UpdateAvailable i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-GroupMembers function Get-GroupMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $GroupMemberSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $GroupObjectId, [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $MemberObjectTypes ) Process { $command="ListGroupMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:GroupMemberSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:GroupObjectId i:nil="true"/> <c:IncludedProperties i:nil="true"/> <c:MemberObjectTypes i:nil="true"/> </b:GroupMemberSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipalCredentialsByAppPrincipalId function Remove-ServicePrincipalCredentialsByAppPrincipalId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore, [Parameter(Mandatory=$False)] $AppPrincipalId, [Parameter(Mandatory=$False)] $KeyIds ) Process { $command="RemoveServicePrincipalCredentialsByAppPrincipalId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:MsodsAsKeyStore i:nil="true"/> <b:AppPrincipalId i:nil="true"/> <b:KeyIds i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-DomainAuthentication function Set-DomainAuthentication { [cmdletbinding()] Param( <# [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Authentication, [Parameter(Mandatory=$False)] [string]$DomainName #> [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$DomainName, [Parameter(Mandatory=$False)] [string]$ActiveLogOnUri, [Parameter(Mandatory=$False)] [string]$DefaultInteractiveAuthenticationMethod, [Parameter(Mandatory=$False)] [string]$FederationBrandName, [Parameter(Mandatory=$False)] [string]$IssuerUri, [Parameter(Mandatory=$False)] [string]$LogOffUri, [Parameter(Mandatory=$False)] [string]$MetadataExchangeUri, [Parameter(Mandatory=$False)] [string]$NextSigningCertificate, [Parameter(Mandatory=$False)] [string]$OpenIdConnectDiscoveryEndpoint, [Parameter(Mandatory=$False)] [string]$PassiveLogOnUri, [Parameter(Mandatory=$False)] [string]$PasswordChangeUri, [Parameter(Mandatory=$False)] [string]$PasswordResetUri, [Parameter(Mandatory=$False)] [validateset("WsFed","SAMLP")] [string]$PreferredAuthenticationProtocol="WsFed", [Parameter(Mandatory=$False)] [string]$PromptLoginBehavior, [Parameter(Mandatory=$False)] [string]$SigningCertificate, [Parameter(Mandatory=$False)] [string]$SigningCertificateUpdateStatus, [Parameter(Mandatory=$True)] [validateset("Federated","Managed")] [string]$Authentication, [Parameter(Mandatory=$False)] [boolean]$SupportsMfa=$false ) Process { $command="SetDomainAuthentication" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" $(Add-BElement -Parameter "Authentication" -Value $Authentication) $(Add-BElement -Parameter "DomainName" -Value $DomainName) $( if($Authentication -eq "Federated") { '<b:FederationSettings xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration">' $(Add-CElement -Parameter "ActiveLogonUri" -Value $ActiveLogOnUri) $(Add-CElement -Parameter "DefaultInteractiveAuthenticationMethod" -Value $DefaultInteractiveAuthenticationMethod) $(Add-CElement -Parameter "FederationBrandName" -Value $FederationBrandName) $(Add-CElement -Parameter "IssuerUri" -Value $IssuerUri) $(Add-CElement -Parameter "LogOffUri" -Value $LogOffUri) $(Add-CElement -Parameter "MetadataExchangeUri" -Value $MetadataExchangeUri) $(Add-CElement -Parameter "NextSigningCertificate" -Value $NextSigningCertificate) $(Add-CElement -Parameter "OpenIdConnectDiscoveryEndpoint" -Value $OpenIdConnectDiscoveryEndpoint) $(Add-CElement -Parameter "PassiveLogOnUri" -Value $PassiveLogOnUri) $(Add-CElement -Parameter "PasswordChangeUri" -Value $PasswordChangeUri) $(Add-CElement -Parameter "PasswordResetUri" -Value $PasswordResetUri) $(Add-CElement -Parameter "PreferredAuthenticationProtocol" -Value $PreferredAuthenticationProtocol) $(Add-CElement -Parameter "PromptLoginBehavior" -Value $PromptLoginBehavior) $(Add-CElement -Parameter "SigningCertificate" -Value $SigningCertificate) $(Add-CElement -Parameter "SigningCertificateUpdateStatus" -Value $SigningCertificateUpdateStatus) $(Add-CElement -Parameter "SupportsMfa" -Value $SupportsMfa) '</b:FederationSettings>' } else { '<b:FederationSettings i:nil="true"/>' } ) "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-RoleScopedMembers function Remove-RoleScopedMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $RoleMembers, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId, [Parameter(Mandatory=$False)] $RoleObjectId ) Process { $command="RemoveRoleScopedMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleMembers i:nil="true"/> <b:AdministrativeUnitObjectId i:nil="true"/> <b:RoleObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Get-CompanyInformation function Get-CompanyInformation { <# .SYNOPSIS Get company information .DESCRIPTION Get company information as XML document using Provisioning API .Parameter AccessToken Access Token #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ReturnValue ) Process { $command="GetCompanyInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ReturnValue i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # Return $results } } # Autogenerated Sep 23rd 2018 # Add-ServicePrincipalCredentialsBySpn function Add-ServicePrincipalCredentialsBySpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ServicePrincipalName, [Parameter(Mandatory=$False)] $Credentials, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore ) Process { $command="AddServicePrincipalCredentialsBySpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipalName i:nil="true"/> <b:Credentials i:nil="true"/> <b:MsodsAsKeyStore i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Delete-ApplicationPassword function Delete-ApplicationPassword { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$PasswordId, [Parameter(Mandatory=$False)] [string]$UserPrincipalName ) Process { $command="DeleteApplicationPassword" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PasswordId i:nil="true"/> <b:UserPrincipalName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Retry-GroupProvisioning function Retry-GroupProvisioning { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RetryGroupProvisioning" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ServicePrincipalCredentialsBySpn function Remove-ServicePrincipalCredentialsBySpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$ServicePrincipalName, [Parameter(Mandatory=$False)] $KeyIds, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore ) Process { $command="RemoveServicePrincipalCredentialsBySpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ServicePrincipalName i:nil="true"/> <b:KeyIds i:nil="true"/> <b:MsodsAsKeyStore i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-RolesForUserByUpn function Get-RolesForUserByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$UserPrincipalName ) Process { $command="ListRolesForUserByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Update-DirSyncProvisioningError function Update-DirSyncProvisioningError { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="UpdateDirSyncProvisioningError" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-User function New-User { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $LicenseOptions, [Parameter(Mandatory=$False)] $AlternateEmailAddresses, [Parameter(Mandatory=$False)] $AlternateMobilePhones, [Parameter(Mandatory=$False)] $AlternativeSecurityIds, [Parameter(Mandatory=$False)] $BlockCredential, [Parameter(Mandatory=$False)] $City, [Parameter(Mandatory=$False)] $CloudExchangeRecipientDisplayType, [Parameter(Mandatory=$False)] $Country, [Parameter(Mandatory=$False)] $Department, [Parameter(Mandatory=$False)] $DirSyncProvisioningErrors, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $Errors, [Parameter(Mandatory=$False)] $Fax, [Parameter(Mandatory=$False)] $FirstName, [Parameter(Mandatory=$False)] $ImmutableId, [Parameter(Mandatory=$False)] $IndirectLicenseErrors, [Parameter(Mandatory=$False)] $IsBlackberryUser, [Parameter(Mandatory=$False)] $IsLicensed, [Parameter(Mandatory=$False)] $LastDirSyncTime, [Parameter(Mandatory=$False)] $LastName, [Parameter(Mandatory=$False)] $LastPasswordChangeTimestamp, [Parameter(Mandatory=$False)] $LicenseAssignmentDetails, [Parameter(Mandatory=$False)] $LicenseReconciliationNeeded, [Parameter(Mandatory=$False)] $Licenses, [Parameter(Mandatory=$False)] $LiveId, [Parameter(Mandatory=$False)] $MSExchRecipientTypeDetails, [Parameter(Mandatory=$False)] $MSRtcSipDeploymentLocator, [Parameter(Mandatory=$False)] $MSRtcSipPrimaryUserAddress, [Parameter(Mandatory=$False)] $MobilePhone, [Parameter(Mandatory=$False)] $OathTokenMetadata, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $Office, [Parameter(Mandatory=$False)] $OverallProvisioningStatus, [Parameter(Mandatory=$False)] $PasswordNeverExpires, [Parameter(Mandatory=$False)] $PasswordResetNotRequiredDuringActivate, [Parameter(Mandatory=$False)] $PhoneNumber, [Parameter(Mandatory=$False)] $PortalSettings, [Parameter(Mandatory=$False)] $PostalCode, [Parameter(Mandatory=$False)] $PreferredDataLocation, [Parameter(Mandatory=$False)] $PreferredLanguage, [Parameter(Mandatory=$False)] $ProxyAddresses, [Parameter(Mandatory=$False)] $ReleaseTrack, [Parameter(Mandatory=$False)] $ServiceInformation, [Parameter(Mandatory=$False)] $SignInName, [Parameter(Mandatory=$False)] $SoftDeletionTimestamp, [Parameter(Mandatory=$False)] $State, [Parameter(Mandatory=$False)] $StreetAddress, [Parameter(Mandatory=$False)] $StrongAuthenticationMethods, [Parameter(Mandatory=$False)] $StrongAuthenticationPhoneAppDetails, [Parameter(Mandatory=$False)] $StrongAuthenticationProofupTime, [Parameter(Mandatory=$False)] $StrongAuthenticationRequirements, [Parameter(Mandatory=$False)] $StrongAuthenticationUserDetails, [Parameter(Mandatory=$False)] $StrongPasswordRequired, [Parameter(Mandatory=$False)] $StsRefreshTokensValidFrom, [Parameter(Mandatory=$False)] $Title, [Parameter(Mandatory=$False)] $UsageLocation, [Parameter(Mandatory=$False)] $UserLandingPageIdentifierForO365Shell, [Parameter(Mandatory=$False)] $UserPrincipalName, [Parameter(Mandatory=$False)] $UserThemeIdentifierForO365Shell, [ValidateSet('Other','Member','Guest','Viral')] $UserType="Other", [ValidateSet('NotAvailable','Healthy','Error')] $ValidationStatus="NotAvailable", [Parameter(Mandatory=$False)] $WhenCreated, [Parameter(Mandatory=$False)] $LicenseAssignment, [Parameter(Mandatory=$False)] $DisabledServicePlans, [Parameter(Mandatory=$False)] $Error, [Parameter(Mandatory=$False)] $ReferencedObjectId, [Parameter(Mandatory=$False)] $Status, [Parameter(Mandatory=$False)] [Boolean]$ForceChangePassword, [Parameter(Mandatory=$False)] [string]$Password ) Process { $command="AddUser" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ForceChangePassword i:nil="true"/> <b:LicenseAssignment i:nil="true" xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"/> <b:LicenseOptions i:nil="true" xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"/> <b:Password i:nil="true"/> <b:User xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:AlternateEmailAddresses i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <c:AlternateMobilePhones i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <c:AlternativeSecurityIds i:nil="true"/> <c:BlockCredential i:nil="true"/> <c:City i:nil="true"/> <c:CloudExchangeRecipientDisplayType i:nil="true"/> <c:Country i:nil="true"/> <c:Department i:nil="true"/> <c:DirSyncProvisioningErrors i:nil="true"/> <c:DisplayName>$DisplayName</c:DisplayName> <c:Errors i:nil="true"/> <c:Fax i:nil="true"/> <c:FirstName i:nil="true"/> <c:ImmutableId i:nil="true"/> <c:IndirectLicenseErrors i:nil="true"/> <c:IsBlackberryUser i:nil="true"/> <c:IsLicensed i:nil="true"/> <c:LastDirSyncTime i:nil="true"/> <c:LastName i:nil="true"/> <c:LastPasswordChangeTimestamp i:nil="true"/> <c:LicenseAssignmentDetails i:nil="true"/> <c:LicenseReconciliationNeeded i:nil="true"/> <c:Licenses i:nil="true"/> <c:LiveId i:nil="true"/> <c:MSExchRecipientTypeDetails i:nil="true"/> <c:MSRtcSipDeploymentLocator i:nil="true"/> <c:MSRtcSipPrimaryUserAddress i:nil="true"/> <c:MobilePhone i:nil="true"/> <c:ObjectId i:nil="true"/> <c:Office i:nil="true"/> <c:OverallProvisioningStatus>None</c:OverallProvisioningStatus> <c:PasswordNeverExpires i:nil="true"/> <c:PasswordResetNotRequiredDuringActivate i:nil="true"/> <c:PhoneNumber i:nil="true"/> <c:PortalSettings i:nil="true"/> <c:PostalCode i:nil="true"/> <c:PreferredDataLocation i:nil="true"/> <c:PreferredLanguage i:nil="true"/> <c:ProxyAddresses i:nil="true" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <c:ReleaseTrack i:nil="true"/> <c:ServiceInformation i:nil="true"/> <c:SignInName i:nil="true"/> <c:SoftDeletionTimestamp i:nil="true"/> <c:State i:nil="true"/> <c:StreetAddress i:nil="true"/> <c:StrongAuthenticationMethods i:nil="true"/> <c:StrongAuthenticationPhoneAppDetails i:nil="true"/> <c:StrongAuthenticationProofupTime i:nil="true"/> <c:StrongAuthenticationRequirements i:nil="true"/> <c:StrongAuthenticationUserDetails i:nil="true"/> <c:StrongPasswordRequired i:nil="true"/> <c:StsRefreshTokensValidFrom i:nil="true"/> <c:Title i:nil="true"/> <c:UsageLocation i:nil="true"/> <c:UserLandingPageIdentifierForO365Shell i:nil="true"/> <c:UserPrincipalName>$UserPrincipalName</c:UserPrincipalName> <c:UserThemeIdentifierForO365Shell i:nil="true"/> <c:UserType i:nil="true"/> <c:ValidationStatus i:nil="true"/> <c:WhenCreated i:nil="true"/> </b:User> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Change-UserPrincipalNameByUpn function Change-UserPrincipalNameByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$UserPrincipalName, [Parameter(Mandatory=$False)] [string]$ImmutableId, [Parameter(Mandatory=$False)] [string]$NewUserPrincipalName, [Parameter(Mandatory=$False)] [string]$NewPassword ) Process { $command="ChangeUserPrincipalNameByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName i:nil="true"/> <b:ImmutableId i:nil="true"/> <b:NewUserPrincipalName i:nil="true"/> <b:NewPassword i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-CompanyContactInformation function Set-CompanyContactInformation { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $TechnicalNotificationEmails, [Parameter(Mandatory=$False)] $MarketingNotificationEmails ) Process { $command="SetCompanyContactInformation" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:TechnicalNotificationEmails i:nil="true"/> <b:MarketingNotificationEmails i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-AdministrativeUnit function Set-AdministrativeUnit { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnit, [Parameter(Mandatory=$False)] $Description, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="SetAdministrativeUnit" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnit xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:Description i:nil="true"/> <c:DisplayName i:nil="true"/> <c:ObjectId i:nil="true"/> </b:AdministrativeUnit> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-RoleMembersByRoleName function Add-RoleMembersByRoleName { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$RoleName, [Parameter(Mandatory=$False)] $RoleMembers ) Process { $command="AddRoleMembersByRoleName" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleName i:nil="true"/> <b:RoleMembers i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-UserByLiveId function Get-UserByLiveId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$True)] [string]$LiveId ) Process { $command="GetUserByLiveId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:LiveId>$LiveId</b:LiveId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-AdministrativeUnitMembers function Get-AdministrativeUnitMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnitMemberSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId, [Parameter(Mandatory=$False)] $IncludedProperties ) Process { $command="ListAdministrativeUnitMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnitMemberSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:AdministrativeUnitObjectId i:nil="true"/> <c:IncludedProperties i:nil="true"/> </b:AdministrativeUnitMemberSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-AdministrativeUnitMembers function Remove-AdministrativeUnitMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AdministrativeUnitMembers, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId ) Process { $command="RemoveAdministrativeUnitMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AdministrativeUnitMembers i:nil="true"/> <b:AdministrativeUnitObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Retry-ContactProvisioning function Retry-ContactProvisioning { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RetryContactProvisioning" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-AccidentalDeletionThreshold function Set-AccidentalDeletionThreshold { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AccidentalDeletionThreshold ) Process { $command="SetAccidentalDeletionThreshold" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AccidentalDeletionThreshold i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-ForeignGroupFromRole function Remove-ForeignGroupFromRole { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $RoleObjectId, [Parameter(Mandatory=$False)] $ForeignCompanyObjectId, [Parameter(Mandatory=$False)] $ForeignGroupObjectId ) Process { $command="RemoveForeignGroupFromRole" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleObjectId i:nil="true"/> <b:ForeignCompanyObjectId i:nil="true"/> <b:ForeignGroupObjectId i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Set-UserLicenses function Set-UserLicenses { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $AddLicenses, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $RemoveLicenses, [Parameter(Mandatory=$False)] $LicenseOptions ) Process { $command="SetUserLicenses" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:AddLicenses i:nil="true"/> <b:ObjectId>$ObjectId</b:ObjectId> <b:RemoveLicenses i:nil="true"/> <b:LicenseOptions i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-RoleScopedMembers function Get-RoleScopedMembers { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $RoleMemberSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $MemberObjectTypes, [Parameter(Mandatory=$False)] $RoleObjectId ) Process { $command="ListRoleScopedMembers" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:RoleMemberSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:IncludedProperties i:nil="true"/> <c:MemberObjectTypes i:nil="true"/> <c:RoleObjectId i:nil="true"/> </b:RoleMemberSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Remove-Group function Remove-Group { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="RemoveGroup" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-WellKnownGroup function Add-WellKnownGroup { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$WellKnownGroupName ) Process { $command="AddWellKnownGroup" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:WellKnownGroupName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-UsersByStrongAuthentication function Get-UsersByStrongAuthentication { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $UserSearchDefinition, [Parameter(Mandatory=$False)] [int]$PageSize=500, [Parameter(Mandatory=$False)] [string]$SearchString, [ValidateSet('Ascending','Descending')] [string]$SortDirection="Ascending", [ValidateSet('DisplayName','UserPrincipalName','None')] [string]$SortField="None", [Parameter(Mandatory=$False)] $AccountSku, [Parameter(Mandatory=$False)] $AdministrativeUnitObjectId, [Parameter(Mandatory=$False)] $BlackberryUsersOnly, [Parameter(Mandatory=$False)] $City, [Parameter(Mandatory=$False)] $Country, [Parameter(Mandatory=$False)] $Department, [Parameter(Mandatory=$False)] $DomainName, [Parameter(Mandatory=$False)] $EnabledFilter, [Parameter(Mandatory=$False)] $HasErrorsOnly, [Parameter(Mandatory=$False)] $IncludedProperties, [Parameter(Mandatory=$False)] $IndirectLicenseFilter, [Parameter(Mandatory=$False)] $LicenseReconciliationNeededOnly, [Parameter(Mandatory=$False)] $ReturnDeletedUsers, [Parameter(Mandatory=$False)] $State, [Parameter(Mandatory=$False)] $Synchronized, [Parameter(Mandatory=$False)] $Title, [Parameter(Mandatory=$False)] $UnlicensedUsersOnly, [Parameter(Mandatory=$False)] $UsageLocation ) Process { $command="ListUsersByStrongAuthentication" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserSearchDefinition xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:PageSize>$PageSize</c:PageSize> <c:SearchString i:nil="true"/> <c:SortDirection>$SortDirection</c:SortDirection> <c:SortField>$SortField</c:SortField> <c:AccountSku i:nil="true"/> <c:AdministrativeUnitObjectId i:nil="true"/> <c:BlackberryUsersOnly i:nil="true"/> <c:City i:nil="true"/> <c:Country i:nil="true"/> <c:Department i:nil="true"/> <c:DomainName i:nil="true"/> <c:EnabledFilter i:nil="true"/> <c:HasErrorsOnly i:nil="true"/> <c:IncludedProperties i:nil="true"/> <c:IndirectLicenseFilter i:nil="true"/> <c:LicenseReconciliationNeededOnly i:nil="true"/> <c:ReturnDeletedUsers i:nil="true"/> <c:State i:nil="true"/> <c:Synchronized i:nil="true"/> <c:Title i:nil="true"/> <c:UnlicensedUsersOnly i:nil="true"/> <c:UsageLocation i:nil="true"/> </b:UserSearchDefinition> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-Group function Add-Group { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Group, [Parameter(Mandatory=$False)] $AssignedLicenses, [Parameter(Mandatory=$False)] $CommonName, [Parameter(Mandatory=$False)] $Description, [Parameter(Mandatory=$False)] $DirSyncProvisioningErrors, [Parameter(Mandatory=$False)] $DisplayName, [Parameter(Mandatory=$False)] $EmailAddress, [Parameter(Mandatory=$False)] $Errors, [Parameter(Mandatory=$False)] $GroupLicenseProcessingDetail, [ValidateSet('DistributionList','Security','MailEnabledSecurity')] $GroupType="DistributionList", [Parameter(Mandatory=$False)] $IsSystem, [Parameter(Mandatory=$False)] $LastDirSyncTime, [Parameter(Mandatory=$False)] $Licenses, [Parameter(Mandatory=$False)] $ManagedBy, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $ProxyAddresses, [ValidateSet('NotAvailable','Healthy','Error')] $ValidationStatus="NotAvailable" ) Process { $command="AddGroup" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Group xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> <c:AssignedLicenses i:nil="true"/> <c:CommonName i:nil="true"/> <c:Description i:nil="true"/> <c:DirSyncProvisioningErrors i:nil="true"/> <c:DisplayName i:nil="true"/> <c:EmailAddress i:nil="true"/> <c:Errors i:nil="true"/> <c:GroupLicenseProcessingDetail i:nil="true"/> <c:GroupType i:nil="true"/> <c:IsSystem i:nil="true"/> <c:LastDirSyncTime i:nil="true"/> <c:Licenses i:nil="true"/> <c:ManagedBy i:nil="true"/> <c:ObjectId i:nil="true"/> <c:ProxyAddresses i:nil="true"/> <c:ValidationStatus i:nil="true"/> </b:Group> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-ServicePrincipalCredentials function Add-ServicePrincipalCredentials { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId, [Parameter(Mandatory=$False)] $Credentials, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore ) Process { $command="AddServicePrincipalCredentials" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> <b:Credentials i:nil="true"/> <b:MsodsAsKeyStore i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-GroupResults function Navigate-GroupResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateGroupResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Navigate-GroupMemberResults function Navigate-GroupMemberResults { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $PageToNavigate, [Parameter(Mandatory=$False)] $ListContext ) Process { $command="NavigateGroupMemberResults" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:PageToNavigate i:nil="true"/> <b:ListContext i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Reset-StrongAuthenticationMethodByUpn function Reset-StrongAuthenticationMethodByUpn { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$UserPrincipalName ) Process { $command="ResetStrongAuthenticationMethodByUpn" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:UserPrincipalName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-ServicePrincipalCredentialsByAppPrincipalId function Add-ServicePrincipalCredentialsByAppPrincipalId { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $Credentials, [Parameter(Mandatory=$False)] $AppPrincipalId, [Parameter(Mandatory=$False)] [Boolean]$MsodsAsKeyStore ) Process { $command="AddServicePrincipalCredentialsByAppPrincipalId" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Credentials i:nil="true"/> <b:AppPrincipalId i:nil="true"/> <b:MsodsAsKeyStore i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-Group function Get-Group { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ObjectId ) Process { $command="GetGroup" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ObjectId>$ObjectId</b:ObjectId> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-PasswordPolicy function Get-PasswordPolicy { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="GetPasswordPolicy" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DomainName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Add-Domain function New-Domain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ForceTakeover, [Parameter(Mandatory=$False)] $Domain, [Parameter(Mandatory=$False)] [ValidateSet('Managed','Federated')] $Authentication, [Parameter(Mandatory=$False)] $Capabilities, [Parameter(Mandatory=$False)] $IsDefault, [Parameter(Mandatory=$False)] $IsInitial, [Parameter(Mandatory=$False)] $Name, [Parameter(Mandatory=$False)] $RootDomain, [Parameter(Mandatory=$False)] $Status, [Parameter(Mandatory=$False)] $VerificationMethod ) Process { $command="AddDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:Domain xmlns:c="http://schemas.datacontract.org/2004/07/Microsoft.Online.Administration"> $(Add-CElement -Parameter "Authentication" -Value $Authentication) <c:Authentication i:nil="true"/> <c:Capabilities i:nil="true"/> <c:IsDefault i:nil="true"/> <c:IsInitial i:nil="true"/> $(Add-CElement -Parameter "Name" -Value $Name) <c:RootDomain i:nil="true"/> <c:Status i:nil="true"/> <c:VerificationMethod i:nil="true"/> </b:Domain> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Get-HeaderInfo function Get-HeaderInfo { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] $ClientVersionHeader, [Parameter(Mandatory=$False)] [string]$IdentityHeaderName, [Parameter(Mandatory=$False)] $ContractVersionHeader, [Parameter(Mandatory=$False)] [string]$TrackingHeaderName, [Parameter(Mandatory=$False)] [string]$HeaderNameSpace, [Parameter(Mandatory=$False)] $TrackingHeader, [Parameter(Mandatory=$False)] [string]$ContractVersionHeaderName, [Parameter(Mandatory=$False)] $ContextHeader, [Parameter(Mandatory=$False)] $ReturnValue, [Parameter(Mandatory=$False)] [string]$ClientVersionHeaderName, [Parameter(Mandatory=$False)] [string]$ContextHeaderName ) Process { $command="GetHeaderInfo" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:ClientVersionHeader i:nil="true"> <b:IdentityHeaderName i:nil="true"/> <b:ContractVersionHeader i:nil="true"/> <b:TrackingHeaderName i:nil="true"/> <b:HeaderNameSpace i:nil="true"/> <b:TrackingHeader i:nil="true"/> <b:ContractVersionHeaderName i:nil="true"/> <b:ContextHeader i:nil="true"/> <b:ReturnValue i:nil="true"/> <b:ClientVersionHeaderName i:nil="true"/> <b:ContextHeaderName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Autogenerated Sep 23rd 2018 # Verify-EmailVerifiedDomain function Verify-EmailVerifiedDomain { [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken, [Parameter(Mandatory=$False)] [string]$DomainName ) Process { $command="VerifyEmailVerifiedDomain" # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Create the body for getting users $request_elements=@" <b:DomainName i:nil="true"/> "@ # Create the envelope and call the API $response=Call-ProvisioningAPI(Create-Envelope $AccessToken $command $request_elements) # Get the results $results = Parse-SOAPResponse($Response) # TODO: do something with results $results } } # Gets SharePoint Service Information function Get-SPOServiceInformation { <# .SYNOPSIS Get SharePoint Online service information. .DESCRIPTION Get SharePoint Online service information. .Parameter AccessToken Access Token .Example PS C:\>Get-AADIntSPOServiceInformation CreatedOn : 6/26/2018 11:16:12 AM ServiceInformation_LastChangeDate : 9/27/2018 3:48:29 PM EnableOneDriveforSuiteUsers : False InstanceId : 13f137d4-1920-4174-8b37-d87acec0228a LastModifiedOn : 9/27/2018 3:52:16 PM OfficeGraphUrl : https://company-my.sharepoint.com/_layouts/15/me.aspx RootAdminUrl : https://company-admin.sharepoint.com/ RootIWSPOUrl : https://company-my.sharepoint.com/ SPO_LegacyPublicWebSiteEditPage : Pages/Forms/AllItems.aspx SPO_LegacyPublicWebSitePublicUrl : SPO_LegacyPublicWebSiteUrl : SPO_MySiteHostUrl : https://company-my.sharepoint.com/ SPO_MySiteHost_AboutMeUrl : https://company-my.sharepoint.com/person.aspx SPO_MySiteHost_DocumentsUrl : https://company-my.sharepoint.com/_layouts/15/MySite.aspx?MySiteRedirect=AllDocuments SPO_MySiteHost_NewsFeedUrl : https://company-my.sharepoint.com/default.aspx SPO_MySiteHost_ProjectSiteUrl : https://company-my.sharepoint.com/_layouts/15/MyProjects.aspx SPO_MySiteHost_SitesUrl : https://company-my.sharepoint.com/_layouts/15/MySite.aspx?MySiteRedirect=AllSites SPO_PublicWebSitePublicUrl : SPO_PublicWebSiteUrl : NotSupported SPO_RegionalRootSiteUrl : https://company.sharepoint.com/ SPO_RootSiteUrl : https://company.sharepoint.com/ SPO_TenantAdminUrl : https://company-admin.sharepoint.com/ SPO_TenantAdmin_CreateSiteCollectionUrl : https://company-admin.sharepoint.com/_layouts/15/online/CreateSiteFull.aspx SPO_TenantAdmin_ProjectAdminUrl : https://company-admin.sharepoint.com/ SPO_TenantAdmin_ViewSiteCollectionsUrl : https://company-admin.sharepoint.com/ SPO_TenantUpgradeUrl : https://company-admin.sharepoint.com/ ShowSites_InitialVisibility : True ShowSkyDrivePro_InitialVisibility : True ShowYammerNewsFeed_InitialVisibility : True VideoPortalServerRelativeUrl : /portals/hub/_layouts/15/videohome.aspx #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Set variables $attributes=@{} # Get service information and parse SPO data $ServiceInformation = Get-CompanyInformation -AccessToken $AccessToken $service_info=Parse-ServiceInformation $ServiceInformation.ServiceInformation foreach($name in $service_info.Keys) { if($name.toLower().StartsWith("sharepoint")) { $value=$service_info[$name] foreach($attribute in $value) { $attributes[$attribute.Name]=$attribute.Value } } } # Return return New-Object -TypeName PSObject -Property $attributes } } # Gets Office 365 service location function Get-ServiceLocations { <# .SYNOPSIS Get service location information. .DESCRIPTION Get service location information. .Parameter AccessToken Access Token .Example PS C:\>Get-AADIntServiceLocations | Sort Name | ft Region Instance Name State Country ------ -------- ---- ----- ------- EU EUGB01 AadAllTenantsNotifications GB NA NA003 AADPremiumService US EU Prod03 Adallom GB NA NA001 AzureAdvancedThreatAnalytics US NA NA033 BDM US NA * BecWSClients US NA NA001 Deskless US EU EU003 DirectoryToCosmos GB EU EURP154-001-01 exchange IE EU emea04-02 ExchangeOnlineProtection NL NA NA001 Metro US EU EMEA-1E-S2 MicrosoftCommunicationsOnline NL NA NorthAmerica1 MicrosoftOffice US NA NA001 MicrosoftStream US NA NA001 MultiFactorService US NA NA001 OfficeForms US NA NA001 PowerAppsService US EU EU001 PowerBI IR NA NA001 ProcessSimple US EU PROD_EU_Org_Ring_140 ProjectWorkManagement NL EU EU RMSOnline NL EU PROD_MSUB01_02 SCO IE EU SPOS1265 SharePoint NL NA NA002 SMIT US NA NA001 Sway US NA NA001 TeamspaceAPI US NA NA001 To-Do US NA NA003 YammerEnterprise US #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Get service information $ServiceInformation = Get-CompanyInformation -AccessToken $AccessToken # Loop through services and return a PS object foreach($service in $ServiceInformation.ServiceInstanceInformation.ServiceInstanceInformation) { $attributes=@{} $attributes["Name"] = $service.ServiceInstance.Split("/")[0] $attributes["Instance"] = $service.ServiceInstance.Split("/")[1] $attributes["Country"] = $service.GeographicLocation.Country $attributes["Region"] = $service.GeographicLocation.Region $attributes["State"] = $service.GeographicLocation.State # Return New-Object -TypeName PSObject -Property $attributes } } } # Gets company tags function Get-CompanyTags { <# .SYNOPSIS Get company tags. .DESCRIPTION Get company tags, such as tenant version and update status. .Parameter AccessToken Access Token .Example PS C:\>Get-AADIntCompanyTags azure.microsoft.com/azure=active o365.microsoft.com/startdate=635711754831829038 o365.microsoft.com/version=15 o365.microsoft.com/signupexperience=GeminiSignUpUI o365.microsoft.com/14to15UpgradeScheduled=True o365.microsoft.com/14to15UpgradeCompletedDate=04-16-2013 #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Get service information $ServiceInformation = Get-CompanyInformation -AccessToken $AccessToken # Return $ServiceInformation.CompanyTags.string } } # Gets service plans function Get-ServicePlans { <# .SYNOPSIS Get service plans. .DESCRIPTION Get service plans assigned to tenant. .Parameter AccessToken Access Token .Example PS C:\>Get-AADServicePlans | ft SKU ServicePlanId ServiceName ServiceType AssignedTimestamp CapabilityStatus ProvisioningStatus --- ------------- ----------- ----------- ----------------- ---------------- ------------------ ENTERPRISEPREMIUM b1188c4c-1b36-4018-b48b-ee07604f6feb PAM_ENTERPRISE Exchange 2018-09-27T15:47:45Z Enabled Success 76846ad7-7776-4c40-a281-a386362dd1b9 ProcessSimple 2018-09-27T15:47:25Z Deleted c87f142c-d1e9-4363-8630-aaea9c4d9ae5 To-Do 2018-09-27T15:47:24Z Deleted c68f8d98-5534-41c8-bf36-22fa496fa792 PowerAppsService 2018-09-27T15:47:25Z Deleted 9e700747-8b1d-45e5-ab8d-ef187ceec156 MicrosoftStream 2018-09-27T15:47:25Z Deleted 2789c901-c14e-48ab-a76a-be334d9d793a OfficeForms 2018-09-27T15:47:25Z Deleted ENTERPRISEPREMIUM 9f431833-0334-42de-a7dc-70aa40db46db LOCKBOX_ENTERPRISE Exchange 2018-08-27T05:46:50Z Enabled Success ENTERPRISEPREMIUM 3fb82609-8c27-4f7b-bd51-30634711ee67 BPOS_S_TODO_3 To-Do 2018-08-27T05:46:50Z Enabled Success ENTERPRISEPREMIUM 7547a3fe-08ee-4ccb-b430-5077c5041653 YAMMER_ENTERPRISE YammerEnterprise 2018-08-27T05:46:51Z Enabled Success #> [cmdletbinding()] Param( [Parameter(Mandatory=$False)] [String]$AccessToken ) Process { # Get from cache if not provided $AccessToken = Get-AccessTokenFromCache($AccessToken) # Get service information $TenantInformation = Get-TenantDetails -AccessToken $AccessToken # Get SKUs $skus = Get-AccountSkus -AccessToken $AccessToken foreach($plan in $TenantInformation.assignedPlans) { $attributes = @{} $attributes.AssignedTimestamp = $plan.assignedTimestamp $attributes.CapabilityStatus = $plan.capabilityStatus $attributes.ServicePlanId = $plan.servicePlanId # Get info from sku $skuInfo = Get-SkuAndServiceName -SKUs $skus -ServicePlanId $plan.servicePlanId $attributes.SKU = $skuInfo.SkuName $attributes.ServiceType = $skuInfo.ServiceType $attributes.ServiceName = $skuInfo.ServiceName $attributes.ProvisioningStatus = $skuInfo.ProvisioningStatus # If or not attached to any sku or if deleted, no info in SKU if([string]::IsNullOrEmpty($attributes.ServiceType)) { $attributes.ServiceType = $plan.service } New-Object psobject -Property $attributes } } } |