Provisioning Artifacts to Office 365 and SharePoint with PowerShell. Erwin van Hunen

Provisioning Artifacts to Office 365 and SharePoint with PowerShell Erwin van Hunen - @erwinvanhunen Erwin van Hunen 20+ years of industry experienc...
9 downloads 0 Views 1MB Size
Provisioning Artifacts to Office 365 and SharePoint with PowerShell Erwin van Hunen - @erwinvanhunen

Erwin van Hunen 20+ years of industry experience Both Dutch and Swedish nationality Living in Stockholm, Sweden MCSM, MCM, MVP, MCSE, MCSD, MCSA, MCPD, MCITP, MCTS PnP Core Team Member [email protected] @erwinvanhunen se.linkedin.com/in/erwinvanhunen

Deployment techniques

Click deployments Much effort Slow Error prone Difficult to repeat Not everything is exposed to the UI

Add-ins (formerly known as apps) Can be used as a ‘feature’ Requires code / development skills Requires infrastructure in case of provider hosted apps

Console Applications Requires code / development skills More difficult to adjust to changing requirements Single use case / hardcoded

Provisioning engines Many companies have their own • Provider hosted apps • Command line tools • JavaScript based

PnP released a provisioning engine in March • Based on templates, alike onet.xml • Can be used in a code-only approach

PowerShell Simple to write Commonly known • Many blog posts to learn more about PowerShell

Easy to adjust scripts to changing requirements

Office Dev PnP PowerShell Cmdlets

Overview Open Source Community effort Free

‘Old School’ PowerShell Code Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll' Add-Type -Path 'C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll'

$url = "https://erwinmcm.sharepoint.com/sites/demo1" $creds = Get-Credential -Message "Enter Online Credential" $O365Credential = new-object Microsoft.SharePoint.Client.SharePointOnlineCredentials($creds.UserName,$creds.Password) $ctx = new-object Microsoft.SharePoint.Client.ClientContext($url) $ctx.Credentials = $O365Credential $listCi = new-object Microsoft.SharePoint.Client.ListCreationInformation; $listCi.Title = "Demo List"; $listCi.TemplateType = [Microsoft.SharePoint.Client.ListTemplateType]::GenericList; $listCi.Url = "lists/demo"; $list = $ctx.Web.lists.Add($listCi); # Add the field $fieldXml = "StockholmHelsinkiOslo" $field = $list.Fields.AddFieldAsXml($fieldXml, $true, [Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldToDefaultView); $ctx.Load($list); $ctx.ExecuteQuery();

‘New School’ PowerShell Code Connect-SPOnline -Url https://erwinmcm.sharepoint.com/sites/demo1 New-SPOList -Title "Demo list" -Template GenericList -Url lists/demo Add-SPOField -List "Demo list" ` -DisplayName "Location" ` -InternalName "SPSLocation" ` -Type Choice ` -Group "Demo Group" ` -AddToDefaultView ` -Choices "Stockholm","Helsinki","Oslo"

143 available cmdlets Add-SPOContentType Add-SPOContentTypeToDocumentSet Add-SPOContentTypeToList Add-SPOCustomAction Add-SPOEventReceiver Add-SPOField Add-SPOFieldFromXml Add-SPOFieldToContentType Add-SPOFile Add-SPOFolder Add-SPOHtmlPublishingPageLayout Add-SPOIndexedProperty Add-SPOJavaScriptBlock Add-SPOJavaScriptLink Add-SPOListItem Add-SPOMasterPage Add-SPONavigationNode Add-SPOPublishingPage Add-SPOPublishingPageLayout Add-SPOTaxonomyField Add-SPOUserToGroup Add-SPOView Add-SPOWebPartToWebPartPage Add-SPOWebPartToWikiPage Add-SPOWikiPage Add-SPOWorkflowDefinition Add-SPOWorkflowSubscription Apply-SPOProvisioningTemplate Connect-SPOnline Disable-SPOFeature Disconnect-SPOnline Enable-SPOFeature Execute-SPOQuery Export-SPOTaxonomy Export-SPOTermGroupToXml Find-SPOFile

