With the growing adoption of Office 365 and SharePoint Online and the continued prevalence of SharePoint on-premises, it’s becoming more difficult to manage both environments in an automated fashion. While SharePoint Online does have native support for Windows PowerShell, there are very few cmdlets to manage the sites and site contents. SharePoint on-premises gives us well over 700 cmdlets, but it still doesn’t answer every situational scenario – leaving gaps in functionality which can be filled by scripters.
In this demo-heavy session, focused on both the developer AND the administrator – you’ll see how you can use one shell to manage both scenarios (on-premises and Office 365). Demonstrations will focus on building PowerShell Scripts and Advanced Functions for both target environments, and by the end of the session you’ll be ready to start Managing SharePoint Anywhere with PowerShell.
7. Ryan Dennis
Senior SharePoint Consultant at Blue Chip Consulting Group
Recently published first book as a co-author
www.bluechip-llc.com
ryan.dennis@bluechip-llc.com
@SharePointRyan
/in/SharePointRyan
/SharePointRyanDotCom
www.sharepointryan.com
SP Geek Father
Drummer
Husband
Scripter Author
8. Get-Agenda
• Housekeeping
• Intro to Advanced Functions
• SharePoint PowerShell On-Premise
• SharePoint PowerShell in Office 365
• Using Client Side Object Model (CSOM)
code in PowerShell
• Q&A
9. Get-Help –Topic “PowerShell”
…is a task-based command-line shell and
scripting language designed especially for
Windows system administration
…has a task-based scripting language
…includes powerful object manipulation
capabilities
…is built on the .NET Framework
10. Verb-Noun
PowerShell uses a Verb-Noun syntax for its
Cmdlets
• Get-Something
• Set-Something
• New-Something
• Remove-Something
Quick Tip!
Use Get-Verb to find
approved verbs! Use
Verb-Noun in your code!
11. Get-Command & Get-Help
• Use Get-Command to see available
commands
Get-Command –Module
Microsoft.SharePoint.PowerShell
Get-Command –Module
Microsoft.Online.SharePoint.PowerShell
• Use Get-Help <CmdletName> to get
help information for a cmdlet
Quick Tip!
Add Help to your
scripts and functions!
12. Get-Command –Type “SharePoint”
• SharePoint 2010
– 500+ Cmdlets…
– MUCH better than STSADM.exe in prior versions…
– Can automate complete installations and
configurations…
• SharePoint 2013
– 700+ Cmdlets!
• Still doesn’t answer every scenario, leaving
gaps in functionality…
– Example: Get, New and Remove SharePoint Groups – no cmdlet, easy to write a
custom function though…
Opportunity!
Write our own scripts
and functions!
13. Get-Help About_Functions_Advanced
…allow you to perform operations that are
similar to the operations you can perform
with cmdlets
…quickly write a function without having to
write a compiled cmdlet using a Microsoft
.NET Framework language (C#)
…use the CmdletBinding() attribute to
identify them as functions that act similar to
cmdlets Quick Tip!
Use Get-Help
About_Functions_Advanced
for more info!
14. New-Function –Name “Our First Function”
• Leverages all of the Write-* cmdlets in the
Microsoft.PowerShell.Utility module
• Includes Switch statement, ValidateSet,
Try/Catch/Finally, etc.
• Includes comment-based-help with
examples
• Can be run just like a cmdlet
Disclaimer!
This is NOT a SharePoint
demo, just a general
PowerShell demo!
16. Get-Recap
• Reviewed Write-Message function…
• Created output using all Write* types
• Saw the behavior of –Verbose and –Debug
switches
• Had some fun…
17.
18. Get-Info “SP PowerShell On-Premises”
• Uses the Microsoft.SharePoint.PowerShell
snap-in
• Access to hundreds* of native cmdlets
• Script using Server Side Object Model
Code
• Run as default (administrative) user
• Must have server access
*782 cmdlets on
my SP 2013 April
2014 CU farm.
19. Get-Info “SP PowerShell O365”
• Uses the
Microsoft.Online.SharePoint.PowerShell
module
• Access to thirty* (30) native cmdlets
• Script using Client Side Object Model
Code
• Provide user credentials for ClientContext
• No need for server access
*30 cmdlets as of
9/19/2014.
20. Get-Started -with “SP Online Scripting”
• Download the SharePoint Online
Management Shell
• Use Connect-SPOService to connect to
your Tenant SharePoint Administration
Site
• Use Get-Command –Module
Microsoft.Online.SharePoint.PowerShell to
see the available cmdlets
21. Get-Intro –Topic “SharePoint CSOM”
• Add the following Assemblies
– Microsoft.SharePoint.Client.dll
– Microsoft.SharePoint.Client.Runtime.dll
• Create a Client.Context variable
• Call the Load() and ExecuteQuery()
methods
• Once context is created, get and set
properties…
For help on writing
CSOM, see
http://bit.ly/MsdnCsom
23. Get-Recap
• Loaded assemblies using:
Import-SPOAssemblies
• Created context using
New-SPOServiceContext
• Created a new Site using
New-SPOWeb
• Retrieved Web using
Get-SPOWeb
• Set Properties with CSOM
• Created a new List with
New-SPOList
Important!
All of these
functions/commands
are a part of our
custom PowerShell
Module! Not OOTB.
24. Get-Info –Type “Bonus”
• All of this works on-premises as well…
– Just need to create ClientContext() differently
• Use the System.Net.NetworkCredential object instead of
Microsoft.SharePoint.Client.SharePointOnlineCredentials
• It is security trimmed, if you don’t have SP
permissions to do this – you can’t…
• CSOM != SSOM
– You do not have access to all of the same
methods and properties…
26. Ryan Dennis
Senior SharePoint Consultant at Blue Chip Consulting Group
Recently published first book as a co-author
www.bluechip-llc.com
ryan.dennis@bluechip-llc.com
@SharePointRyan
/in/SharePointRyan
/SharePointRyanDotCom
www.sharepointryan.com
SP Geek Father
Drummer
Husband
Scripter Author
Editor's Notes
Go to the BI Center
Excel Services
Visio Services
-Show an existing discussion with multiple replies
-Create a new discussion
-