Sample script for applying EOP settings to multiple tenants

The following sample script lets Microsoft Exchange Online Protection (EOP) admins who manage multiple tenants (companies) use Windows PowerShell to apply configuration settings to their tenants.

To run a script or cmdlet on multiple tenants

  1. Using an application such as Excel, create a .csv file (for example, c:\scripts\inputfile.csv):

  2. In the .csv file, specify two column names: UserName and Cmdlet.

  3. For each row in the .csv file, add the tenant's admin name in the UserName column and the cmdlet to run for that tenant in the Cmdlet column. For example, use and Get-AcceptedDomain.

  4. Copy the RunCmdletOnMultipleTenants.ps1 script to an editor like Notepad, and then save the file to a location (like c:\scripts) that makes .ps1 files easy to find.

  5. Run the script by using the following syntax:

     & "<file path>\RunCmdletOnMultipleTenants.ps1" "<file path>\inputfile.csv"

    Here's an example.

    & "c:\scripts\RunCmdletOnMultipleTenanats.ps1" "c:\scripts\inputfile.csv"
  6. Each tenant will be logged on to, and the cmdlet will be run.


# This script runs Windows PowerShell cmdlets on multiple tenants.
# Usage: RunCmdletOnMultipleTenants.ps1 inputfile.csv
# .csv input file sample: 
# UserName,Cmdlet
#,Get-AcceptedDomain | ft Name
# URI for connecting to remote Windows PowerShell
$URI = ""
# Get the .csv file name as an argument to this script.
$FilePath = $args[0]
# Import the UserName and Cmdlet values from the .csv file.
$CompanyList = Import-CSV $FilePath
# Loop through each entry from the .csv file.
ForEach ($Company in $CompanyList) {
# Get the current entry's UserName.
$UserName = $Company.UserName
# Get the current entry's Cmdlet.
$Cmdlet = $Company.Cmdlet
# Create a PowerShell credential object by using the current entry's UserName. Prompt for the password.
$UserCredential = Get-Credential -username $UserName
# Log on to a new Windows PowerShell session.
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $URI -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session
# Here's where the script to be run on the tenant goes.
# In this example, the cmdlet in the .csv file runs.
Invoke-Expression $Cmdlet
# End the current PowerShell session.
remove-pssession -session $Session