Get-SPOAppInstance Get-SPOAuthenticationRealm Get-SPOAzureADManifestKeyCredentials Get-SPOContentType Get-SPOContext Get-SPOCustomAction Get-SPODocumentSetTemplate Get-SPOEventReceiver Get-SPOFeature Get-SPOField Get-SPOFile Get-SPOGroup Get-SPOHealthScore Get-SPOHomePage Get-SPOIndexedPropertyKeys Get-SPOJavaScriptLink Get-SPOList Get-SPOListItem Get-SPOMasterPage Get-SPOProperty Get-SPOPropertyBag Get-SPOProvisioningTemplate Get-SPOSearchConfiguration Get-SPOSite Get-SPOSitePolicy Get-SPOStoredCredential Get-SPOSubWebs Get-SPOTaxonomyItem Get-SPOTaxonomySession Get-SPOTenantSite Get-SPOTermGroup Get-SPOTimeZoneId Get-SPOUserProfileProperty Get-SPOView Get-SPOWeb Get-SPOWebPart

Get-SPOWebPartProperty Get-SPOWebPartXml Get-SPOWebTemplates Get-SPOWikiPageContent Get-SPOWorkflowDefinition Get-SPOWorkflowSubscription Import-SPOAppPackage Import-SPOTaxonomy Import-SPOTermGroupFromXml Import-SPOTermSet Install-SPOSolution New-SPOGroup New-SPOList New-SPOPersonalSite New-SPOProvisioningTemplateFromFolder New-SPOTenantSite New-SPOTermGroup New-SPOUser New-SPOWeb Remove-SPOContentType Remove-SPOContentTypeFromDocumentSet Remove-SPOContentTypeFromList Remove-SPOCustomAction Remove-SPOEventReceiver Remove-SPOField Remove-SPOFile Remove-SPOGroup Remove-SPOIndexedProperty Remove-SPOJavaScriptLink Remove-SPOList Remove-SPONavigationNode Remove-SPOPropertyBagValue Remove-SPOTenantSite Remove-SPOUserFromGroup Remove-SPOView Remove-SPOWeb

Remove-SPOWebPart Remove-SPOWikiPage Remove-SPOWorkflowDefinition Remove-SPOWorkflowSubscription Request-SPOReIndexList Request-SPOReIndexWeb Resume-SPOWorkflowInstance Send-SPOMail Set-SPOAppSideLoading Set-SPODefaultColumnValues Set-SPODefaultContentTypeToList Set-SPODocumentSetField Set-SPOFileCheckedIn Set-SPOFileCheckedOut Set-SPOGroup Set-SPOHomePage Set-SPOIndexedProperties Set-SPOList Set-SPOListPermission Set-SPOMasterPage Set-SPOMinimalDownloadStrategy Set-SPOPropertyBagValue Set-SPOSearchConfiguration Set-SPOSitePolicy Set-SPOTaxonomyFieldValue Set-SPOTenantSite Set-SPOTheme Set-SPOTraceLog Set-SPOUserProfileProperty Set-SPOWeb Set-SPOWebPartProperty Set-SPOWikiPageContent Stop-SPOWorkflowInstance Uninstall-SPOAppInstance Uninstall-SPOSolution

Demos

Download Version 15: SharePoint On-Premises http://aka.ms/OfficeDevPnPCmdlets15 Version 16: SharePoint Online http://aka.ms/OfficeDevPnPCmdlets16

https://github.com/OfficeDev/PnP-PowerShell/releases

Easy Install from PowerShell Gallery Version 15: SharePoint On-Premises Install-Module –Name OfficeDevPnP.PowerShell.V15.Commands

Version 16: SharePoint Online Install-Module –Name OfficeDevPnP.PowerShell.V16.Commands

https://www.powershellgallery.com

More resources http://dev.office.com/patterns-and-practices Channel 9 video: http://bit.ly/1GYBtlv

Developer Patterns & Practices

Thank YOU!