PowerShell

Microsoft 365 PowerShell


PowerShell Modules for Microsoft 365


            Install-Module AzureAD
            Install-Module MSOnline
            Install-Module ExchangeOnlineManagement
            Install-Module -Name Microsoft.Online.SharePoint.PowerShell         
        

AzureAD and MSOnline both manage Azure Active Directory.


Connecting to Microsoft 365

To use these modules you have to connect to them and authenticate

            Connect-AzureAD
            Connect-MsolService 
            Import-Module ExchangeOnlineManagement
            Connect-ExchangeOnline -UserPrincipalName admin@example.onmicrosoft.com 
            Update-Module -Name Microsoft.Online.SharePoint.PowerShell
            Connect-SPOService -Url https://example-admin.sharepoint.com         
        

After running each of these commands you will be asked to authenticate and the following dialog box will pop up.

Enter your credentials, authenticate then you can use the module


AzureAD

Get-command -Module AzureAD -Verb Get -Noun *user*

            get-command -Module azuread -Verb get -Noun *user*
    
            CommandType     Name                                               Version    Source                                                                                     
            -----------     ----                                               -------    ------                                                                                     
            Cmdlet          Get-AzureADDeviceRegisteredUser                    2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUser                                    2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserAppRoleAssignment                   2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserCreatedObject                       2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserDirectReport                        2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserExtension                           2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserLicenseDetail                       2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserManager                             2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserMembership                          2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserOAuth2PermissionGrant               2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserOwnedDevice                         2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserOwnedObject                         2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserRegisteredDevice                    2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserThumbnailPhoto                      2.0.2.135  AzureAD    
            
        

Get-Command -Module AzureAD -Verb Get -Noun *Device*

            PS C:\Users\Administrator> get-command -Module azuread -Verb get -Noun *device*
    
            CommandType     Name                                               Version    Source                                                                                     
            -----------     ----                                               -------    ------                                                                                     
            Cmdlet          Get-AzureADDevice                                  2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADDeviceConfiguration                     2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADDeviceRegisteredOwner                   2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADDeviceRegisteredUser                    2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserOwnedDevice                         2.0.2.135  AzureAD                                                                                    
            Cmdlet          Get-AzureADUserRegisteredDevice                    2.0.2.135  AzureAD 
            
        

get-command -Module azuread -Noun *license*

            PS C:\Users\Administrator> get-command -Module azuread -Noun *license*
    
            CommandType     Name                                               Version    Source                                                                                     
            -----------     ----                                               -------    ------                                                                                     
            Cmdlet          Get-AzureADUserLicenseDetail                       2.0.2.135  AzureAD                                                                                    
            Cmdlet          Set-AzureADUserLicense                             2.0.2.135  AzureAD 
            
        

Adding a new user with AzureAD

            $PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
            $PasswordProfile.Password = "H1sBoyElroy"
            New-AzureADUser -DisplayName "New User" -PasswordProfile $PasswordProfile -UserPrincipalName "NewUser@example.onmicrosoft.com" -AccountEnabled $true -MailNickName "Newuser"         
        

Licensing User with AzureAD

            set-msoluser -UserPrincipalName "NewUser@example.onmicrosoft.com" -UsageLocation 'au'
            Set-MsolUserLicense -UserPrincipalName "NewUser@example.onmicrosoft.com" -AddLicenses "example:SPB"  
            
        

Get-MsolAccountSku is probably the best way of finding the -AddLicenses value to use above

Adding Employee ID and other extension attributes

First you need to find out what the extension attributes are:

            Get-AzureADUser -ObjectId $adamsId | Select -ExpandProperty ExtensionProperty
    
            Key                         Value                                                                                             
            ---                         -----                                                                                             
            odata.metadata              https://graph.windows.net/3c979ef9-2a07-4d44-9da0-d1cceb66b46a/$metadata#directoryObjects/@Element
            odata.type                  Microsoft.DirectoryServices.User                                                                  
            createdDateTime             3/07/2021 2:58:14 AM                                                                              
            employeeId                  1                                                                                                 
            onPremisesDistinguishedName                                                                                                   
            userIdentities              []    
            
        

The next step is to use the Set-AzureADUserExtension command to change the attribute

 
            Set-AzureADUserExtension -ObjectId $adamsId -ExtensionName employeeId -ExtensionValue $EmployeeNumber 
        

MSOnline

The MSOnline modules do pretty much the same thing as the AzureAD modules only the syntax and default output is different

