Zero-effort module setup
Scheduler-friendly
Easy export
Frequently updated
Zero-effort module setup
Scheduler-friendly
Easy export
Frequently updated
Download
Grab the .ps1 scriptRun
Execute in PowerShellDone
View the resultsJust execute ./<scriptname>.ps1 and instantly generate reports or perform management tasks.
Effortlessly audit group membership changes in Microsoft 365 with this PowerShell script. Access granular reports for robust security!
This PowerShell script helps to find who created a user account in Microsoft 365 with ease. Download the script now and identify the suspicious accounts.
This PowerShell script helps to find who created a user account in Microsoft 365 with ease. Download the script now and identify the suspicious accounts.
Use this PowerShell script to quickly audit when user accounts are disabled or re-enabled in Microsoft 365.
Try this quick, secure, and comprehensive PowerShell script to automate Microsoft 365 user offboarding.
The Microsoft Entra admin center and Graph API don't support external user conversion in bulk. This PowerShell script handles bulk conversion of external to internal users by importing CSV while preserving access and existing permissions.
This script disables self-service purchase/ trial capability for all the supported M365 products.
Export Entra users in Microsoft 365 with PowerShell script to gain insights into user type, license usage, sign-in status, and more for efficient user management.
This PowerShell exports Office 365 groups a user is member of. With this script, you can generate more than 10 user membership report with advanced filters.
Learn how to find and delete inactive users in Microsoft 365 efficiently to secure your organization & reuse licenses to reduce costs.
This PowerShell script helps you quickly find every configuration in your tenant that uses the deprecated MemberRuleOD operator and makes it easier to identify and update affected resources.
Use this PowerShell script to quickly identify groups with disabled users in Microsoft 365, simplifying tracking of active users.
Execute the PowerShell script to get a comprehensive list of all licensed groups in Microsoft 365 in one go!
This PowerShell script reports the expiry dates of all Microsoft 365 subscriptions and licenses in the tenant. It helps admins track upcoming renewals and avoid service disruption caused by lapsed subscriptions.
Check Microsoft 365 user license assignment path -whether directly or inherited from a group using PowerShell.
Quickly identify unused Microsoft 365 licenses and reclaim them for efficient license management.
This PowerShell script helps admins to identify users last sign-in activity & generates 10+ Microsoft 365 inactive user report using MS Graph PowerShell.
List Microsoft 365 user's direct membership, admin roles assigned & administrative units (AU) in Entra ID they are members of using PowerShell.
Learn how to get nested groups in Microsoft 365 using PowerShell for managing group hierarchies efficiently.
This PowerShell script gets the storage used by Office 365 Groups using Get-UnifiedGroup & exports the Office 365 Groups storage report to a CSV file.
This PowerShell script exports Office 365 guest user report along with guest user's group membership info. You can also get stale guests using this script.
Track guest users' last login time report to avoid inactive/stale guest accounts in the organization.
Find and remove direct licenses for users with group-inherited licenses in Microsoft 365 using PowerShell.
MS Graph exposes Last Successful Sign-in Date Report for Microsoft 365 Users. Download the PowerShell script to export 10+ last successful sign-in reports.
This PowerShell script exports Office 365 license expiry date with subscription plan, subscribed date, type, subscription expiry date and status to CSV file.
Learn how to find unlicensed users in Microsoft 365 using PowerShell and streamline your license management.
Export Microsoft 365 license cost report with PowerShell. Optimize costs, track usage, and manage licenses effectively.
MS Graph exposes Last Successful Sign-in Date Report for Microsoft 365 Users. Download the PowerShell script to export 10+ last successful sign-in reports.
Find all Microsoft 365 users with group-based license assignment, spot disabled users, and identify license errors using PowerShell.
Simplify Microsoft 365 user deletion management. Delete, restore, or permanently remove users in bulk using an all-in-one PowerShell script.
The native admin centres do not support bulk management of Microsoft 365 groups. This PowerShell script performs 19 management actions to manage Microsoft 365 groups effectively, including both single and bulk operations.
This All-in-One PowerShell script helps admins to manage Microsoft 365 licenses effectively with 11 reporting and license assignment removal actions.
This Microsoft 365 group report script exports all Microsoft 365 groups such as distribution list, security group, unified groups and their members to CSV.
The native admin center shows who holds licenses but not how to optimize them. This Microsoft 365 license optimization tool includes 16 actions to identify license waste and cut licensing costs through single and bulk actions.
This PowerShell script exports Office 365 admin report to CSV. Also, you can generate admin role group members report by using in-built params.
This PowerShell script exports 10+ Office 365 user manager reports and direct reports to CSV file along with the most required attributes.
Using this script administrator can export all Office 365 licensed users with their assigned licenses, services, and service status.
This PowerShell script exports a Microsoft 365 users' logon history report, enabling administrators to track users' login activities.
This All-in-One PowerShell script can perform more than 10 Office 365 license reporting and management activities, including bulk assign or remove licenses.
Set up manager for Office 365 users by Set-AzureADUserManager. This PowerShell script sets up for multiple users based on 10+user properties.
Learn how to get app registrations with expiring client secrets and certificates using PowerShell to avoid downtime & app risks.
The script helps security teams rebuild the user's activity timeline by collecting session ID-based audit logs in a consistent and easy-to-analyze format.
Execute the PowerShell script to exclusively audit DLP policy matches across workloads like Exchange, SharePoint, OneDrive, and Teams.
This PowerShell script audits Microsoft Entra ID application operations such as app registration creation, permission changes, and deletions. It helps admins track who changed which app and when, strengthening app governance.
The script helps to audit external user activities and identify suspicious incidents, which lead to sensitive data leakage, security threats, and attacks.
Export all Microsoft 365 failed login attempts with PowerShell script to identify unauthorized access attempts and address potential security risks before they escalate.
Audit Microsoft 365 admin activity using PowerShell to ensure appropriate use of admin privileges and enhance your Microsoft 365 security.
This PowerShell script exports Office 365 user's activity report to a CSV file with Activity Time, User, Operation, Result, Workload and Detailed Audit info.
Audit PIM role activations and deactivations in Microsoft Entra to maintain control over privileged access and detect unusual admin activity.
Automates 8 essential best practices for remediating a compromised Microsoft 365 account, helping you respond quickly and consistently.
Get Azure AD devices report using PowerShell now for continuous monitoring of devices in and around your organization and thereby protecting the Office 365.
Download this PowerShell script to retrieve per-user MFA status using MS Graph and export the report to CSV file.
This script automatically installs and connects to the Microsoft Graph PowerShell SDK module.
This ready-to-run script helps you register Azure app to connect MS Graph PowerShell through certificate. Download it to automate the process easily.
This "All-in-One" PowerShell script helps to connect all Microsoft 365 services using PowerShell with MFA/non-MFA account.
This PowerShell script identifies Office 365 admins without MFA and enables MFA for them. Also, you can enable MFA considering license status.
Export Conditional Access policies using PowerShell for efficient CA policy management and enhanced Microsoft 365 security.
Discover how to export comprehensive sign-in reports for Microsoft 365 users using PowerShell. Enhance security with practical execution examples for streamlined reporting.
This script exports Microsoft 365 users and their MFA status using Microsoft Graph PowerShell.
Learn how to export all app registrations along with their client secrets and certificates, including their expiration status, expiry dates, and other details. It helps you track active and expired credentials for Microsoft Entra apps.
By scheduling the PowerShell script in Task Scheduler, you can receive real-time alerts for break glass account sign-ins and related activities.
Run the PowerShell script to quickly retrieve a list of all enterprise apps and their owners- no more manual searches!
Automatically send a daily Microsoft 365 user sign-in summary email with a CSV file and an easy one-glance HTML report to quickly detect suspicious sign-ins.
Export all Entra Enterprise applications and their permissions with PowerShell script to prevent misuse of its privileges.
Use the PowerShell script to list all risky users in Microsoft Entra for early risk detection, proactive remediation, and enhanced identity protection.
Export self-service password reset status reports using PowerShell to monitor user password resets and increase Microsoft 365 security.
Identify MFA deployment source methods whether it's per-user MFA, security defaults, or Conditional Access policies.
Weak authentication methods can be a gateway for attacks & data leaks. Quickly review Microsoft 365 users' registered MFA authentication methods with this PowerShell script!
This PowerShell script monitors client secrets and certificates of Microsoft Entra ID app registrations and alerts admins before they expire. Scheduling it helps prevent app downtime from expired credentials.
This PowerShell script exports 7+ Microsoft 365 last password change date & Password expiry reports to CSV.
This PowerShell script exports Office 365 users' MFA status with Default MFA Method, AllMFAMethods, MFAPhone, MFAEmail, LicenseStatus, IsAdmin, SignInStatus.
This PowerShell script blocks the automatic installation of the Microsoft Search in Bing extension for Google Chrome across Microsoft 365. It helps admins avoid the unwanted default-search change on managed devices.
This PowerShell script helps to reset MFA methods for M365 users, and it covers 25+ real time scenarios. For example,
Download this PowerShell script to remove phone-based MFA for users in Microsoft 365.
The PowerShell script exports Office 365 archive mailbox size report to CSV file along with archive quota, archive status, archive name, unlimited archiving.
This PowerShell script helps to find who deleted email from the mailboxes and exports email deletion audit records to CSV file.
This PowerShell script helps to audit mailbox permission changes, such as adding and removing full access, send as & send on behalf permissions in Office 365.
This PowerShell script helps to audit Send As emails and finds who sent email from the delegated mailbox using Send As permission.
Learn how to audit shared mailbox activities with PowerShell to streamline mailbox management and enhance security.
This PowerShell script helps to audit shared mailbox email deletion and exports key details such as deletion time, users who deleted emails, deletion type, no.of deleted emails, email subjects, folder name, and more.
Learn how to automate email signatures to have standard signature within tenant, ensure brand consistency, and more to improve efficiency.
This PowerShell script helps you transfer meetings from one organizer to another. For multiple organizers, you can provide the organizer details in a CSV file. The script creates a CSV file with the transfer status of each meeting.
Admins can set up an email signature in Outlook using plain text or HTML templates. Unlock the full potential of script to solve more use cases.
This PowerShell script deploys a standardized HTML email signature for Outlook mailboxes across Microsoft 365. It lets admins roll out consistent, branded signatures organization-wide without configuring each user manually.
We have written a user-friendly PowerShell script to connect Exchange Online PowerShell with MFA/non-MFA account.
Are you searching for a way to automate distribution list migrations? Here is the PowerShell script to upgrade the distribution lists to Microsoft 365 groups.
This PowerShell script helps admins to convert user mailboxes to shared mailboxes.
Quickly Copy Members from One Distribution List to Another in Microsoft 365-no manual work needed.
This PowerShell script deletes older emails in Outlook after X number of days using the Search-Mailbox and DeleteContent.
Quickly enable mailbox auditing in Office 365 using this PowerShell script or you can enable mailbox auditing for all Office 365 users by default.
Say goodbye to messy mailbox exports. Our PowerShell script for Microsoft 365 lets you export all mailbox types with clean formatting!
Export distribution groups report in Microsoft 365 with this PowerShell script to view display name, external sender, authorized members, and more. It helps you identify empty DLs and remove any duplicate distribution lists.
This PowerShell script exports O365 mailbox hold report and helps to identify the type of holds (litigation, in-place hold, retention) placed on the mailbox
Download the PowerShell script to effortlessly generate a comprehensive mailbox quota report and keep your email system running smoothly.
Using this PowerShell script, you can identify non-audited mailbox activities and improve the mailbox security by enabling them.
External email warning messages can be configured using mail flow rule. It prepends 'External' to subject of email that originated from outside of the org.
Identify distribution lists with external users in Microsoft 365 to prevent sensitive information from being shared with unauthorized users.
Download this handy PowerShell script to identify inactive distribution lists in the organization using message trace report.
This PowerShell script helps to find inbox rules configured with external email forwarding (forwards emails to external users) and export them to CSV file.
Run the PowerShell script to track unlicensed shared mailboxes allowing direct sign-in access in Microsoft 365.
This PowerShell script helps admins to find out who sent what email from the shared mailbox in your Office 365 environment.
This script helps to get all Office 365 email addresses, including SMTP address and alias. Also, you can export reports based on the mailbox type.
This PowerShell script helps to get calendar permissions for all the Office 365 mailboxes. Also, it exports 6 different mailbox permission reports to CSV.
This PowerShell script lists all Office 365 distribution groups a user is member of. You can also generate reports for all or list of users.
This PowerShell script gets mailbox automatic reply configuration using PowerShell and export them to CSV to find users' out of office configuration.
Get detailed insights on mailbox folder permissions in Exchange Online to prevent excessive folder privileges and improve mailbox security.
Get detailed mailbox folder statistics for all EXO mailboxes with this PS script. It solves all use cases and helps to optimize storage.
This PowerShell script exports Office 365 nested distribution group members to two CSV files, one with summary & another with detailed info.
Learn how to identify and block external email forwarding configurations that risk your organization efficiently using PowerShell script.
Learn how to identify and block shared mailbox sign-in using a PowerShell script to prevent unauthorized access and secure your organization exposing sensitive data.
This script automatically installs Exchange Online Management module and connect to Exchange Online PowerShell.
The PowerShell script gets list of mailboxes a user has access to & export it to CSV. You can generate report for all users or specific users.
A detailed guide to obtain Microsoft 365 spam and malware reports using PowerShell script to enhance Exchange Online email security.
This PowerShell script exports a number of emails sent and received by a per-user in your Office 365 org. Download mail traffic report for your tenant now!
This PowerShell script exports mailbox size report and quotas to a CSV file. This report helps to analyse mailbox size usage and mailbox warning size.
This PowerShell script exports Office 365 Distribution Group members to CSV file along with Primary SMTP Address, Alias, Group Owner, Members &: Count, etc
This PowerShell script gets Office 365 Dynamic Distribution Group members and exports them to CSV. The script generates both DDL group and members report.
The email forwarding report lists mailboxes that forwards and redirects email to another mailboxes. It considers SMTP forwarding, inbox rules, transport rule
This PowerShell script exports Office 365 users' mailbox delegate permissions like Full access, Send as Send-on-behalf to CSV file with administrative roles.
Non-Owner mailbox access includes administrators, delegates, and external users. Using this PowerShell script, you can export non-owner mailbox access report.
This PowerShell script exports Shared mailbox permission like full access, send as and send on behalf permissions to CSV file.
The Last Logon Time attribute gives inaccurate data to identify the Office 365 mailbox's inactivity. Users' real last logon time report can be retrieved from
Export Office 365 Last Logon Time report to CSV with UserPrincipalName, DisplayName, LastLogonTime, InactiveDays, MailboxType, Licenses, Admin Roles.
In Exchange Online, Plus Addressing is not enabled by default. You can enable it using PowerShell. Plus Addressing helps to create dynamic custom email address.
This script helps to remove email forwarding configurations & disables inbox rules with forwarding for specific users & bulk users through CSV.
Utilize pre-built PowerShell script to effortlessly export M365 room mailbox reports for detailed analysis and streamlined management of meeting rooms.
Obtain Office 365 room mailbox usage statistics using PowerShell scripting and get valuable insights into meeting statistics and booking trends.
Microsoft 365 doesn't save sent emails in the shared mailbox by default. Admins need to enable settings to save sent items in shared mailbox.
Set up recurring Out of Office automatic replies in Outlook for Microsoft 365 users using scheduling tools like Windows Task Scheduler or Azure Automation.
This PowerShell script helps admins to get a list of shared mailbox in Office 365 and their details like archive status, license, forwarding config, etc.
Discover how to efficiently get shared mailbox size with our PowerShell script in Microsoft 365. Export detailed report and optimize storage.
Export emails received from external domains in Exchange Online using this PowerShell script to detect suspicious emails and enhance email security.
This PowerShell script enables "Anyone" (external) sharing for specific SharePoint Online sites. It can allow external sharing for one or many sites while restricting the rest, and logs every change applied.
This PowerShell script audits all the anonymous link activities such as link creation, updation, removal, access and export the report to CSV file.
Audit file access in SharePoint Online using PowerShell to prevent unauthorized access for effective SharePoint Online management.
Audit file activities in SharePoint Online and OneDrive to identify suspicious activities, excessive privileges, and safeguard data.
This PowerShell script helps to audit file deletion in SharePoint and OneDrive for Business. With this report, admins can identify who deleted files in O365.
Audit file downloads in SharePoint Online and OneDrive using PowerShell to pinpoint who downloaded what file and when.
This PowerShell script audits external sharing activities in SharePoint Online & OneDrive and exports external sharing reports to CSV.
Discover an easy way to track folder activities in SharePoint and OneDrive using a versatile PowerShell script.
This PowerShell script helps admin to audit SharePoint group membership changes and permission changes & export the report to CSV file.
Version history eating up your storage? Use this script to clean up old file versions in SharePoint Online and keep your Microsoft 365 environment optimized.
Download the handy PowerShell script to quickly compile a list of all users' OneDrive URLs in your organization
This PowerShell script exports all the external users in SharePoint Online to CSV file. You can also get the external users in the SharePoint sites.
Learn how to retrieve SharePoint file & folder storage usage report using PowerShell and optimize your storage.
Learn how to export SharePoint Online file version history report using PowerShell and keep track of all version changes.
Learn how to retrieve all expired anonymous links in SharePoint Online using PowerShell. Prevent unauthorized access by identifying and revoking links that are no longer valid.
Use this PowerShell script to export all anonymous sharing links along with shared link, file/folder name, access type, link expiry date, and more. It helps you identify any sensitive data exposure and remove unnecessary access links.
This script retrieves all types of sharing links along with link URLs, file or folder names, access types, expiry settings, and more. Use it to identify potential data exposure caused by unwanted sharing links.
Learn how to get all subsites in SharePoint Online using PowerShell and keep track of your site structure for proper organization.
Execute the PowerShell script to get all lists and their item count in SharePoint Online.
This script gives a clear view of how sensitivity labels are applied across SharePoint Online files, making it easier to spot misclassified content and review protection coverage.
Discover which retention policies are applied to protect your SharePoint sites and manage deletions smoothly.
Retrieve files and folders created by external users in SharePoint Online to avoid unwanted or malicious activity and improve security.
Learn how to export OneDrive usage report in Microsoft 365 to manage storage and improve efficiency in the organization.
Automate removing SharePoint sharing links based on real-world needs like anonymous, expired or people-specific links.
This PowerShell script exports Office 365 external users' file access report to CSV. This helps to find who accessed the file and when in SharePoint Online.
Track file-sharing activity logs in Microsoft Teams to ensure data protection and compliance by auditing shared files across teams.
Audit Microsoft Teams channel creations using PowerShell to ensure efficient resource management and security in the organization.
This PowerShell script helps admins to audit Teams membership changes, including private and shared channel membership to ensure data security.
This PowerShell script helps to audit Microsoft Teams meetings and their participants list.
Not sure how to handle inactive Microsoft Teams? Learn how to auto-archive inactive teams in Microsoft Teams to ensure security while keeping all your conversations and files accessible.
This PowerShell script helps admins to export Microsoft Teams shared channel report and it's membership details to CSV file.
Identify and manage inactive Microsoft Teams with PowerShell scripts to clean up unused teams, optimize resources, and prevent team overload.
This script helps to find Microsoft Teams without an owner and manage them properly by assigning new owner to orphaned teams using PowerShell.
Execute this PowerShell script to list all Teams Channels with external members, ensuring secure external collaboration in Microsoft Teams.
Learn how to find out the Teams meetings attended by a specific user effectively using our PowerShell script.
Execute the PowerShell script to list the teams with guests and external access to secure external access in Microsoft Teams.
Download this handy PowerShell script to view and manage Microsoft Teams tag members for your entire organization
Export 6 Microsoft Teams meeting call quality reports using PowerShell, which helps you analyze the network, device, and audio health issues.
This PowerShell script can generate 8 different MS Teams reports and export them to CSV file.
Restricting Private Channel creation for set of users is a major task in an organization. Using our script, you can manage Private Channel creation for users.
Export Microsoft Teams Private Channel membership report for monitoring team collaboration, ensuring compliance, and enhancing overall security.
Audit meetings device usage in Microsoft Teams using PowerShell script to enforce security compliance and verify that only approved devices access your organization data.
No results match your search.
Discover ready-to-use PowerShell script collections for Microsoft 365 administration.
Get visibility into license usage across your tenant and take action with bulk assign, remove, and cleanup operations. Identify unused licenses and uncover cost-saving opportunities.
Secure your SharePoint Online and OneDrive environments with scripts that audit file activities, permission changes, external sharing risks, etc. Enforce security best practices across sites confidently.
Gain deep insights into daily trends with advanced auditing scripts to monitor sign-in activities, admin actions, and key usage insights, including mailbox activity and Teams meeting details.
Get complete insights on users, including MFA status, password details, activities, and automate employee offboarding tasks.
Automate email signature deployment and management across Exchange Online. Create consistent, branded signatures with centralized control.
Unlock complete tenant control with the Microsoft Graph PowerShell SDKāautomate and generate reports across users, groups, devices, admin roles, and more.
Monitor and manage Microsoft Teams with scripts that provide detailed insights into teams, channels, and memberships.
Built from real admin pain points. Shared for the community.
Automatically detects and installs missing PowerShell modules with admin consent. No manual installation is needed.
Save output as CSV files for quick analysis and effortless sharing.
Run scripts automatically at scheduled intervals to keep insights current.
Automatically deliver generated reports and alerts for critical activities via email in supported scripts.
Modify and extend scripts to fit your organization's unique needs.
Scripts are regularly updated to handle deprecated modules or cmdlets and include enhancements.
Yes. All scripts in this gallery are open source and available free of charge. You can download, use, and modify them to meet your organization's requirements.
Most scripts require PowerShell 7 or Windows PowerShell 5.1 along with the necessary Microsoft 365 PowerShell modules. The scripts automatically verify module availability and can install missing modules with your approval before execution.
The required permissions vary depending on the script. Refer to the linked blog post for each script to find the required Microsoft Graph API permissions, administrative roles, module requirements, and setup instructions before execution.
Yes. Most scripts support certificate-based authentication, allowing you to run them unattended without storing credentials. Simply register an application in Microsoft Entra ID and configure the required API permissions and certificate.
You can schedule the scripts using Windows Task Scheduler, Azure Automation, Azure Functions, or other enterprise automation platforms. Unattended authentication makes them suitable for scheduled execution.
Yes. These scripts can automate a wide range of Microsoft 365 tasks, including reporting, auditing, user lifecycle management, license management, mailbox administration, security monitoring, and compliance reporting.
Most audit scripts use the Search-UnifiedAuditLog cmdlet. Depending on your Microsoft 365 subscription, audit records can typically be retrieved for up to 180 days without requiring additional add-ons.
The gallery is regularly updated with new scripts and enhancements covering Microsoft 365 administration, security, auditing, reporting, automation, and compliance management.
With thousands of stars, AdminDroid GitHub repository is a favorite among Microsoft 365 admins for reliable automation and reporting.