🔒 Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided MS-102 Domain 1
Domain 1 — Module 6 of 8 75%
6 of 28 overall

MS-102 Study Guide

Domain 1: Deploy and Manage a Microsoft 365 Tenant

  • Establish and Configure Your M365 Tenant
  • Monitor Tenant Health and Network Readiness
  • Adoption Tracking and Microsoft 365 Backup
  • Manage Users, Contacts and External Identities
  • Groups, Shared Mailboxes and Licensing at Scale
  • Automate with PowerShell: Bulk User Operations
  • Roles, Role Groups and Workload Permissions
  • Delegate with Administrative Units and PIM

Domain 2: Implement and Manage Microsoft Entra Identity and Access

  • Prepare for Identity Synchronization
  • Implement Connect Sync and Cloud Sync
  • Monitor and Troubleshoot Identity Sync
  • Authentication Methods and Self-Service Password Reset
  • Password Protection and Authentication Troubleshooting
  • Entra Identity Protection and Risk Policies
  • Conditional Access and MFA Enforcement

Domain 3: Manage Security and Threats by Using Microsoft Defender XDR

  • Defender XDR: Security Posture and Threat Intelligence
  • Investigate Incidents with Advanced Hunting
  • Defender for Office 365: Threat Policies
  • Email Threats, Attack Simulation and Restricted Entities
  • Defender for Endpoint: Onboard and Protect
  • Vulnerability Management
  • Defender for Cloud Apps: Connect and Govern
  • Cloud App Discovery and Activity Monitoring

Domain 4: Manage Compliance by Using Microsoft Purview

  • Sensitive Information Types and Data Classification
  • Retention Labels and Data Lifecycle
  • Sensitivity Labels and Monitoring
  • DLP Policies Across M365 Workloads
  • Endpoint DLP and Alert Response

MS-102 Study Guide

Domain 1: Deploy and Manage a Microsoft 365 Tenant

  • Establish and Configure Your M365 Tenant
  • Monitor Tenant Health and Network Readiness
  • Adoption Tracking and Microsoft 365 Backup
  • Manage Users, Contacts and External Identities
  • Groups, Shared Mailboxes and Licensing at Scale
  • Automate with PowerShell: Bulk User Operations
  • Roles, Role Groups and Workload Permissions
  • Delegate with Administrative Units and PIM

Domain 2: Implement and Manage Microsoft Entra Identity and Access

  • Prepare for Identity Synchronization
  • Implement Connect Sync and Cloud Sync
  • Monitor and Troubleshoot Identity Sync
  • Authentication Methods and Self-Service Password Reset
  • Password Protection and Authentication Troubleshooting
  • Entra Identity Protection and Risk Policies
  • Conditional Access and MFA Enforcement

Domain 3: Manage Security and Threats by Using Microsoft Defender XDR

  • Defender XDR: Security Posture and Threat Intelligence
  • Investigate Incidents with Advanced Hunting
  • Defender for Office 365: Threat Policies
  • Email Threats, Attack Simulation and Restricted Entities
  • Defender for Endpoint: Onboard and Protect
  • Vulnerability Management
  • Defender for Cloud Apps: Connect and Govern
  • Cloud App Discovery and Activity Monitoring

Domain 4: Manage Compliance by Using Microsoft Purview

  • Sensitive Information Types and Data Classification
  • Retention Labels and Data Lifecycle
  • Sensitivity Labels and Monitoring
  • DLP Policies Across M365 Workloads
  • Endpoint DLP and Alert Response
Domain 1: Deploy and Manage a Microsoft 365 Tenant Premium ⏱ ~15 min read

Automate with PowerShell: Bulk User Operations

Use Microsoft Graph PowerShell and Microsoft Entra PowerShell for bulk user creation, licence assignment, attribute updates, and operational automation.

Why PowerShell matters at Expert level

☕ Simple explanation

Clicking through 200 user accounts in the admin center is not administration. It’s suffering.

At the Expert level, you’re expected to know PowerShell — not because the exam is a coding test, but because real M365 admins automate repetitive tasks. Microsoft Graph PowerShell and Microsoft Entra PowerShell are the two toolsets you need to know. They handle everything from bulk user creation to licence audits to reporting.

The exam won’t ask you to write complex scripts from memory, but it WILL ask: “Which cmdlet does Dev use to…” or “What approach is most efficient for…”

Microsoft provides two PowerShell modules for Microsoft 365 and Entra ID management:

  • Microsoft Graph PowerShell SDK (Microsoft.Graph) — the primary module for managing M365 resources through the Microsoft Graph API. Replaces the deprecated Azure AD PowerShell and MSOnline modules.
  • Microsoft Entra PowerShell (Microsoft.Entra) — a newer module specifically for Entra ID operations, built on top of Graph PowerShell with a more intuitive command structure for identity tasks.

Both modules authenticate using delegated (interactive) or application (service principal) permissions, following the Microsoft Graph permission model. The exam tests which module/cmdlet to use and when, not deep scripting skills.

The two PowerShell toolsets

Microsoft Graph PowerShell vs Microsoft Entra PowerShell
FeatureMicrosoft Graph PowerShellMicrosoft Entra PowerShell
Module nameMicrosoft.GraphMicrosoft.Entra
ScopeAll Microsoft Graph resources (users, groups, mail, files, devices, etc.)Microsoft Entra ID focused (users, groups, apps, roles, policies)
ReplacesAzure AD PowerShell, MSOnlineSimplifies Graph PowerShell for identity tasks
AuthenticationConnect-MgGraphConnect-Entra
User creation cmdletNew-MgUserNew-EntraUser
Best forBroad M365 management and automationIdentity-focused operations
Exam relevancePrimary module for bulk operationsKnow it exists and when to prefer it
💡 Exam tip: Deprecated modules

