Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Office 365 & PowerShell - A match made in heaven

1,684 views

Published on

In a world where we ear more and more about DevOps and continuous integration, your Office 365 integration process might be lacking some good practices and ways to automate everything. In this session, we will cover how you can use PowerShell to ease the deployment process of your applications, the monitoring of your tenants and the maintenance of all the workloads of Office 365. Being a demo-intensive session, be prepared to see a lot of PowerShell and Office 365 API code!

The 3 key takeaways of this session are :

You will learn how to communicate with the Office 365 API from PowerShell
You will be introduced to DevOps concepts in a Office 365 context
You will be able to reproduce those easy processes without problem back at work

Published in: Technology

Office 365 & PowerShell - A match made in heaven

  1. 1. SharePoint Saturday New York July 25th, 2015 SharePoint Saturday New York Office 365 & PowerShell : A match made in heaven Sébastien Levert Office 365 Junkie & MVP
  2. 2. • We appreciated you supporting the New York SharePoint Community! • Diamond, Platinum, Gold, & Silver have tables scattered throughout • Please visit them and inquire about their products & services • To be eligible for prizes make sure to get your bingo card stamped by ALL sponsor
  3. 3. SharePoint Saturday New York Who’s Sébastien Levert !? Montreal, Canada negotium.com Office365 MVP Web Developer @sebastienlevert pimpthecloud.com PimpTheClou d
  4. 4. SharePoint Saturday New York Agenda • Introduction to PowerShell in Office 365 • Using PowerShell with SharePoint Online • Using PowerShell with the Office 365 APIs • DevOps with PowerShell in Office 365
  5. 5. SharePoint Saturday New York Getting started • Announced at Ignite 2015 • http://powershell.office.com • Sets of samples, scenarios, guides, …
  6. 6. SharePoint Saturday New York What do you need ? • An Office 365 tenant • Administrator privileges on your Office 365 tenant • Administrator privileges on your machine running PowerShell • Administration modules • Microsoft Online Services Sign-in Assistant • Azure Active Directory Module • SharePoint Online Module • Skype for Business Online Module
  7. 7. SharePoint Saturday New York Connecting to SharePoint Online • With the SharePoint Online Module • With the SharePoint Client Side Object Model • With the OfficeDev PowerShell Commands • With the SharePoint REST APIs
  8. 8. SharePoint Saturday New York Getting all your Site Collections Demo
  9. 9. SharePoint Saturday New York Getting all your Site Collection Get-SPOSite Get-SPOSite –Detailed Get-SPOSite –Detailed –Filter { Url –like “*term*” }
  10. 10. SharePoint Saturday New York Using SharePoint CSOM in PowerShell • You have to manually get the CSOM Assemblies • You have to manually load the CSOM Assemblies in your PowerShell Sessions • Ensure to have the latest bits of the CSOM Assemblies [AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.FullName -like "*SharePoint*” –or $_.FullName –like “*Office*” } | Select FullName
  11. 11. SharePoint Saturday New York Tips & Tricks • Do not use SharePoint Online Management Shell • Import the SharePoint Online PowerShell module from a regular PowerShell session • Load the required CSOM Assemblies before loading the SharePoint Online Module • Use Gary Lapointe’s Load-CSOMProperties Cmdlet. Everyday.
  12. 12. SharePoint Saturday New York Getting the CSOM Assemblies Demo
  13. 13. SharePoint Saturday New York Working with the CSOM Assemblies Import-Module C:PathPTC.O365.PowerShell.psm1 Get-ClientAssemblies –Version 16 –TargetDirectory C:assemblies Add-ClientAssemblies –AssembliesDirectory C:assemblies [AppDomain]::CurrentDomain.GetAssemblies() | Where-Object { $_.FullName -like "*SharePoint*” –or $_.FullName –like “*Office*” } | Select FullName
  14. 14. SharePoint Saturday New York Mixing CSOM and SPO Cmdlets • You can easily use CSOM with the SPO Cmdlets • Use the Cmdlets to get to the Site Collection level • Use CSOM to get into the Webs level
  15. 15. SharePoint Saturday New York Getting all the Sites of every Site Collection Demo
  16. 16. SharePoint Saturday New York Get all the Sites of every Site Collection Import-Module C:PathPTC.O365.PowerShell.psm1 Import-Module Microsoft.Online.SharePoint.PowerShell Connect-SPOService –Url https://tenant-admin.sharepoint.com $credentials = Get-SharePointOnlineCredentials Get-SPOSite | Where-Object { $_.Template –notlike “*EHS#0” } | ForEach-Object { $context = Get-Context –Url $_.Url –Credentials $credentials Get-Webs –Context $context | Select Url }
  17. 17. SharePoint Saturday New York Export the content of a SharePoint list Demo
  18. 18. SharePoint Saturday New York Export the content of a SharePoint list $credentials = Get-SharePointOnlineCredentials $context = Get-Context –Url “https://tenant.sharepoint.com” –Credentials $credentials $web = Get-Web -Context $context $list = Get-List –Web $web –Title “Tasks” $items = Get-ListContent –List $list -Fields @(“ID”, “Title”, “DueDate”) $items | Select @{ Name = “ID”; Expression = { $_[“ID”] } }, @{ Name = “Title”; Expression = { $_[“Title”] } }, @{ Name = “DueDate”; Expression = { $_[“DueDate”] } } | Export-CSV –Path C:Tasks.csv –NoTypeInformation –Encoding UTF8
  19. 19. SharePoint Saturday New York Working with PowerShell.Commands • 123 new Cmdlets Delivered by Office Dev Patterns & Practices • Set of Cmdlets used to execute CSOM against SharePoint Online & On-Premises • Uses the OfficeDevPnP.Core framework • Needs to be installed on your machine (more complex than a simple module) • The real power of PowerShell with the PnP enhanced power of CSOM
  20. 20. SharePoint Saturday New York Adding and setting a new theme to a site Demo
  21. 21. SharePoint Saturday New York Adding and setting a new theme to a site Connect-SPOnline –Url https://tenant.sharepoint.com Add-SPOFile –Path C:theme.spcolor –Folder “_catalogs/theme/15” Add-SPOFile –Path C:image.jpg –Folder “SiteAssets” Set-SPOTheme ` –ColorPaletteUrl “/_catalogs/theme/15/theme.spcolor ” ` -BackgroundImageUrl “/SiteAssets/image.jpg”
  22. 22. SharePoint Saturday New York Working with REST and SharePoint Online• Awesome series of articles by Gary Lapointe • Magic Function provided  Invoke-SPORestMethod • Easily use “typed” objects in your PowerShell scripts • Remember to escape your $
  23. 23. SharePoint Saturday New York Query list items with OData Demo
  24. 24. SharePoint Saturday New York Query list items with Odata $url = “https://tenant.sharepoint.com/_api/lists/GetByTitle('Tasks')/ite ms?`$select=Id,Title,DueDate,PercentComplete&`$filter=PercentComp lete gt 0.5” $items = Invoke-SPORestMethod –Url $url $items.results | Out-GridView
  25. 25. SharePoint Saturday New York Use the search REST API to query the Graph Demo
  26. 26. SharePoint Saturday New York Using the REST API to query Office Graph $url = “https://tenant.sharepoint.com/_api/search/query?Querytext=‘*’&Pr operties='GraphQuery:ACTOR(ME)’&RowLimit=100” $results = Invoke-SPORestMethod –Url $url $results = Get-RestSearchResults –Results $results | Out-GridView
  27. 27. SharePoint Saturday New York Office 365 APIs • Set of APIs delivered to unify the workloads APIs • Built on top of Azure Active Directory Applications • Uses OAuth and JWT for every API call • Enables delegated permissions & App-Only permissions • Give permissions on the needed workloads • When the plumbing is done, it becomes very easy to use
  28. 28. SharePoint Saturday New York Steps to Office 365 API with PowerShell 1. Create an Azure Active Directory Application 2. Create a local certificate 3. Import the certificate data into your Azure AD Application configuration 4. Use the certificate with its password in your PowerShell code 5. Connect to the Office 365 API 6. Play with your data!
  29. 29. SharePoint Saturday New York Getting ready Demo
  30. 30. SharePoint Saturday New York Getting ready makecert -r -pe -n "CN=PowerShell Office 365 API Application" -b 1/01/2015 -e 12/31/2016 -ss my -len 2048 $keyCredentials = Get-KeyCredentialsManifest –Path C:Certificate.cer
  31. 31. SharePoint Saturday New York Get an Access Token Demo
  32. 32. SharePoint Saturday New York Get an Access Token $global:AzureADApplicationTenantId = “TENANTID” $global:AzureADApplicationClientId = “APPLICATIONID” $global:AzureADApplicationCertificatePath = “C:Certificate.pfx” $global:AzureADApplicationCertificatePassword = “Passw0rd” $exchangeResourceUri = “https://outlook.office365.com/” $token = Get-AccessToken -ResourceUri $exchangeResourceUri
  33. 33. SharePoint Saturday New York Get the content of your Mailbox Demo
  34. 34. SharePoint Saturday New York Get the content of your Mailbox $url = $exchangeResourceUri + “/api/v1.0/users(‘email’)/folders/inbox/messages?$top=50" $response = Invoke-SecuredRestMethod -Method "GET" -AccessToken $token -EndpointUri $url $hasMore = $true $messages = @() while($hasMore) { $response = Invoke-SecuredRestMethod -Method "GET" -AccessToken $token-EndpointUri $url $response.value | ForEach-Object { $messages += $_ } $hasMore = $response.'@odata.nextLink' -ne $null $url = $response.'@odata.nextLink’ } $messages | Select Subject | Out-GridView
  35. 35. SharePoint Saturday New York Send an Email Demo
  36. 36. SharePoint Saturday New York Prepare the body $body = @{ “Message” = @{ “Subject” = "This is a test email from PowerShell!” “Body” = @{ “ContentType” = “Text”; “Content” = “This email was sent from PowerShell using the Office 365 API.” } “ToRecipients” = @( @{ “EmailAddress” = @{ “Address” = “slevert@sebastienlevert.com” } } ) } $body.SaveToSentItems = $false }
  37. 37. SharePoint Saturday New York Send an Email $url = $exchangeResourceUri + “/api/v1.0/users(‘email’)/sendmail” $response = Invoke-SecuredRestMethod –Method “POST” -AccessToken $token -EndpointUri $url –Body ($body | ConvertTo-Json $body –Depth 4)
  38. 38. SharePoint Saturday New York First… What is DevOps ? • DevOps (a clipped compound of “development” and “operations”) is a software development method that stresses communication, collaboration, integration, automation and measurement of cooperation between software developers and other information-technology (IT) professionals.
  39. 39. SharePoint Saturday New York What it means to me… • Automate everything you can • Ensure that every configuration can be replicated anywhere at any time • Gain a maximum of control over your deployments • Are you scared of your users ?
  40. 40. SharePoint Saturday New York In the Office 365 world, it means… • Every artifact that is created needs to be scripted or automatically provisioned • Users • Mailboxes • SharePoint • Sites • Columns • Content Types • Lists • … • …
  41. 41. SharePoint Saturday New York Export SharePoint site configuration Demo
  42. 42. SharePoint Saturday New York Export SharePoint site configuration Connect-SPOnline –Url https://tenant.sharepoint.com Get-SPOProvisioningTemplate –Out C:template.xml - PersistComposedLookFiles
  43. 43. SharePoint Saturday New York Import SharePoint site configuration Demo
  44. 44. SharePoint Saturday New York Import SharePoint site configuration Connect-SPOnline –Url https://tenant.sharepoint.com Apply-SPOProvisioningTemplate –Path C:template.xml
  45. 45. SharePoint Saturday New York PowerShell for Office 365 Resources • PowerShell for Office 365 • http://powershell.office.com • Microsoft Online Services Sign-In Assistant for IT Professionals • http://www.microsoft.com/en-us/download/details.aspx?id=41950 • SharePoint Online Management Shell • http://www.microsoft.com/en-us/download/details.aspx?id=35588 • Windows PowerShell Module for Skype for Business Online • http://www.microsoft.com/en-us/download/details.aspx?id=39366
  46. 46. SharePoint Saturday New York PowerShell for Office 365 Resources • Azure Active Directory Module for Windows PowerShell • http://go.microsoft.com/fwlink/p/?linkid=236298 (32-bit Version) • http://go.microsoft.com/fwlink/p/?linkid=236297 (64-bit Version) • OfficeDevPnP.PowerShell Commands • https://github.com/OfficeDev/PnP/tree/master/Solutions/PowerShell.Commands • PimpTheCloud PowerShell Office 365 Modules • https://github.com/PimpTheCloud/PTC.O365.PowerShell
  47. 47. SharePoint Saturday New York PowerShell for Office 365 Resources • Gary Lapointe “PowerShell and SharePoint Online REST” articles • http://www.itunity.com/article/sharepoint-rest-service-windows-powershell-1381 • http://www.itunity.com/article/custom-windows-powershell-function-sharepoint- rest-service-calls-1985 • http://www.itunity.com/article/working-lists-list-items-sharepoint-rest-service- windows-powershell-2077 • http://www.itunity.com/article/working-folders-files-sharepoint-rest-service- powershell-2159
  48. 48. SharePoint Saturday New York Catch me ! Montreal, Canada negotium.com Office365 MVP Web Developer @sebastienlevert Web Developer PimpTheClou d
  49. 49. • We appreciated you supporting the New York SharePoint Community! • Diamond, Platinum, Gold, & Silver have tables scattered throughout • Please visit them and inquire about their products & services • To be eligible for prizes make sure to get your bingo card stamped by ALL sponsor

×