This post is a companion post to Using CSOM in PowerShell scripts with Office 365. As I mention over in that article, broadly there are 3 different flavors to writing PowerShell for Office 365 – exactly what commands you need to run will dictate which you use, but it’s also conceivable that you might use all 3 in the same script. When you start with Office 365, I think it’s easy to get confused between them, or not fully appreciate that they all exist. What I’m thinking of here is:
Flavor | Notes | Examples | When installed you’ll have: |
SharePoint Online (SPO) cmdlets | These are SharePoint Online specific, and can be identified by “SPO” in the noun part of the cmdlet. |
| |
MS Online (MSOL)/WAAD cmdlets | These are commands related to an Office 365 tenancy (but not necessarily specific to Exchange, Lync or SharePoint) and can be identified by “Msol” in the noun part of the cmdlet. |
| |
Using SP CSOM in PS scripts | The main focus of my other post, Using CSOM in PowerShell scripts with Office 365 |
| No install needed – you can run this type of scripts in a regular Windows PowerShell command prompt. |
A note on MSOL/Windows Azure AD cmdlets
You might be wondering why the MSOL cmdlets show “Windows Azure Active Directory..” in the shortcut title (full name is “Windows Azure Active Directory Module for Windows PowerShell”), despite everything else being labelled “MSOnline” or “MSOL”. The answer is that originally these cmdlets were known as the “Microsoft Online Services Module for Windows PowerShell cmdlets”, but since that time Microsoft have introduced Windows Azure Active Directory as a formal service offering. Every Office 365 tenancy is backed by Windows Azure Active Directory (WAAD) – and since the MSOL cmdlets always were focused around directory stuff (managing users/groups, managing synchronization with your Active Directory and so on), these have now been absorbed into the WAAD offering.
Getting started
If you’re a developer or administrator who will be working with Office 365 regularly, I recommend installing the the ‘shells’ for both the SharePoint Online and Office 365 PowerShell commands – you’ll probably need them at some point.
- Install PowerShell 3.0 if you don’t already have it. It’s included in the Windows Management Framework 3.0 - http://www.microsoft.com/en-us/download/details.aspx?id=34595
- Install the SPO cmdlets - http://office.microsoft.com/en-gb/sharepoint-help/redir/XT102919083.aspx?CTT=5&origin=HA102919087
- Install the MSOL cmdlets - http://technet.microsoft.com/en-us/library/jj151815.aspx#bkmk_installmodule
Once installed, you’re ready to start thinking about the “top of script” stuff (e.g. authenticating to Office 365). You’ll find that it’s very similar for both the SPO and MSOL scripts, but a different cmdlet must be run to start the session:
- Connect-SPOService
- Connect-MsolService
Script examples – SPO scripts
Authenticating to SharePoint Online to run SPO cmdlets:
List all site collections in SharePoint Online:
Recreate a site collection in SharePoint Online:
Script examples – MSOL/WAAD scripts
Authenticating to Office 365 to run MSOL/WAAD cmdlets:
Getting all users in in the directory
A simple MSOL example, just for completeness:
Further reading
- Manage Windows Azure AD using Windows PowerShell
- Windows PowerShell for SharePoint Online
- My related post - Using CSOM in PowerShell scripts with Office 365
Appendix – full lists of SPO and MSOL/WAAD cmdlets
To help you get a sense of the full range of commands in each family (in case you don’t already have them installed), I’m listing them below:
SPO cmdlets
Add-SPOUser
Connect-SPOService
Disconnect-SPOService
Get-SPOAppErrors
Get-SPOAppInfo
Get-SPODeletedSite
Get-SPOExternalUser
Get-SPOSite
Get-SPOSiteGroup
Get-SPOTenant
Get-SPOTenantLogEntry
Get-SPOTenantLogLastAvailableTimeInUtc
Get-SPOUser
Get-SPOWebTemplate
New-SPOSite
New-SPOSiteGroup
Remove-SPODeletedSite
Remove-SPOExternalUser
Remove-SPOSite
Remove-SPOSiteGroup
Remove-SPOUser
Repair-SPOSite
Request-SPOUpgradeEvaluationSite
Restore-SPODeletedSite
Set-SPOSite
Set-SPOSiteGroup
Set-SPOTenant
Set-SPOUser
Test-SPOSite
Upgrade-SPOSite
MSOL/WAAD cmdlets
Add-MsolForeignGroupToRole
Add-MsolGroupMember
Add-MsolRoleMember
Confirm-MsolDomain
Confirm-MsolEmailVerifiedDomain
Connect-MsolService
Convert-MsolDomainToFederated
Convert-MsolDomainToStandard
Convert-MsolFederatedUser
Get-MsolAccountSku
Get-MsolCompanyInformation
Get-MsolContact
Get-MsolDomain
Get-MsolDomainFederationSettings
Get-MsolDomainVerificationDns
Get-MsolFederationProperty
Get-MsolGroup
Get-MsolGroupMember
Get-MsolPartnerContract
Get-MsolPartnerInformation
Get-MsolPasswordPolicy
Get-MsolRole
Get-MsolRoleMember
Get-MsolServicePrincipal
Get-MsolServicePrincipalCredential
Get-MsolSubscription
Get-MsolUser
Get-MsolUserByStrongAuthentication
Get-MsolUserRole
New-MsolDomain
New-MsolFederatedDomain
New-MsolGroup
New-MsolLicenseOptions
New-MsolServicePrincipal
New-MsolServicePrincipalAddresses
New-MsolServicePrincipalCredential
New-MsolUser
New-MsolWellKnownGroup
Redo-MsolProvisionContact
Redo-MsolProvisionGroup
Redo-MsolProvisionUser
Remove-MsolApplicationPassword
Remove-MsolContact
Remove-MsolDomain
Remove-MsolFederatedDomain
Remove-MsolForeignGroupFromRole
Remove-MsolGroup
Remove-MsolGroupMember
Remove-MsolRoleMember
Remove-MsolServicePrincipal
Remove-MsolServicePrincipalCredential
Remove-MsolUser
Reset-MsolStrongAuthenticationMethodByUpn
Restore-MsolUser
Set-MsolADFSContext
Set-MsolCompanyContactInformation
Set-MsolCompanySettings
Set-MsolDirSyncEnabled
Set-MsolDomain
Set-MsolDomainAuthentication
Set-MsolDomainFederationSettings
Set-MsolGroup
Set-MsolPartnerInformation
Set-MsolPasswordPolicy
Set-MsolServicePrincipal
Set-MsolUser
Set-MsolUserLicense
Set-MsolUserPassword
Set-MsolUserPrincipalName
Update-MsolFederatedDomain
3 comments:
Awesome stuff, Chris. With new cmdlets for O365 I'm having to relearn and rewrite many of my .ps1 scripts that work for on-prem installations. Any hints that you can provide for a script that will scour the entire site collection and report on all unique permissions on all objects within in?
@lukabrichitown,
I don't have such a script unfortunately, and if you need to go down to list item/document level that could be "fun" with the remote APIs. It should be do-able though - you might be able to start with the site/list iteration PS/CSOM code I show in Using CSOM in PowerShell scripts with Office 365.
Good luck!
Chris.
Hi Chris,
Is there any way to get "Popularity and trends" from SharePoint online using either one of PowerShell Script. I want to get most popular(In order to user visit) or top 10 site collection from out tenant.
Thanks and much appreciated.
Alance Jacob
Post a Comment