The exam may reference older module names. Key deprecations:

  • MSOnline (Connect-MsolService, Set-MsolUser) — deprecated, replaced by Graph PowerShell
  • Azure AD PowerShell (Connect-AzureAD, New-AzureADUser) — deprecated, replaced by Graph/Entra PowerShell

If the exam asks about the “recommended” or “current” approach, always choose Microsoft Graph PowerShell or Microsoft Entra PowerShell. Never select MSOnline or AzureAD cmdlets unless the question specifically asks about legacy compatibility.

Common bulk operations

Connecting and authenticating

Before any operations, connect to Microsoft Graph:

Connect-MgGraph -Scopes "User.ReadWrite.All","Group.ReadWrite.All"

This triggers an interactive sign-in and requests the specified permissions. For automated scripts, use a service principal with certificate authentication.

Bulk user creation from CSV

Dev’s typical workflow for onboarding a new client’s 200 users:

  1. Prepare the CSV — columns: DisplayName, UserPrincipalName, Password, UsageLocation, Department
  2. Import and create:
Import-Csv users.csv | ForEach-Object {
    New-MgUser -DisplayName $_.DisplayName `
               -UserPrincipalName $_.UserPrincipalName `
               -PasswordProfile @{ Password = $_.Password; ForceChangePasswordNextSignIn = $true } `
               -UsageLocation $_.UsageLocation `
               -Department $_.Department `
               -AccountEnabled:$true
}
  1. Assign licences — using group-based licensing (Module 5) or:
Set-MgUserLicense -UserId "user@domain.com" `
    -AddLicenses @(@{SkuId = "your-sku-id"}) `
    -RemoveLicenses @()

Bulk attribute updates

Update department for 50 users who moved to the new “Digital Innovation” team:

Get-MgUser -Filter "department eq 'IT'" -All |
    Where-Object { $_.JobTitle -like '*innovation*' } |
    ForEach-Object {
        Update-MgUser -UserId $_.Id -Department "Digital Innovation"
    }

Licence audit report

Generate a report of all licensed users and their assigned plans:

Get-MgUser -All -Property DisplayName,UserPrincipalName,AssignedLicenses |
    Where-Object { $_.AssignedLicenses.Count -gt 0 } |
    Select-Object DisplayName, UserPrincipalName,
        @{N='Licences';E={($_.AssignedLicenses | ForEach-Object { $_.SkuId }) -join ','}} |
    Export-Csv "licence-report.csv" -NoTypeInformation
ℹ️ Deep dive: Application vs delegated permissions

For automated scripts (scheduled tasks, CI/CD pipelines), use application permissions with a service principal instead of interactive sign-in:

  1. Register an app in Entra > App registrations
  2. Grant application permissions (e.g., User.ReadWrite.All)
  3. Get admin consent — application permissions require admin consent
  4. Connect with certificate:
Connect-MgGraph -ClientId "app-id" -TenantId "tenant-id" -CertificateThumbprint "thumbprint"

The exam may ask: “Dev needs to run a nightly script that updates user attributes without interactive sign-in. What authentication method should he use?” Answer: Application permissions with a certificate-based service principal.

Microsoft Entra PowerShell for identity tasks

The newer Microsoft Entra PowerShell module simplifies common identity operations:

OperationGraph PowerShellEntra PowerShell
Create userNew-MgUserNew-EntraUser
Get userGet-MgUserGet-EntraUser
Update userUpdate-MgUserSet-EntraUser
Get groupGet-MgGroupGet-EntraGroup
Add group memberNew-MgGroupMemberAdd-EntraGroupMember

The Entra module uses familiar verb-noun patterns that align more closely with traditional PowerShell conventions, making it easier for admins already comfortable with PowerShell.

Key concepts to remember

Question

What has replaced the deprecated Azure AD PowerShell and MSOnline modules?

Click or press Enter to reveal answer

Answer

Microsoft Graph PowerShell (Microsoft.Graph) for broad M365 management, and Microsoft Entra PowerShell (Microsoft.Entra) for identity-focused operations. Both authenticate through Microsoft Graph and use modern authentication (OAuth 2.0).

Click to flip back

Question

What is the difference between delegated and application permissions in Microsoft Graph?

Click or press Enter to reveal answer

Answer

Delegated permissions act on behalf of a signed-in user (interactive sign-in required). Application permissions act as the app itself without a signed-in user (for automated scripts). Application permissions require admin consent and are more powerful — they bypass user context.

Click to flip back

Question

What property must be included when bulk-creating users if you plan to assign licences?

Click or press Enter to reveal answer

Answer

UsageLocation — it's required for licence assignment and must be set during user creation in the CSV or PowerShell script. Without it, user creation succeeds but licence assignment fails.

Click to flip back

Knowledge check

Knowledge Check

Dev needs to run a nightly automated script that disables user accounts for employees flagged by HR as terminated. The script runs from a server with no interactive sign-in. Which authentication method should Dev use?

Knowledge Check

Priya needs to generate a report showing all users who have an M365 E5 licence but haven't signed in for 90 days. Which approach is most efficient?

🎬 Video coming soon


Next up: Roles, Role Groups and Workload Permissions — because not every admin should have Global Admin powers.

← Previous

Groups, Shared Mailboxes and Licensing at Scale

Next →

Roles, Role Groups and Workload Permissions

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.