There are more commands under AzureAD more than twice as many. Here is an example of how they compare.

            PS C:\Users\Administrator> Get-AzureADUser -ObjectId 8a9ad0ac-180d-43dc-b6ff-20a8febf6ab2
    
            ObjectId                             DisplayName UserPrincipalName              UserType
            --------                             ----------- -----------------              --------
            8a9ad0ac-180d-43dc-b6ff-20a8febf6ab2 Adam Ant    aant@pdtadmin.onmicrosoft.com  Member  
            
            
            
            PS C:\Users\Administrator> Get-MsolUser -ObjectId 8a9ad0ac-180d-43dc-b6ff-20a8febf6ab2
            
            UserPrincipalName              DisplayName isLicensed
            -----------------              ----------- ----------
            aant@pdtadmin.onmicrosoft.com  Adam Ant    True       
            
        

There are no usernames in AzureAD so you have to rely on object ids and search strings I like that you can use the UserPrincipalName in Get-MsolUser

When you are working with a single user in AzureAD it is a good idea to assign their objectId to a variable.

Get-Command -Module MSOnline -Verb Get

            PS C:\Users\Administrator> Get-Command -Module MSOnline -Verb Get
    
            CommandType     Name                                               Version    Source                                                                                     
            -----------     ----                                               -------    ------                                                                                     
            Cmdlet          Get-MsolAccountSku                                 1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolAdministrativeUnit                         1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolAdministrativeUnitMember                   1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolCompanyAllowedDataLocation                 1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolCompanyInformation                         1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolContact                                    1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDevice                                     1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDeviceRegistrationServicePolicy            1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDirSyncConfiguration                       1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDirSyncFeatures                            1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDirSyncProvisioningError                   1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDomain                                     1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDomainFederationSettings                   1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolDomainVerificationDns                      1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolFederationProperty                         1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolGroup                                      1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolGroupMember                                1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolHasObjectsWithDirSyncProvisioningErrors    1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolPartnerContract                            1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolPartnerInformation                         1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolPasswordPolicy                             1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolRole                                       1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolRoleMember                                 1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolScopedRoleMember                           1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolServicePrincipal                           1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolServicePrincipalCredential                 1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolSubscription                               1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolUser                                       1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolUserByStrongAuthentication                 1.1.183.57 MSOnline                                                                                   
            Cmdlet          Get-MsolUserRole                                   1.1.183.57 MSOnline    
            
        

Exchange Online


Exchange Online Cheat Sheet


            "Don't run this as a script"
    
            Break;
        
            #region Adding and Removing Distribution Group members
    
                Add-DistributionGroupMember -Identity 'DistributionGroup' -Member memberToAdd
                Remove-DistributionGroupMember -Identity 'DistributionGroup' -Member memberToRemove
                   
            #endregion
        
            #region Add and Remove Permissions
    
                "Adding Calendar Permission"
                add-MailboxFolderPermission -Identity SharingUser":\calendar" -User ShareeUser -AccessRights owner
                "To view permissions"
                Get-MailboxFolderPermission SharingUser:\calendar 
                "To remove Calendar Permission"
                Remove-MailboxFolderPermission -Identity SharingUser":\calendar" -User ShareeUser
                "Adding public folder permissions"
                Add-PublicFolderClientPermission -Identity "\pubicFolderName" -AccessRights owner -User User
                "Adding Mailbox permissions"
                Add-MailboxPermission SharingUsersMailbox -AccessRights fullaccess,deleteitem -User SharedWithUser -AutoMapping $true
                Remove-MailboxPermission SharingUsersMailbox -AccessRights fullaccess,deleteitem -User SharedWithUser
                
            #endregion
        
            #region SendAs and SendOnBehalf
                 
                #SendOnBefalf
                Set-Mailbox sharingMailbox -GrantSendOnBehalfTo sharedWithUser 
                #O365 Sendas
                Add-RecipientPermission Rob.Smith@example.mail.onmicrosoft.com -Trustee me@example.com -AccessRights sendas
                remove-RecipientPermission Rob.Smith@example.mail.onmicrosoft.com -Trustee me@example.com -AccessRights sendas
               
            #endregion
        
            #region Forwarding
            Set-Mailbox -Identity "forwardingMailbox@example.com.au" -ForwardingAddress  "ForwardedToMailbox@example.com.au" -DeliverToMailboxAndForward $true
                #removing Forwarding
                Set-Mailbox -Identity "forwardingingUser" -ForwardingAddress $null -DeliverToMailboxAndForward $false
            #endregion