From c2e74e51ab35c11816f05defa2f02b5ae074bde7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:06:31 +0100 Subject: [PATCH 001/312] Update description.md --- .../description.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Site Management/Add Supported Language for multiple site collections/description.md b/Site Management/Add Supported Language for multiple site collections/description.md index 66d0c1b2..f8056073 100644 --- a/Site Management/Add Supported Language for multiple site collections/description.md +++ b/Site Management/Add Supported Language for multiple site collections/description.md @@ -1,8 +1,10 @@ The script adds a supported language to all site collections. -1. It retrieves the urls using Get-SPOSite. -2. It loops through the urls. -3. For each specified url, it adds a supported language. +**1.** It retrieves the urls using Get-SPOSite. + +**2.** It loops through the urls. + +**3.** For each specified url, it adds a supported language. Make sure the script is using correct paths to the SDK libraries on your machine: @@ -22,22 +24,22 @@ $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $adminUrl="https://tenant-admin.sharepoint.com" $lcid=1031 ``` -$lcid refers to Locale ID. A list of Microsoft-assigned locale ids can be found here:https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx +$lcid refers to Locale ID. A list of Microsoft-assigned locale ids can be found [here](https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx). ### The script can be modified. -1. If you want to add language only for a few site collections/subsites, enter the urls in the line below instead of Get-SPOSite cmdlet: +**1.** If you want to add language only for a few site collections/subsites, enter the urls in the line below instead of Get-SPOSite cmdlet: ```PowerShell $sites=(get-spoSite).Url ``` - 2. If you want to add 2 or more languages, enter more AddSupportedUILanguage() methods: +**2.** If you want to add 2 or more languages, enter more AddSupportedUILanguage() methods: ```PowerShell $ctx.Web.AddSupportedUILanguage($lcid) ``` - 3. If you want to remove a language instead of adding it, modify the following line: +**3.** If you want to remove a language instead of adding it, modify the following line: ```PowerShell $ctx.Web.AddSupportedUILanguage($lcid) ``` @@ -46,8 +48,7 @@ into: $ctx.Web.RemoveSupportedUILanguage($lcid) ``` - 4. If you need to assign administrator's permissions to ODB, you can use the following script: - http://sharepoint.stackexchange.com/questions/138562/add-personal-site-collection-administrator-programmatically +**4.** If you need to assign administrator's permissions to ODB, you can use the following [script](http://sharepoint.stackexchange.com/questions/138562/add-personal-site-collection-administrator-programmatically).

From 3a9fb03db3354b005a79146f1bdf88676c5f017c Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:07:31 +0100 Subject: [PATCH 002/312] Update SetLGforAllSites.ps1 --- .../SetLGforAllSites.ps1 | 52 +++++++++---------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/Site Management/Add Supported Language for multiple site collections/SetLGforAllSites.ps1 b/Site Management/Add Supported Language for multiple site collections/SetLGforAllSites.ps1 index 8ef75a4f..1505a02b 100644 --- a/Site Management/Add Supported Language for multiple site collections/SetLGforAllSites.ps1 +++ b/Site Management/Add Supported Language for multiple site collections/SetLGforAllSites.ps1 @@ -1,37 +1,35 @@  -function Add-SPOUILanguages -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Add-SPOUILanguages{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [Int]$lcid - ) + ) - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() - Write-Host $ctx.Web.Url - $ctx.Web.IsMultilingual=$true - $ctx.Web.Update() - $ctx.ExecuteQuery() - $ctx.Web.AddSupportedUILanguage($lcid) - - $ctx.Web.Update() - + Write-Host $ctx.Web.Url + $ctx.Web.IsMultilingual=$true + $ctx.Web.Update() + $ctx.ExecuteQuery() + $ctx.Web.AddSupportedUILanguage($lcid) -$ctx.ExecuteQuery() - - $ctx.Dispose() + $ctx.Web.Update() + + + $ctx.ExecuteQuery() + + $ctx.Dispose() } @@ -52,8 +50,6 @@ Connect-SPOService $adminUrl -Credential $Username $sites=(get-spoSite).Url -foreach($site in $sites) -{ - -Add-SPOUILanguages -Username $Username -AdminPassword $AdminPassword -Url $site -lcid $lcid -} \ No newline at end of file +foreach($site in $sites){ + Add-SPOUILanguages -Username $Username -AdminPassword $AdminPassword -Url $site -lcid $lcid +} From 08d3122f403e3c653f9e1545443cba9f57c85a18 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:12:57 +0100 Subject: [PATCH 003/312] Update description.md --- .../Add-SPOWeb & Remove-SPOWeb/description.md | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/Site Management/Add-SPOWeb & Remove-SPOWeb/description.md b/Site Management/Add-SPOWeb & Remove-SPOWeb/description.md index cddeb915..32083f2d 100644 --- a/Site Management/Add-SPOWeb & Remove-SPOWeb/description.md +++ b/Site Management/Add-SPOWeb & Remove-SPOWeb/description.md @@ -1,51 +1,54 @@ 2 new SharePoint Online Powershell cmdlets to help you manage sites and subsites in your SharePoint Online subscription: - - -Add-SPOWeb +## Add-SPOWeb Adds a subsite to an exisiting site collection -Parameters +## *Parameters* The cmdlet is using the following parameters: - [string]$Username +- [string]$Username + The string specifies admin of the site -[string]$ParentUrl +- [string]$ParentUrl + Specifies the url of the parent site -[string]$AdminPassword, +- [string]$AdminPassword, + Admin's password -[string]$Title, +- [string]$Title, + Specifies the title of the site -[bool]$UseSamePermissionsAsParentSite=$true, +- [bool]$UseSamePermissionsAsParentSite=$true, + Whether the site should use the same permissions as parent site. By default it is set to true -[string]$Description="", +- [string]$Description="", + Site description, not mandatory -[Int]$Language, -The language of the site. For English choose 1033. For other languages choose the correct id. +- [Int]$Language, -[string]$Url, -Url of the new site, avoid spaces. +The language of the site. For English choose 1033. For other languages choose the correct [id](https://docs.microsoft.com/pl-pl/SharePoint/install/install-or-uninstall-language-packs?redirectedfrom=MSDN). -[string]$WebTemplate="STS#0" -Template of the site, e.g. teamsite, publishing portal, enterprise wiki. By default set to Teamsite template. For other template types, check here +- [string]$Url, - +Url of the new site, avoid spaces. - +- [string]$WebTemplate="STS#0" + +Template of the site, e.g. teamsite, publishing portal, enterprise wiki. By default set to Teamsite template. For other template types, check [here](https://docs.microsoft.com/pl-pl/archive/blogs/) -Remove-SPOWeb +## Remove-SPOWeb Removes a subsite from a site collection. @@ -53,27 +56,31 @@ Removes a subsite from a site collection. -Parameters +### *Parameters* The cmdlet is using the following parameters: - [string]$Username +- [string]$Username + The string specifies admin of the site -[string]$Url +- [string]$Url + Specifies the url of the site -[string]$AdminPassword, +- [string]$AdminPassword, + Admin's password -[bool]$RemoveSubsites=$true +- [bool]$RemoveSubsites=$true + If set to false, the cmdlet will ask for additional permissions if it encounters sub-sites of the site being removed. As long as one of the subsites exists, the site will never be removed. By default set to $true. -Examples +*Examples* @@ -89,31 +96,25 @@ Add-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -ParentSiteUrl https:// Remove-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -AdminPassword Pass -Url https://trialtrial123.sharepoint.com/psweb - - + +*Requirements* - - -Requirements - - - -The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the ```.psm1``` file! -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - + ``` -Let me know about your experience in the Q&A section! +## Let me know about your experience in the Q&A section! From c6fdfe5f4a3603d3cdf027f2703b533f58b9dc09 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:15:37 +0100 Subject: [PATCH 004/312] Update RemoveANDAddSPOWeb1.psm1 --- .../RemoveANDAddSPOWeb1.psm1 | 170 ++++++++---------- 1 file changed, 74 insertions(+), 96 deletions(-) diff --git a/Site Management/Add-SPOWeb & Remove-SPOWeb/RemoveANDAddSPOWeb1.psm1 b/Site Management/Add-SPOWeb & Remove-SPOWeb/RemoveANDAddSPOWeb1.psm1 index 7544eacd..e200d5ce 100644 --- a/Site Management/Add-SPOWeb & Remove-SPOWeb/RemoveANDAddSPOWeb1.psm1 +++ b/Site Management/Add-SPOWeb & Remove-SPOWeb/RemoveANDAddSPOWeb1.psm1 @@ -1,117 +1,95 @@ -function Remove-SPOWeb -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Remove-SPOWeb{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword, - [Parameter(Mandatory=$false,Position=4)] + [Parameter(Mandatory=$false,Position=4)] [bool]$RemoveSubsites=$true - ) - - $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - try - { - $ctx.Web.DeleteObject() - $ctx.ExecuteQuery() - Write-Host "Site " $ctx.Web.Url " has been removed." - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - -if($ctx.Web.Webs.Count -gt 0) - { - for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++) - { - if($RemoveSubsites) - { - Remove-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -RemoveSubsites $RemoveSubsites - } - - else - { - $yesorno=Read-Host -Prompt "Proceeding to remove subsite " $ctx.Web.Webs[$i].Url ". Press Y to proceed or N not to remove the subsite. If you choose N, the parent site won't be removed." - if($yesorno -eq "y") - { - Remove-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -RemoveSubsites $RemoveSubsites - } - } - } - } - - - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + + try{ + $ctx.Web.DeleteObject() + $ctx.ExecuteQuery() + Write-Host "Site " $ctx.Web.Url " has been removed." + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } + + if($ctx.Web.Webs.Count -gt 0){ + for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++){ + if($RemoveSubsites){ + Remove-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -RemoveSubsites $RemoveSubsites + } + else{ + $yesorno=Read-Host -Prompt "Proceeding to remove subsite " $ctx.Web.Webs[$i].Url ". Press Y to proceed or N not to remove the subsite. If you choose N, the parent site won't be removed." + if($yesorno -eq "y"){ + Remove-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -RemoveSubsites $RemoveSubsites + } + } + } + } } -function Add-SPOWeb -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Add-SPOWeb{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$ParentSiteUrl, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword, - [Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$Title, - [Parameter(Mandatory=$false,Position=5)] + [Parameter(Mandatory=$false,Position=5)] [bool]$UseSamePermissionsAsParentSite=$true, - [Parameter(Mandatory=$false,Position=6)] + [Parameter(Mandatory=$false,Position=6)] [string]$Description="", - [Parameter(Mandatory=$true,Position=7)] + [Parameter(Mandatory=$true,Position=7)] [Int]$Language, - [Parameter(Mandatory=$true,Position=8)] + [Parameter(Mandatory=$true,Position=8)] [string]$Url, - [Parameter(Mandatory=$false,Position=9)] + [Parameter(Mandatory=$false,Position=9)] [string]$WebTemplate="STS#0" - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($ParentSiteUrl) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - - $wci = New-Object Microsoft.SharePoint.Client.WebCreationInformation - $wci.Title=$Title - $wci.Description=$Description - $wci.Language = $Language - $wci.Url =$Url - $wci.WebTemplate = $WebTemplate - $wci.UseSamePermissionsAsParentSite=$UseSamePermissionsAsParentSite - - $SPOWeb = $ctx.Web.Webs.Add($wci) - $ctx.Load($SPOWeb) - try - { - - $ctx.ExecuteQuery() - Write-Host "Site " $SPOWeb.Title " has been added to " $ParentSiteUrl - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - - - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($ParentSiteUrl) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + + $wci = New-Object Microsoft.SharePoint.Client.WebCreationInformation + $wci.Title=$Title + $wci.Description=$Description + $wci.Language = $Language + $wci.Url =$Url + $wci.WebTemplate = $WebTemplate + $wci.UseSamePermissionsAsParentSite=$UseSamePermissionsAsParentSite + + $SPOWeb = $ctx.Web.Webs.Add($wci) + $ctx.Load($SPOWeb) + + try{ + $ctx.ExecuteQuery() + Write-Host "Site " $SPOWeb.Title " has been added to " $ParentSiteUrl + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } } From 47a4bdefc3185b7d1669fe278f9dd10c18a00150 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:19:08 +0100 Subject: [PATCH 005/312] Update description.md --- .../description.md | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/Site Management/ChangeLog/Create a report on all changes for all your site collections/description.md b/Site Management/ChangeLog/Create a report on all changes for all your site collections/description.md index a86e8b4c..55b9fd62 100644 --- a/Site Management/ChangeLog/Create a report on all changes for all your site collections/description.md +++ b/Site Management/ChangeLog/Create a report on all changes for all your site collections/description.md @@ -1,19 +1,25 @@ -Description +### *Description* + The script goes through all SharePoint Online site collections and retrieves a change log for them. The change log is DECRYPTED and published to an Excel file. + What do I mean by decrypted? + Whenever possible and applicable: - User Id is read and dispalyed as SharePoint Online user' LoginName - Document id is read and displayed as Document Name (e.g. title of the Word document) - List id is read and displayed as List Name - Each change is preceded by the name of the site on which it occurred + Whenever the element was not applicable for the particular change "N/A" will be displayed, e.g. When a user deleted a document, alert ID will display N/A because there was no alert created at this activity. When a system sent an alert, user ID and LoginName will display "N/A", because no user was involved. The script is very time-consuming. It needs time to retrieve all logs. For faster script retrieving change logs from only one site collection please consult my other contributions. -Instructions -1. Install SharePoint Online SDK. -2. Before running the script, open the file in Powershell or NotePad and edit the lines below: + +### *Instructions* + +**1.** Install SharePoint Online SDK. +**2.** Before running the script, open the file in Powershell or NotePad and edit the lines below: ```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" @@ -26,14 +32,22 @@ $AdminUrl="https://tenant-admin.sharepoint.com" $CSVPath="C:\users\ivo\Desktop\changecollectiontry3.csv" ``` a) verify where Microsoft.SharePoint.Client.dll and Microsoft.SharePoint.Client.Runtime.dll libraries are located on your computer and enter the correct paths. + b) instead of 2190@tenant.onmicrosoft.com enter the name of your administrator + c) instead of https://tenant-admin.sharepoint.com, enter the url for your SharePoint Online admin Center + d) instead of "c:\users\...." enter the path where you want the file to be generated on your local PC -3. Run the script. -4. During the execution you may receive the error "Such list does no longer exist". It is because some of the changes refer to deleted items/lists. -5. When the script is ready, open the created file. The results should be similar to: +**3.** Run the script. +**4.** During the execution you may receive the error "Such list does no longer exist". It is because some of the changes refer to deleted items/lists. + + + +**5.** When the script is ready, open the created file. The results should be similar to: + + -Please share your comments in the Q&A section! -Related scripts -Create a report on all changes for your site collection (Powershell) +### Please share your comments in the Q&A section! +### Related scripts +[Create a report on all changes for your site collection (Powershell)](https://gallery.technet.microsoft.com/Create-a-report-on-all-fe377c62) From de44584531993e9c3dc207824ce22b6ef7f3da1f Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:22:46 +0100 Subject: [PATCH 006/312] Update changecollection.ps1 --- .../changecollection.ps1 | 150 +++++++++--------- 1 file changed, 74 insertions(+), 76 deletions(-) diff --git a/Site Management/ChangeLog/Create a report on all changes for all your site collections/changecollection.ps1 b/Site Management/ChangeLog/Create a report on all changes for all your site collections/changecollection.ps1 index 34068753..0ad84c7e 100644 --- a/Site Management/ChangeLog/Create a report on all changes for all your site collections/changecollection.ps1 +++ b/Site Management/ChangeLog/Create a report on all changes for all your site collections/changecollection.ps1 @@ -1,79 +1,80 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$CSVPath - - -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ -$ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) -$changeQuery = New-Object Microsoft.SharePoint.Client.ChangeQuery $true,$true - -$changeCollection = $ctx.Site.GetChanges($changeQuery) -$ctx.Load($changeCollection) -try -{ -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url " loaded changes" -} catch [Net.WebException] - { - - Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red - -} - -foreach ($change in $changeCollection) -{ -$change | Add-Member SiteCollection($Url) -$change | Add-Member ItemName("N/A") -$change | Add-Member ListName("N/A") -$change | Add-Member WebName("N/A") -$change | Add-Member UserName("N/A") -$change | Add-Member UserTitle("N/A") - -if(! $change.IsPropertyAvailable("ItemId")) { $change | Add-Member ItemId("N/A")} else { -$leeafyname=$ctx.Web.Lists.GetById($change.ListId).GetItemById($change.ItemId) -$ctx.Load($leeafyname) -$ctx.ExecuteQuery() -$change.ItemName=$leeafyname.LeafName} -if(! $change.IsPropertyAvailable("ListId")) { $change | Add-Member ListId("N/A")}else { -$listka=$ctx.Web.Lists.GetById($change.ListId) -$ctx.Load($listka) -$ctx.ExecuteQuery() -$change.ListName=$listka.Title} -if(! $change.IsPropertyAvailable("WebId")) { $change | Add-Member WebId("N/A")}else { $change.WebName=$ctx.Web.Url} -if(! $change.IsPropertyAvailable("UserId")) { $change | Add-Member UserId("N/A")}else { $ctx.Load($ctx.Web.GetUserById($change.UserId)) -$ctx.ExecuteQuery() -$change.UserName=$ctx.Web.GetUserById($change.UserId).LoginName -$change.UserTitle=$ctx.Web.GetUserById($change.UserId).Title} -if(! $change.IsPropertyAvailable("AlertId")) { $change | Add-Member AlertId("N/A")} -if(! $change.IsPropertyAvailable("Activate")) { $change | Add-Member Activate("N/A")} - -$change | export-csv $CSVPath -Append -} - - - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $changeQuery = New-Object Microsoft.SharePoint.Client.ChangeQuery $true,$true + + $changeCollection = $ctx.Site.GetChanges($changeQuery) + $ctx.Load($changeCollection) + + try{ + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url " loaded changes" + } + catch [Net.WebException] { + Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red + } + + foreach ($change in $changeCollection){ + $change | Add-Member SiteCollection($Url) + $change | Add-Member ItemName("N/A") + $change | Add-Member ListName("N/A") + $change | Add-Member WebName("N/A") + $change | Add-Member UserName("N/A") + $change | Add-Member UserTitle("N/A") + + if(! $change.IsPropertyAvailable("ItemId")) { $change | Add-Member ItemId("N/A")} + else{ + $leeafyname=$ctx.Web.Lists.GetById($change.ListId).GetItemById($change.ItemId) + $ctx.Load($leeafyname) + $ctx.ExecuteQuery() + $change.ItemName=$leeafyname.LeafName + } + + if(! $change.IsPropertyAvailable("ListId")) { $change | Add-Member ListId("N/A")} + else{ + $listka=$ctx.Web.Lists.GetById($change.ListId) + $ctx.Load($listka) + $ctx.ExecuteQuery() + $change.ListName=$listka.Title + } + + if(! $change.IsPropertyAvailable("WebId")) { $change | Add-Member WebId("N/A")} + else { $change.WebName=$ctx.Web.Url} + + if(! $change.IsPropertyAvailable("UserId")) { $change | Add-Member UserId("N/A")} + else { $ctx.Load($ctx.Web.GetUserById($change.UserId)) + $ctx.ExecuteQuery() + $change.UserName=$ctx.Web.GetUserById($change.UserId).LoginName + $change.UserTitle=$ctx.Web.GetUserById($change.UserId).Title + } + + if(! $change.IsPropertyAvailable("AlertId")) { $change | Add-Member AlertId("N/A")} + + if(! $change.IsPropertyAvailable("Activate")) { $change | Add-Member Activate("N/A")} + + $change | export-csv $CSVPath -Append + } } @@ -96,11 +97,8 @@ $CSVPath="C:\users\ivo\Desktop\changecollectiontry3.csv" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -CSVPath $CSVPath - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -CSVPath $CSVPath } From 4f5c4a4989eb96f8ea0c4d9ca255633db13a4eec Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:26:30 +0100 Subject: [PATCH 007/312] Update description.md --- .../description.md | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/Site Management/ChangeLog/Create a report on all changes for one site collection/description.md b/Site Management/ChangeLog/Create a report on all changes for one site collection/description.md index 20429fce..263db4cf 100644 --- a/Site Management/ChangeLog/Create a report on all changes for one site collection/description.md +++ b/Site Management/ChangeLog/Create a report on all changes for one site collection/description.md @@ -1,19 +1,22 @@ -

Description

+### *Description* The script retrieves a change log for a specified site collection. The change log is DECRYPTED and published to an Excel file: + Whenever possible and applicable: - User Id is read and dispalyed as SharePoint Online user' LoginName - Document id is read and displayed as Document Name (e.g. title of the Word document) - List id is read and displayed as List Name - Each change is preceded by the name of the site on which it occurred + Whenever the element was not applicable for the particular change "N/A" will be displayed, e.g. When a user deleted a document, alert ID will display N/A because there was no alert created at this activity. When a system sent an alert, user ID and LoginName will display "N/A", because no user was involved. -Instructions +### *Instructions* + +**1.** Install SharePoint Online SDK. -1. Install SharePoint Online SDK. -2. Before running the script, open the file in Powershell or NotePad and edit the lines below: +**2.** Before running the script, open the file in Powershell or NotePad and edit the lines below: ```Powershell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" @@ -26,15 +29,25 @@ $AdminUrl="https://tenant-admin.sharepoint.com" $CSVPath="C:\users\ivo\Desktop\changecollectiontry3.csv" ``` a) verify where Microsoft.SharePoint.Client.dll and Microsoft.SharePoint.Client.Runtime.dll libraries are located on your computer and enter the correct paths. + b) instead of 2190@tenant.onmicrosoft.com enter the name of your administrator + c) instead of https://tenant-admin.sharepoint.com, enter the url for your SharePoint Online admin Center + d) instead of "c:\users\...." enter the path where you want the file to be generated on your local PC -3. Run the script. -4. During the execution you may receive the error "Such list does no longer exist". It is because some of the changes refer to deleted items/lists. -5. When the script is ready, open the created file. The results should be similar to: +**3.** Run the script. + +**4.** During the execution you may receive the error "Such list does no longer exist". It is because some of the changes refer to deleted items/lists. + + + + + +**5.** When the script is ready, open the created file. The results should be similar to: + +### Please share your comments in the Q&A section! -Please share your comments in the Q&A section! +**Related scripts:** -Related scripts: -Create a report on all changes for all your site collections +[Create a report on all changes for all your site collections](https://gallery.technet.microsoft.com/Create-a-report-on-all-2a4e7409) From 04d29cd9085a267b37a014026972ff53bc2b97c3 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:28:38 +0100 Subject: [PATCH 008/312] Update changecollection.ps1 --- .../changecollection.ps1 | 150 +++++++++--------- 1 file changed, 74 insertions(+), 76 deletions(-) diff --git a/Site Management/ChangeLog/Create a report on all changes for one site collection/changecollection.ps1 b/Site Management/ChangeLog/Create a report on all changes for one site collection/changecollection.ps1 index 34068753..59155cd2 100644 --- a/Site Management/ChangeLog/Create a report on all changes for one site collection/changecollection.ps1 +++ b/Site Management/ChangeLog/Create a report on all changes for one site collection/changecollection.ps1 @@ -1,79 +1,80 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$CSVPath - - -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ -$ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) -$changeQuery = New-Object Microsoft.SharePoint.Client.ChangeQuery $true,$true - -$changeCollection = $ctx.Site.GetChanges($changeQuery) -$ctx.Load($changeCollection) -try -{ -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url " loaded changes" -} catch [Net.WebException] - { - - Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red - -} - -foreach ($change in $changeCollection) -{ -$change | Add-Member SiteCollection($Url) -$change | Add-Member ItemName("N/A") -$change | Add-Member ListName("N/A") -$change | Add-Member WebName("N/A") -$change | Add-Member UserName("N/A") -$change | Add-Member UserTitle("N/A") - -if(! $change.IsPropertyAvailable("ItemId")) { $change | Add-Member ItemId("N/A")} else { -$leeafyname=$ctx.Web.Lists.GetById($change.ListId).GetItemById($change.ItemId) -$ctx.Load($leeafyname) -$ctx.ExecuteQuery() -$change.ItemName=$leeafyname.LeafName} -if(! $change.IsPropertyAvailable("ListId")) { $change | Add-Member ListId("N/A")}else { -$listka=$ctx.Web.Lists.GetById($change.ListId) -$ctx.Load($listka) -$ctx.ExecuteQuery() -$change.ListName=$listka.Title} -if(! $change.IsPropertyAvailable("WebId")) { $change | Add-Member WebId("N/A")}else { $change.WebName=$ctx.Web.Url} -if(! $change.IsPropertyAvailable("UserId")) { $change | Add-Member UserId("N/A")}else { $ctx.Load($ctx.Web.GetUserById($change.UserId)) -$ctx.ExecuteQuery() -$change.UserName=$ctx.Web.GetUserById($change.UserId).LoginName -$change.UserTitle=$ctx.Web.GetUserById($change.UserId).Title} -if(! $change.IsPropertyAvailable("AlertId")) { $change | Add-Member AlertId("N/A")} -if(! $change.IsPropertyAvailable("Activate")) { $change | Add-Member Activate("N/A")} - -$change | export-csv $CSVPath -Append -} - - - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $changeQuery = New-Object Microsoft.SharePoint.Client.ChangeQuery $true,$true + + $changeCollection = $ctx.Site.GetChanges($changeQuery) + $ctx.Load($changeCollection) + + try{ + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url " loaded changes" + } + catch [Net.WebException] { + Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red + } + + foreach ($change in $changeCollection){ + $change | Add-Member SiteCollection($Url) + $change | Add-Member ItemName("N/A") + $change | Add-Member ListName("N/A") + $change | Add-Member WebName("N/A") + $change | Add-Member UserName("N/A") + $change | Add-Member UserTitle("N/A") + + if(! $change.IsPropertyAvailable("ItemId")) { $change | Add-Member ItemId("N/A")} + else { + $leeafyname=$ctx.Web.Lists.GetById($change.ListId).GetItemById($change.ItemId) + $ctx.Load($leeafyname) + $ctx.ExecuteQuery() + $change.ItemName=$leeafyname.LeafName + } + + if(! $change.IsPropertyAvailable("ListId")) { $change | Add-Member ListId("N/A")} + else { + $listka=$ctx.Web.Lists.GetById($change.ListId) + $ctx.Load($listka) + $ctx.ExecuteQuery() + $change.ListName=$listka.Title + } + + if(! $change.IsPropertyAvailable("WebId")) { $change | Add-Member WebId("N/A")} + else { $change.WebName=$ctx.Web.Url} + + if(! $change.IsPropertyAvailable("UserId")) { $change | Add-Member UserId("N/A")} + else { $ctx.Load($ctx.Web.GetUserById($change.UserId)) + $ctx.ExecuteQuery() + $change.UserName=$ctx.Web.GetUserById($change.UserId).LoginName + $change.UserTitle=$ctx.Web.GetUserById($change.UserId).Title + } + + if(! $change.IsPropertyAvailable("AlertId")) { $change | Add-Member AlertId("N/A")} + + if(! $change.IsPropertyAvailable("Activate")) { $change | Add-Member Activate("N/A")} + + $change | export-csv $CSVPath -Append + } } @@ -96,11 +97,8 @@ $CSVPath="C:\users\ivo\Desktop\changecollectiontry3.csv" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -CSVPath $CSVPath - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -CSVPath $CSVPath } From 81ced9d1a66fc2aa4176f4846e5735e2a3779448 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 14:31:26 +0100 Subject: [PATCH 009/312] Update description.md --- .../description.md | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/Site Management/Create OneDrive for Business usage report for all users/description.md b/Site Management/Create OneDrive for Business usage report for all users/description.md index 92be00d5..c99d310f 100644 --- a/Site Management/Create OneDrive for Business usage report for all users/description.md +++ b/Site Management/Create OneDrive for Business usage report for all users/description.md @@ -6,40 +6,35 @@ The script uses CSOM. It requires SharePoint Online SDK and SharePoint Online Ma -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" - + ``` -How to use? -1. Download the script and open it in ISE or NotePad. +## How to use? +**1.** Download the script and open it in ISE or NotePad. -2. Enter your tenant's data: +**2.** Enter your tenant's data: -PowerShell +```PowerShell $admin="user@tenant.onmicrosoft.com" $pass=Read-Host "Enter Password: " -AsSecureString $mysiteHost="https://tenant-my.sharepoint.com" +``` - - -3. Run the script. - -4. Expected results: +**3.** Run the script. +**4.** Expected results: - - - + - +### Acknowledgement: -Acknowledgement: -The script is using Invoke-LoadMethod published here, without which it could not proceed. The method was created and belongs to a brilliant SharePointer and Guru, Vadim Gremyachev. +The script is using Invoke-LoadMethod published [here](https://sharepoint.stackexchange.com/questions/126221/spo-retrieve-hasuniqueroleassignements-property-using-powershell), without which it could not proceed. The method was created and belongs to a brilliant SharePointer and Guru, [Vadim Gremyachev](https://sharepoint.stackexchange.com/users/10610/vadim-gremyachev). From 500366dbd1a2cd2991c6948aad20c5a102ec42b3 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:35:59 +0100 Subject: [PATCH 010/312] Update description.md --- .../description.md | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/Site Management/Enable page editing when master page editing has been disabled for this site/description.md b/Site Management/Enable page editing when master page editing has been disabled for this site/description.md index b72f8e1a..15666011 100644 --- a/Site Management/Enable page editing when master page editing has been disabled for this site/description.md +++ b/Site Management/Enable page editing when master page editing has been disabled for this site/description.md @@ -2,19 +2,19 @@ When you receive the error "Master page editing has been disabled for this site. -How to use? +## How to use? -1. Download and install SharePoint Online SDK. +**1.** Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). -2. Download the .ps1 file. +**2.** Download the ```.ps1``` file. -3. Open the file (you can do it also in NotePad) +**3.** Open the file (you can do it also in NotePad) -4. Insert your data in these lines: +**4.** Insert your data in these lines: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -24,27 +24,18 @@ $Username="admin@tenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $Url="https://tenant.sharepoint.com/sites/teamsitewithlibraries" $setting=$true +``` a) Find on your computer where SharePoint.Clitent.dll and SharePoint.Client.Runtime.dll libraries are located and insert the correct paths -b) Instead of "admin@tenant.onmicrosoft.com" enter you username -c) Instead of "https://tenant.sharepoint.com/sites/teamsitewithlibraries" enter the name of the site collection where you want to change the setting -d) If you want to ENABLE master page editing, skip the next line. If you want to DISABLE master page editing, change it to $false -5. Run the script in Powershell (any module). -6. At the end you should receive a confirmation message like this: - - - - - - - +b) Instead of "admin@tenant.onmicrosoft.com" enter you username - +c) Instead of "https://tenant.sharepoint.com/sites/teamsitewithlibraries" enter the name of the site collection where you want to change the setting - +d) If you want to ENABLE master page editing, skip the next line. If you want to DISABLE master page editing, change it to $false - +**5.** Run the script in Powershell (any module). +**6.** At the end you should receive a confirmation message like this: - + Please share your feedback in the Q&A section From 799bb2be44ce79c5fbf783f732e24114ba1416ee Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:37:26 +0100 Subject: [PATCH 011/312] Update AllowMasterPageEditing.ps1 --- .../AllowMasterPageEditing.ps1 | 71 +++++++++---------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/Site Management/Enable page editing when master page editing has been disabled for this site/AllowMasterPageEditing.ps1 b/Site Management/Enable page editing when master page editing has been disabled for this site/AllowMasterPageEditing.ps1 index ccccf1d6..8005c3ac 100644 --- a/Site Management/Enable page editing when master page editing has been disabled for this site/AllowMasterPageEditing.ps1 +++ b/Site Management/Enable page editing when master page editing has been disabled for this site/AllowMasterPageEditing.ps1 @@ -1,46 +1,39 @@ -function Set-SPOSiteAllowMasterPageEditing -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOSiteAllowMasterPageEditing{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, -[Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [bool]$setting - -) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ -$ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) - $ctx.Load($ctx.Web.Webs) - $ctx.Site.AllowMasterPageEditing=$setting - - - try - { - $ctx.ExecuteQuery() - $ctx.Load($ctx.Site) - $ctx.ExecuteQuery() - Write-Host "Success. AllowMasterPageEditing is now set to " $ctx.Site.AllowMasterPageEditing -ForegroundColor Green - } - catch [Net.WebException] - { - Write-Host "Failed to set the setting" $_.Exception.Message.ToString() -ForegroundColor Red - } - + ) + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $ctx.Load($ctx.Web.Webs) + $ctx.Site.AllowMasterPageEditing=$setting + + + try{ + $ctx.ExecuteQuery() + $ctx.Load($ctx.Site) + $ctx.ExecuteQuery() + Write-Host "Success. AllowMasterPageEditing is now set to " $ctx.Site.AllowMasterPageEditing -ForegroundColor Green + } + catch [Net.WebException] { + Write-Host "Failed to set the setting" $_.Exception.Message.ToString() -ForegroundColor Red + } } @@ -55,4 +48,4 @@ $Url="https://tenant.sharepoint.com/sites/teamsitewithlibraries" $setting=$true -Set-SPOSiteAllowMasterPageEditing -Username $Username -AdminPassword $AdminPassword -Url $Url -setting $setting \ No newline at end of file +Set-SPOSiteAllowMasterPageEditing -Username $Username -AdminPassword $AdminPassword -Url $Url -setting $setting From d223bc2fecf65afa9d53e692dfd795ec7b13e8d0 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:40:06 +0100 Subject: [PATCH 012/312] Update description.md --- .../description.md | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/Site Management/Export site collection properties using Powershell and CSOM/description.md b/Site Management/Export site collection properties using Powershell and CSOM/description.md index 5f16ad1c..c02155b7 100644 --- a/Site Management/Export site collection properties using Powershell and CSOM/description.md +++ b/Site Management/Export site collection properties using Powershell and CSOM/description.md @@ -2,25 +2,14 @@ Short Powershell script to export properties of all site collections. Sample properties include AllowSelfServiceUpgrade, FalseAverageResourceUsage, CompatibilityLevel, CurrentResourceUsage, DenyAddAndCustomizePages, DisableAppViews, DisableCompanyWideSharingLinks, DisableFlows, PWAEnabled, SandboxedCodeActivationCapability, SharingAllowedDomainList, ShowPeoplePickerSuggestionsForGuestUsers, SiteDefinedSharingCapability - - - - - - Expected results: - - - - - - - + ### How to use? -Download and open the .ps1 file. -Add correct libraries: + +- Download and open the ```.ps1``` file. +- Add correct libraries: ```PowerShell @@ -28,7 +17,7 @@ Add correct libraries: 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\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll" ``` -Enter the correct url and admin login: +- Enter the correct url and admin login: ```PowerShell @@ -37,4 +26,4 @@ $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="admin@TENANT.onmicrosoft.com" $Url="https://TENANT-admin.sharepoint.com" ``` - Run the script +- Run the script From f9c86576bf033efa29da6689e5dff4fb7d4d7aeb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:40:39 +0100 Subject: [PATCH 013/312] Update SiteCollPropertiesWithCSOM.ps1 --- .../SiteCollPropertiesWithCSOM.ps1 | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/Site Management/Export site collection properties using Powershell and CSOM/SiteCollPropertiesWithCSOM.ps1 b/Site Management/Export site collection properties using Powershell and CSOM/SiteCollPropertiesWithCSOM.ps1 index 54860404..a1fd510d 100644 --- a/Site Management/Export site collection properties using Powershell and CSOM/SiteCollPropertiesWithCSOM.ps1 +++ b/Site Management/Export site collection properties using Powershell and CSOM/SiteCollPropertiesWithCSOM.ps1 @@ -1,30 +1,27 @@ -function Get-SiteColl -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SiteColl{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] $password - ) + ) - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() - $spoTenant= New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($Ctx) - $spoTenantSiteCollections=$spoTenant.GetSiteProperties(0,$true) - $ctx.Load($spoTenantSiteCollections) - $ctx.ExecuteQuery() - - foreach($siteColl in $spoTenantSiteCollections) - { - Write-Output $siteColl - } + $spoTenant= New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($Ctx) + $spoTenantSiteCollections=$spoTenant.GetSiteProperties(0,$true) + $ctx.Load($spoTenantSiteCollections) + $ctx.ExecuteQuery() + foreach($siteColl in $spoTenantSiteCollections){ + Write-Output $siteColl + } } @@ -44,4 +41,4 @@ $Url="https://TENANT-admin.sharepoint.com" -Get-SiteColl -Username $username -Url $Url -password $AdminPassword | Export-Csv C:\Users\Arleta.Wanat\Desktop\'August 2017'\testcsv.csv \ No newline at end of file +Get-SiteColl -Username $username -Url $Url -password $AdminPassword | Export-Csv C:\Users\Arleta.Wanat\Desktop\'August 2017'\testcsv.csv From e054505e6c1337731de4a5becc691d305f7ac8e3 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:43:55 +0100 Subject: [PATCH 014/312] Update description.md --- .../description.md | 27 ++++++------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a SPO feature for a single site/description.md b/Site Management/Features/Activate or deactivate a SPO feature for a single site/description.md index b1bf9fe4..3063fca7 100644 --- a/Site Management/Features/Activate or deactivate a SPO feature for a single site/description.md +++ b/Site Management/Features/Activate or deactivate a SPO feature for a single site/description.md @@ -1,39 +1,28 @@ -A simple script for SharePoint Online that enables a feature in a single SPO site (site collection or a subsite). You need to have the required permissions for the site and known the feature guid. The list of guids can be found here: -http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx - - +A simple script for SharePoint Online that enables a feature in a single SPO site (site collection or a subsite). You need to have the required permissions for the site and known the feature guid. The list of guids can be found [here](http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx). Before running the script, verify the paths to SharePoint Online SDK: - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` - - Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - -PowerShell +```PowerShell $siteUrl = Read-Host -Prompt "Enter https://tenant.sharepoint.com/sites/mysitecollection” $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" - + ``` During its execution the script will inform you, where the features have been changed. +### Related scripts: - - -Related scripts: - -Activate or deactivate a feature for a site and its subsites +[Activate or deactivate a feature for a site and its subsites](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-bc6534e9) -Activate or deactivate a SPO feature for direct subsites in site collection +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) From f0d81d80acf3b4228717cbea9ed6a1983dacb747 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:45:18 +0100 Subject: [PATCH 015/312] Update enablefeatureForASingleSite.ps1 --- .../enablefeatureForASingleSite.ps1 | 96 ++++++++----------- 1 file changed, 40 insertions(+), 56 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a SPO feature for a single site/enablefeatureForASingleSite.ps1 b/Site Management/Features/Activate or deactivate a SPO feature for a single site/enablefeatureForASingleSite.ps1 index 917a2ec5..b47594c8 100644 --- a/Site Management/Features/Activate or deactivate a SPO feature for a single site/enablefeatureForASingleSite.ps1 +++ b/Site Management/Features/Activate or deactivate a SPO feature for a single site/enablefeatureForASingleSite.ps1 @@ -1,54 +1,46 @@ -function Remove-SPOFeature -{ -param ( - [string]$Username, +function Remove-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) - -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Web -$ctx.Load($site) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() - - - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $site=$ctx.Web + $ctx.Load($site) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + $site.Features.Remove($featureguid, $true); + $ctx.ExecuteQuery() + Write-Host "Feature removed for" $site.Url } -function Add-SPOFeature -{ -param ( - [string]$Username, +function Add-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) + ) -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Web -$ctx.Load($site) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $site=$ctx.Web + $ctx.Load($site) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url - + $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) + $ctx.ExecuteQuery() + Write-Host "Feature enabled for" $site.Url } @@ -62,35 +54,27 @@ $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -try -{ -$ctx.ExecuteQuery() +try{ + $ctx.ExecuteQuery() +} +catch [Net.WebException] { + Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red } -catch [Net.WebException] - { - - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red - } $feature=Read-Host -Prompt "Enter the feature id, e.g. for SharePoint Server Publishing it's 94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" $featureguid=new-object System.Guid $feature $RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." $RemoveorAdd=$RemoveorAdd.Trim() -if($RemoveorAdd -like "a") -{ - - Add-SPOFeature -Username $username -Url $siteUrl -password $password - +if($RemoveorAdd -like "a"){ + Add-SPOFeature -Username $username -Url $siteUrl -password $password + } -elseif($RemoveorAdd -like "d") -{ - Remove-SPOFeature -Username $username -Url $siteUrl -password $password - +elseif($RemoveorAdd -like "d"){ + Remove-SPOFeature -Username $username -Url $siteUrl -password $password } -else -{ -Write-Host "Didn't recognize the command" +else{ + Write-Host "Didn't recognize the command" } From b6d0b39e16fd9fac4105d885ea01c2edb9d407da Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:46:49 +0100 Subject: [PATCH 016/312] Update description.md --- .../description.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/description.md b/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/description.md index ebce20e5..2643c966 100644 --- a/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/description.md +++ b/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/description.md @@ -1,8 +1,8 @@ -A simple script for SharePoint Online that finds all direct (one-level down) subsites in a provided site collection and enables the chosen SharePoint feature for all of them. You need to have the required permissions for the site and known the feature guid. The list of guids can be found here: -http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx +A simple script for SharePoint Online that finds all direct (one-level down) subsites in a provided site collection and enables the chosen SharePoint feature for all of them. You need to have the required permissions for the site and known the feature guid. The list of guids can be found [here](http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx). -##### Related scripts +#### Related scripts + Activate or deactivate a feature for a site and its subsites [GitHub](https://github.com/PowershellScripts/AllGalleryScriptsSamples/tree/master/Site%20Management/Features/Activate%20or%20deactivate%20a%20feature%20for%20a%20site%20and%20its%20subsites) [Technet Gallery](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-bc6534e9) Activate or deactivate a SPO feature for a single site [GitHub](https://github.com/PowershellScripts/AllGalleryScriptsSamples/tree/master/Site%20Management/Features/Activate%20or%20deactivate%20a%20SPO%20feature%20for%20a%20single%20site) [Technet Gallery](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) From 385a6fe71f15b6d82466ebb3dce59b4cec4715cb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:47:23 +0100 Subject: [PATCH 017/312] Update enablefeature.ps1 --- .../enablefeature.ps1 | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/enablefeature.ps1 b/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/enablefeature.ps1 index f5b894eb..98c7e303 100644 --- a/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/enablefeature.ps1 +++ b/Site Management/Features/Activate or deactivate a SPO feature for direct subsites in site collection/enablefeature.ps1 @@ -19,32 +19,25 @@ $featureguid=new-object System.Guid $feature $RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." $RemoveorAdd=$RemoveorAdd.Trim() -if($RemoveorAdd -like "a") -{ - - foreach($site in $sites) - { - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - #$site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url +if($RemoveorAdd -like "a"){ + foreach($site in $sites){ + $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) + #$site.Features.Remove($featureguid, $true); + $ctx.ExecuteQuery() + Write-Host "Feature enabled for" $site.Url } Write-Host "Done." } -elseif($RemoveorAdd -like "d") -{ - - foreach($site in $sites) - { - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url +elseif($RemoveorAdd -like "d"){ + foreach($site in $sites){ + $site.Features.Remove($featureguid, $true); + $ctx.ExecuteQuery() + Write-Host "Feature removed for" $site.Url } Write-Host "Done." } -else -{ -Write-Host "Didn't recognize the command" +else{ + Write-Host "Didn't recognize the command" } From 7fcbea5acf855224c0b0f071f2cae6f2be2034fa Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:49:11 +0100 Subject: [PATCH 018/312] Update description.md --- .../description.md | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a feature for a site and its subsites/description.md b/Site Management/Features/Activate or deactivate a feature for a site and its subsites/description.md index 66f37737..156210ed 100644 --- a/Site Management/Features/Activate or deactivate a feature for a site and its subsites/description.md +++ b/Site Management/Features/Activate or deactivate a feature for a site and its subsites/description.md @@ -1,29 +1,18 @@ -A simple script for SharePoint Online that activates or de-activates a feature for a site,then finds all its subsites and enables/disables the chosen SharePoint feature for all of them. You need to have the required permissions for the site and known the feature guid. The list of guids can be found here: +A simple script for SharePoint Online that activates or de-activates a feature for a site,then finds all its subsites and enables/disables the chosen SharePoint feature for all of them. You need to have the required permissions for the site and known the feature guid. The list of guids can be found [here](http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx). -http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx +Before running the script, verify the paths to [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038): - - - - -Before running the script, verify the paths to SharePoint Online SDK: - - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - + ``` Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - -PowerShell +```PowerShell $siteUrl = Read-Host -Prompt "Enter https://tenant.sharepoint.com/sites/mysitecollection” $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" - + ``` During its execution the script will inform you, where the features have been changed. @@ -36,9 +25,8 @@ During its execution the script will inform you, where the features have been ch -Related scripts - +### Related scripts -Activate or deactivate a SPO feature for direct subsites in site collection +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-bc6534e9) -Activate or deactivate a SPO feature for a single site +[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) From c8bf1fc3fd1fb6ebd544e2eeb0ecb6b74e1552c3 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:50:49 +0100 Subject: [PATCH 019/312] Update enablefeatureWithRecursion.ps1 --- .../enablefeatureWithRecursion.ps1 | 123 ++++++++---------- 1 file changed, 53 insertions(+), 70 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a feature for a site and its subsites/enablefeatureWithRecursion.ps1 b/Site Management/Features/Activate or deactivate a feature for a site and its subsites/enablefeatureWithRecursion.ps1 index a66670b4..e8d46666 100644 --- a/Site Management/Features/Activate or deactivate a feature for a site and its subsites/enablefeatureWithRecursion.ps1 +++ b/Site Management/Features/Activate or deactivate a feature for a site and its subsites/enablefeatureWithRecursion.ps1 @@ -1,68 +1,60 @@ -function Remove-SPOFeature -{ -param ( - [string]$Username, +function Remove-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) + ) -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Web -$ctx.Load($site) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $site=$ctx.Web + $ctx.Load($site) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url - if($ctx.Web.Webs.Count -gt 0) - { - foreach ($web in $ctx.Web.Webs) - { - Remove-SPOFeature -Username $Username -Url $web.Url -password $password - } - } + $site.Features.Remove($featureguid, $true); + $ctx.ExecuteQuery() + Write-Host "Feature removed for" $site.Url + if($ctx.Web.Webs.Count -gt 0){ + foreach ($web in $ctx.Web.Webs){ + Remove-SPOFeature -Username $Username -Url $web.Url -password $password + } + } } -function Add-SPOFeature -{ -param ( - [string]$Username, +function Add-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) + ) -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Web -$ctx.Load($site) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() - - - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url - - if($ctx.Web.Webs.Count -gt 0) - { - foreach ($web in $ctx.Web.Webs) - { - Add-SPOFeature -Username $Username -Url $web.Url -password $password - } - } - + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + + $site=$ctx.Web + $ctx.Load($site) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + + + $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) + $ctx.ExecuteQuery() + Write-Host "Feature enabled for" $site.Url + + if($ctx.Web.Webs.Count -gt 0){ + foreach ($web in $ctx.Web.Webs){ + Add-SPOFeature -Username $Username -Url $web.Url -password $password + } + } } @@ -76,35 +68,26 @@ $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -try -{ -$ctx.ExecuteQuery() +try{ + $ctx.ExecuteQuery() +} +catch [Net.WebException] { + Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red } -catch [Net.WebException] - { - - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red - } $feature=Read-Host -Prompt "Enter the feature id, e.g. for SharePoint Server Publishing it's 94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" $featureguid=new-object System.Guid $feature $RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." $RemoveorAdd=$RemoveorAdd.Trim() -if($RemoveorAdd -like "a") -{ - - Add-SPOFeature -Username $username -Url $siteUrl -password $password - +if($RemoveorAdd -like "a"){ + Add-SPOFeature -Username $username -Url $siteUrl -password $password } -elseif($RemoveorAdd -like "d") -{ - Remove-SPOFeature -Username $username -Url $siteUrl -password $password - +elseif($RemoveorAdd -like "d"){ + Remove-SPOFeature -Username $username -Url $siteUrl -password $password } -else -{ -Write-Host "Didn't recognize the command" +else{ + Write-Host "Didn't recognize the command" } From 4917fd6f879ccf55deafca32a798f4e1139e1b55 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:53:38 +0100 Subject: [PATCH 020/312] Update description.md --- .../description.md | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/Site Management/Features/Activate or deactivate a site collection feature/description.md b/Site Management/Features/Activate or deactivate a site collection feature/description.md index 01661ede..371183e3 100644 --- a/Site Management/Features/Activate or deactivate a site collection feature/description.md +++ b/Site Management/Features/Activate or deactivate a site collection feature/description.md @@ -1,37 +1,28 @@ -A simple script for SharePoint Online that activates or de-activates a feature for a site collection. You need to have the required permissions for the site collection and know the feature guid. The list of guids can be found here: +A simple script for SharePoint Online that activates or de-activates a feature for a site collection. You need to have the required permissions for the site collection and know the feature guid. The list of guids can be found [here]( +http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx). -http://blogs.msdn.com/b/razi/archive/2013/10/28/listing-all-sharepoint-2013-features-including-name-title-scope-id-and-description.aspx - - - - - -Before running the script, verify the paths to SharePoint Online SDK: - - +Before running the script, verify the paths to [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038): ```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" ``` - Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - ```PowerShell $siteUrl = Read-Host -Prompt "Enter https://tenant.sharepoint.com/sites/mysitecollection” $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" ``` - During its execution the script will inform you, when the feature has been changed. -##### Related scripts +### Related scripts + +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) -Activate or deactivate a SPO feature for direct subsites in site collection [GitHub]( [Technet Gallery] +[Activate or deactivate a SPO feature for a single site](https://github.com/PowershellScripts/AllGalleryScriptsSamples/tree/master/Site%20Management/Features/Activate%20or%20deactivate%20a%20SPO%20feature%20for%20a%20single%20site) -Activate or deactivate a SPO feature for a single site [GitHub](https://github.com/PowershellScripts/AllGalleryScriptsSamples/tree/master/Site%20Management/Features/Activate%20or%20deactivate%20a%20SPO%20feature%20for%20a%20single%20site) [TechnetGallery](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) +[TechnetGallery](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) From b703e4322e35e72420e0e04bf39a2d0554facca6 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:57:02 +0100 Subject: [PATCH 021/312] Update description.md --- .../description.md | 40 ++++++------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md b/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md index f2c1fa5a..1349362f 100644 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md +++ b/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md @@ -1,59 +1,43 @@ -This script is a temporary solution intended to work together with Retrieve all SharePoint Online profiles and their properties using CSOM. +This script is a temporary solution intended to work together with [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936). -Using Retrieve all SharePoint Online profiles and their properties using CSOM generate a CSV file with personal sites in the format: +Using [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936) generate a CSV file with personal sites in the format: Site +|---| /personal/t_trial234_onmicrosoft_com/ /personal/uss100_trial234_onmicrosoft_com/ /personal/t_trial234_onmicrosoft_com/ - The Column name has to be SITE. +Run the script. It will ask you for credentials, [feature id](https://docs.microsoft.com/pl-pl/archive/blogs/), and whether you want to acivate it or de-activate. - -Run the script. It will ask you for credentials, feature id, and whether you want to acivate it or de-activate. - - - Before running the script, verify the paths to SharePoint Online SDK: - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - + ``` Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - During its execution the script will inform you, where the features have been changed. +### Related scripts - - - - - - -Related scripts - - -Activate or deactivate a SPO feature for direct subsites in site collection +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) -Activate or deactivate a SPO feature for a single site +[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) -Activate or deactivate a site collection feature +[Activate or deactivate a site collection feature ](https://gallery.technet.microsoft.com/Activate-or-deactivate-a-a7e12c79) -Get all features from a site collection +[Get all features from a site collection](https://gallery.technet.microsoft.com/Get-all-features-from-a-2954b47a) -Get all features from a site +[Get all features from a site](https://gallery.technet.microsoft.com/Get-all-features-from-a-3168e476) From 3633ea2b5c65170ac8547c20d42d5a5e9cb5c496 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:58:58 +0100 Subject: [PATCH 022/312] Update AddFeaturesToPersonal.ps1 --- .../AddFeaturesToPersonal.ps1 | 126 ++++++++---------- 1 file changed, 52 insertions(+), 74 deletions(-) diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 b/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 index 881acd45..ecec6128 100644 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 +++ b/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 @@ -1,55 +1,46 @@ -function Remove-SPOFeature -{ -param ( - [string]$Username, +function Remove-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) - -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Site -$ctx.Load($site) -$ctx.ExecuteQuery() + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url + $site=$ctx.Site + $ctx.Load($site) + $ctx.ExecuteQuery() - + $site.Features.Remove($featureguid, $true); + $ctx.ExecuteQuery() + Write-Host "Feature removed for" $site.Url } -function Add-SPOFeature -{ -param ( - [string]$Username, +function Add-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) - -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Site -$ctx.Load($site) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url + $site=$ctx.Site + $ctx.Load($site) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() - - + $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) + $ctx.ExecuteQuery() + Write-Host "Feature enabled for" $site.Url } @@ -68,55 +59,42 @@ $ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredent $adminUrl=$siteUrl.Replace("-my","-admin") Connect-SPOService -Url $adminUrl -Credential $username -try -{ -$ctx.ExecuteQuery() +try{ + $ctx.ExecuteQuery() +} +catch [Net.WebException] { + Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red } -catch [Net.WebException] - { - - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red - } $feature=Read-Host -Prompt "Enter the feature id, e.g. for SharePoint Server Publishing it's 94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" $featureguid=new-object System.Guid $feature $RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." $RemoveorAdd=$RemoveorAdd.Trim() -if($RemoveorAdd -like "a") -{ - - foreach($user in $users) - { - if($user.Site -ne "") - { - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Add-SPOFeature -Username $username -Url $urelek -password $password +if($RemoveorAdd -like "a"){ + foreach($user in $users){ + if($user.Site -ne ""){ + $urelek=$siteUrl+$user.Site + $urelek=$urelek.TrimEnd("/") + Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true + Add-SPOFeature -Username $username -Url $urelek -password $password #Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $false - - } - -} + } + } } -elseif($RemoveorAdd -like "d") -{ - foreach($user in $users) - { - if($user.Site -ne "") - { - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Remove-SPOFeature -Username $username -Url $urelek -password $password - } - } +elseif($RemoveorAdd -like "d"){ + foreach($user in $users){ + if($user.Site -ne ""){ + $urelek=$siteUrl+$user.Site + $urelek=$urelek.TrimEnd("/") + Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true + Remove-SPOFeature -Username $username -Url $urelek -password $password + } + } } -else -{ -Write-Host "Didn't recognize the command" +else{ + Write-Host "Didn't recognize the command" } From 7093575ae0c623a9a49f6a224d461802fac7c853 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 15:59:49 +0100 Subject: [PATCH 023/312] Update enablefeature.ps1 --- .../Features/Enable feature/enablefeature.ps1 | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/Site Management/Features/Enable feature/enablefeature.ps1 b/Site Management/Features/Enable feature/enablefeature.ps1 index 2c8c5acb..a68f2567 100644 --- a/Site Management/Features/Enable feature/enablefeature.ps1 +++ b/Site Management/Features/Enable feature/enablefeature.ps1 @@ -24,32 +24,25 @@ $featureguid=new-object System.Guid $feature $RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." $RemoveorAdd=$RemoveorAdd.Trim() -if($RemoveorAdd -like "a") -{ - - foreach($site in $sites) - { +if($RemoveorAdd -like "a"){ + foreach($site in $sites){ $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) #$site.Features.Remove($featureguid, $true); $ctx.ExecuteQuery() Write-Host "Feature enabled for" $site.Url - } - Write-Host "Done." + } + Write-Host "Done." } -elseif($RemoveorAdd -like "d") -{ - - foreach($site in $sites) - { +elseif($RemoveorAdd -like "d"){ + foreach($site in $sites){ $site.Features.Remove($featureguid, $true); $ctx.ExecuteQuery() Write-Host "Feature removed for" $site.Url - } + } Write-Host "Done." } -else -{ -Write-Host "Didn't recognize the command" +else{ + Write-Host "Didn't recognize the command" } From 596f47590c90246ba1dcc868392db7cda5d0029e Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:01:23 +0100 Subject: [PATCH 024/312] Update description.md --- .../description.md | 31 ++++--------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/Site Management/Features/Get all features from a site collection/description.md b/Site Management/Features/Get all features from a site collection/description.md index 0e684c55..66348e51 100644 --- a/Site Management/Features/Get all features from a site collection/description.md +++ b/Site Management/Features/Get all features from a site collection/description.md @@ -1,23 +1,14 @@ A simple script for SharePoint Online to get all site collection features activated at a particular site collection. - - - - Before running the script, verify the paths to SharePoint Online SDK: - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - + ``` Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - ```PowerShell $siteUrl = Read-Host -Prompt "Enter https://tenant.sharepoint.com/sites/mysitecollection” $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" @@ -26,21 +17,11 @@ $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" During its execution the script will inform you what features are activated in a given site collection: - - - - - - - - - - - + -#### Related scripts +### Related scripts -Activate or deactivate a SPO feature for direct subsites in site collection +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) -Activate or deactivate a SPO feature for a single site +[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) From c26cb7e6189b0246c0cd4ef4e5243eafeb9de2f8 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:02:00 +0100 Subject: [PATCH 025/312] Update GetSPOSiteFeatures.ps1 --- .../GetSPOSiteFeatures.ps1 | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/Site Management/Features/Get all features from a site collection/GetSPOSiteFeatures.ps1 b/Site Management/Features/Get all features from a site collection/GetSPOSiteFeatures.ps1 index f00fe564..d29918cd 100644 --- a/Site Management/Features/Get all features from a site collection/GetSPOSiteFeatures.ps1 +++ b/Site Management/Features/Get all features from a site collection/GetSPOSiteFeatures.ps1 @@ -1,29 +1,24 @@ -function Get-SPOFeature -{ -param ( - [string]$Username, +function Get-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) - -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Site -$ctx.Load($site.Features) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - for($i=0;$i -lt $site.Features.Count ;$i++) -{ + $site=$ctx.Site + $ctx.Load($site.Features) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() -Write-Output $site.Features[$i].DefinitionID - -} + for($i=0;$i -lt $site.Features.Count ;$i++){ + Write-Output $site.Features[$i].DefinitionID + } } @@ -40,23 +35,14 @@ $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -try -{ -$ctx.ExecuteQuery() +try{ + $ctx.ExecuteQuery() +} +catch [Net.WebException] { + Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red } -catch [Net.WebException] - { - - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red - } - - - - Get-SPOFeature -Username $username -Url $siteUrl -password $password +Get-SPOFeature -Username $username -Url $siteUrl -password $password - - - Write-Host "Done." -ForegroundColor Green From c7e11cfb966650f43297dd701b5854e0be94f442 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:04:10 +0100 Subject: [PATCH 026/312] Update description.md --- .../description.md | 43 ++++--------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/Site Management/Features/Get all features from a site/description.md b/Site Management/Features/Get all features from a site/description.md index 66b017c3..a73c606d 100644 --- a/Site Management/Features/Get all features from a site/description.md +++ b/Site Management/Features/Get all features from a site/description.md @@ -1,50 +1,25 @@ -A simple script for SharePoint Online to retrieve all site features activated at a site level (not site collection). - - - - - - +A simple script for SharePoint Online to **retrieve all site features activated at a site level** (not site collection). Before running the script, verify the paths to SharePoint Online SDK: - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` - - Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - - -PowerShell +```PowerShell $siteUrl = Read-Host -Prompt "Enter https://tenant.sharepoint.com/sites/mysitecollection” $username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" - - +``` During its execution the script will inform you what features are activated in a given site collection. - - - - - - - - - - - - -Related scripts - +### Related scripts -Activate or deactivate a SPO feature for direct subsites in site collection +[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) -Activate or deactivate a SPO feature for a single site +[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) -Get all features from a site collection +[Get all features from a site collection](https://gallery.technet.microsoft.com/Get-all-features-from-a-2954b47a) From 52665e10fe15302e8bcec480332047661fa21638 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:04:51 +0100 Subject: [PATCH 027/312] Update GetSPOWebFeatures.ps1 --- .../GetSPOWebFeatures.ps1 | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/Site Management/Features/Get all features from a site/GetSPOWebFeatures.ps1 b/Site Management/Features/Get all features from a site/GetSPOWebFeatures.ps1 index bb47ab43..41ef0ebf 100644 --- a/Site Management/Features/Get all features from a site/GetSPOWebFeatures.ps1 +++ b/Site Management/Features/Get all features from a site/GetSPOWebFeatures.ps1 @@ -1,29 +1,24 @@ -function Get-SPOFeature -{ -param ( - [string]$Username, +function Get-SPOFeature{ + param ( + [string]$Username, [Parameter(Mandatory=$true,Position=1)] [string]$Url, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password -) - -$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - -$site=$ctx.Web -$ctx.Load($site.Features) -$ctx.Load($ctx.Web.Webs) -$ctx.ExecuteQuery() + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - for($i=0;$i -lt $site.Features.Count ;$i++) -{ + $site=$ctx.Web + $ctx.Load($site.Features) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() -Write-Output $site.Features[$i].DefinitionID - -} + for($i=0;$i -lt $site.Features.Count ;$i++){ + Write-Output $site.Features[$i].DefinitionID + } } @@ -40,23 +35,14 @@ $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -try -{ -$ctx.ExecuteQuery() +try{ + $ctx.ExecuteQuery() +} +catch [Net.WebException] { + Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red } -catch [Net.WebException] - { - - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red - } - - - - - Get-SPOFeature -Username $username -Url $siteUrl -password $password - - +Get-SPOFeature -Username $username -Url $siteUrl -password $password Write-Host "Done." -ForegroundColor Green From 6ae172ee5e24832127e5c523625ed05db3a64b30 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:06:32 +0100 Subject: [PATCH 028/312] Update description.md --- .../description.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Site Management/Get SharePoint Online Access Requests Settings with REST API/description.md b/Site Management/Get SharePoint Online Access Requests Settings with REST API/description.md index ff805079..a433e92b 100644 --- a/Site Management/Get SharePoint Online Access Requests Settings with REST API/description.md +++ b/Site Management/Get SharePoint Online Access Requests Settings with REST API/description.md @@ -4,28 +4,22 @@ Short Powershell script to retrieve the access requests settings using REST. In order to use the script, download, open the file and enter the admin's username and the site's url in the script: -PowerShell +```PowerShell #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="t@t321.onmicrosoft.com" $Url="https://t321.sharepoint.com/polski" - + ``` You do not need to enter the password. You will be prompted for it during script's execution. - - Sample result: - - - - - + You can also check out articles on Access Requests settings and how to manage them not only with REST, but also CSOM and User Interface: -Managing SharePoint Online Access Requests using Powershell +[Managing SharePoint Online Access Requests using Powershell](https://social.technet.microsoft.com/wiki/contents/articles/31157.manage-sharepoint-online-access-requests-using-powershell.aspxv) - SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM +[SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM](https://social.technet.microsoft.com/wiki/contents/articles/37401.sharepoint-online-approve-or-decline-access-requests-using-powershell-and-csom.aspx) From b3bcaca43810f37578ab865856710a43a30f996e Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:07:18 +0100 Subject: [PATCH 029/312] Update GetSPOAccessRequestsWithREST.ps1 --- .../GetSPOAccessRequestsWithREST.ps1 | 64 +++++++------------ 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/Site Management/Get SharePoint Online Access Requests Settings with REST API/GetSPOAccessRequestsWithREST.ps1 b/Site Management/Get SharePoint Online Access Requests Settings with REST API/GetSPOAccessRequestsWithREST.ps1 index 42be46bf..3c84e30f 100644 --- a/Site Management/Get SharePoint Online Access Requests Settings with REST API/GetSPOAccessRequestsWithREST.ps1 +++ b/Site Management/Get SharePoint Online Access Requests Settings with REST API/GetSPOAccessRequestsWithREST.ps1 @@ -1,54 +1,34 @@ -function Get-AccessRequests -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-AccessRequests{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string] $url - ) + ) - - $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')" - - - - $request = [System.Net.WebRequest]::Create($RESTUrl) - $request.Credentials = $Credentials - $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") - $request.Accept = "application/json;odata=verbose" - [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get - $request.Method=$Method - $response = $request.GetResponse() - $requestStream = $response.GetResponseStream() - $read = New-Object System.IO.StreamReader $requestStream - $data=$read.ReadToEnd() - $results = $data | ConvertFrom-Json - - - - - Write-Output ($results.d) - - - - - - - - - } - + $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')" - - + $request = [System.Net.WebRequest]::Create($RESTUrl) + $request.Credentials = $Credentials + $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") + $request.Accept = "application/json;odata=verbose" + [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get + $request.Method=$Method + $response = $request.GetResponse() + $requestStream = $response.GetResponseStream() + $read = New-Object System.IO.StreamReader $requestStream + $data=$read.ReadToEnd() + $results = $data | ConvertFrom-Json + Write-Output ($results.d) +} #Paths to SDK Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" @@ -63,4 +43,4 @@ $Url="https://t321.sharepoint.com/polski" -Get-AccessRequests -Username $username -Url $Url -password $AdminPassword \ No newline at end of file +Get-AccessRequests -Username $username -Url $Url -password $AdminPassword From b17ede34fa4899f23117868cf04bf64d86b55851 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:08:42 +0100 Subject: [PATCH 030/312] Update description.md --- .../description.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Site Management/Get SharePoint Online Access Requests with REST API/description.md b/Site Management/Get SharePoint Online Access Requests with REST API/description.md index 36eeb63a..014acc63 100644 --- a/Site Management/Get SharePoint Online Access Requests with REST API/description.md +++ b/Site Management/Get SharePoint Online Access Requests with REST API/description.md @@ -1,32 +1,26 @@ Short Powershell script to retrieve the access requests using REST. - - In order to use the script, download, open the file and enter the admin's username and the site's url in the script: -PowerShell +```PowerShell #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="t@t321.onmicrosoft.com" $Url="https://t321.sharepoint.com/polski" - + ``` You do not need to enter the password. You will be prompted for it during script's execution. Sample result: - - - - - + You can also check out articles on Access Requests settings and how to manage them not only with REST, but also CSOM and User Interface: -Managing SharePoint Online Access Requests using Powershell +[Managing SharePoint Online Access Requests using Powershell](https://social.technet.microsoft.com/wiki/contents/articles/31157.manage-sharepoint-online-access-requests-using-powershell.aspx) - SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM +[SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM](https://social.technet.microsoft.com/wiki/contents/articles/37401.sharepoint-online-approve-or-decline-access-requests-using-powershell-and-csom.aspx) From 52fbb2df334b9a467f686a836b650dab3d131e4e Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:09:21 +0100 Subject: [PATCH 031/312] Update GetSPOAccessRequestsItemsWithREST.ps1 --- .../GetSPOAccessRequestsItemsWithREST.ps1 | 75 +++++++------------ 1 file changed, 26 insertions(+), 49 deletions(-) diff --git a/Site Management/Get SharePoint Online Access Requests with REST API/GetSPOAccessRequestsItemsWithREST.ps1 b/Site Management/Get SharePoint Online Access Requests with REST API/GetSPOAccessRequestsItemsWithREST.ps1 index 44f3302c..3d595d38 100644 --- a/Site Management/Get SharePoint Online Access Requests with REST API/GetSPOAccessRequestsItemsWithREST.ps1 +++ b/Site Management/Get SharePoint Online Access Requests with REST API/GetSPOAccessRequestsItemsWithREST.ps1 @@ -1,54 +1,31 @@ -function Get-AccessRequests -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-AccessRequests{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string] $url - ) - - - - $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')/items" - - - - $request = [System.Net.WebRequest]::Create($RESTUrl) - $request.Credentials = $Credentials - $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") - $request.Accept = "application/json;odata=verbose" - [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get - $request.Method=$Method - $response = $request.GetResponse() - $requestStream = $response.GetResponseStream() - $read = New-Object System.IO.StreamReader $requestStream - $data=$read.ReadToEnd() - # Because the string contains duplicate 'ID' keys. - $results = $data.ToString().Replace("ID", "_ID") | ConvertFrom-Json - - - - return ($results.d.results) - - - - - - - - - } - - - - - - - - + ) + + $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')/items" + + $request = [System.Net.WebRequest]::Create($RESTUrl) + $request.Credentials = $Credentials + $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") + $request.Accept = "application/json;odata=verbose" + [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get + $request.Method=$Method + $response = $request.GetResponse() + $requestStream = $response.GetResponseStream() + $read = New-Object System.IO.StreamReader $requestStream + $data=$read.ReadToEnd() + # Because the string contains duplicate 'ID' keys. + $results = $data.ToString().Replace("ID", "_ID") | ConvertFrom-Json + + return ($results.d.results) +} #Paths to SDK Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" @@ -63,4 +40,4 @@ $Url="https://t321.sharepoint.com/polski" -Get-AccessRequests -Username $username -Url $Url -password $AdminPassword \ No newline at end of file +Get-AccessRequests -Username $username -Url $Url -password $AdminPassword From 3f470988f7facfcb869b67d7a4a380fa6a196fe0 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:11:52 +0100 Subject: [PATCH 032/312] Update description.md --- .../description.md | 49 +++++++------------ 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/Site Management/Get SharePoint Online Site Properties/description.md b/Site Management/Get SharePoint Online Site Properties/description.md index 9db73c75..6cc233b4 100644 --- a/Site Management/Get SharePoint Online Site Properties/description.md +++ b/Site Management/Get SharePoint Online Site Properties/description.md @@ -1,26 +1,18 @@ The script retrieves all properties for a Web. - - - + -Requirements - - +## *Requirements* The following script requires: -SharePoint Online SDK +[SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) - +## *How to use?* - - -How to use? - -1. Open the following location: +**1.** Open the following location: -"c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\" +```"c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\"``` If the location exists and you can see @@ -30,34 +22,27 @@ Microsoft.SharePoint.Client.Runtime.dll Skip the next step and go to Step 3. - - -2. If the dlls are not in this location, find them, open the file with the script and correct the following paths to the locations on your computer: +**2.** If the dlls are not in this location, find them, open the file with the script and correct the following paths to the locations on your computer: - - -PowerShell +```PowerShell Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` - -3. Enter the credentials. You will be asked for password during the script's execution: - - +**3.** Enter the credentials. You will be asked for password during the script's execution: -PowerShell +```PowerShell $Username="t@trial345.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $SiteUrl="https://trial345.sharepoint.com/sites/teamsitewithlibraries" - 4. Open Powershell as Administrator. Run the script. If execution of the scripts is forbidden, you can use the cmdlet: +``` + +**4.** Open Powershell as Administrator. Run the script. If execution of the scripts is forbidden, you can use the cmdlet: -PowerShell +```PowerShell Set-ExecutionPolicy remotesigned - -5. The results will display in a 2-column table as in the screenshot above. +``` - - - +**5.** The results will display in a 2-column table as in the screenshot above. The script works for one site collection only. If you want to get properties of more sites, please check other Technet Gallery scripts. From 4e6be24ee17de7edac8b854c6d4aa6d6bfcf332c Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:12:44 +0100 Subject: [PATCH 033/312] Update GetSiteProperties.ps1 --- .../GetSiteProperties.ps1 | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/Site Management/Get SharePoint Online Site Properties/GetSiteProperties.ps1 b/Site Management/Get SharePoint Online Site Properties/GetSiteProperties.ps1 index 11f671d4..4d5eac4f 100644 --- a/Site Management/Get SharePoint Online Site Properties/GetSiteProperties.ps1 +++ b/Site Management/Get SharePoint Online Site Properties/GetSiteProperties.ps1 @@ -1,29 +1,25 @@ -function Get-SPOSiteProperties -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOSiteProperties{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url - ) - -# Connect and load all prerequisites - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials ($Username, $AdminPassword) - $ctx.ExecuteQuery() - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.AllProperties) - $ctx.ExecuteQuery() + ) - foreach ($ap in $ctx.Web.AllProperties.FieldValues) - { - Write-Output $ap - } + # Connect and load all prerequisites + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials ($Username, $AdminPassword) + $ctx.ExecuteQuery() + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.AllProperties) + $ctx.ExecuteQuery() - } + foreach ($ap in $ctx.Web.AllProperties.FieldValues){ + Write-Output $ap + } +} @@ -39,4 +35,4 @@ $SiteUrl="https://trial345.sharepoint.com/sites/teamsitewithlibraries" - Get-SPOSiteProperties -Username $Username -AdminPassword $AdminPassword -Url $SiteUrl \ No newline at end of file + Get-SPOSiteProperties -Username $Username -AdminPassword $AdminPassword -Url $SiteUrl From 4bcf2ee749b3a319c59a031afc46cf2d02cda9be Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:14:03 +0100 Subject: [PATCH 034/312] Update description.md --- .../description.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/description.md b/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/description.md index dbaefaac..26c441f7 100644 --- a/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/description.md +++ b/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/description.md @@ -6,29 +6,25 @@ In order to use the script, download, open the file and enter the admin's userna -PowerShell +```PowerShell #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="administrator" $Url="http://dva" - + ``` You do not need to enter the password. You will be prompted for it during script's execution. Sample result: - - - - - + You can also check out articles on Access Requests settings and how to manage them not only with REST, but also CSOM and User Interface: -Managing SharePoint Online Access Requests using Powershell +[Managing SharePoint Online Access Requests using Powershell](https://social.technet.microsoft.com/wiki/contents/articles/31157.manage-sharepoint-online-access-requests-using-powershell.aspx) - SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM +[SharePoint 2013/2016: Approve or decline Access Requests using Powershell and CSOM](https://social.technet.microsoft.com/wiki/contents/articles/37401.sharepoint-online-approve-or-decline-access-requests-using-powershell-and-csom.aspx) From 62a9ebb00a9db021e7fa9cc44c58c2791fd498aa Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:14:44 +0100 Subject: [PATCH 035/312] Update GetSPServerAccessRequestsItemsWithREST.ps1 --- ...GetSPServerAccessRequestsItemsWithREST.ps1 | 71 +++++++------------ 1 file changed, 24 insertions(+), 47 deletions(-) diff --git a/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/GetSPServerAccessRequestsItemsWithREST.ps1 b/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/GetSPServerAccessRequestsItemsWithREST.ps1 index 2611bf24..22bc9f81 100644 --- a/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/GetSPServerAccessRequestsItemsWithREST.ps1 +++ b/Site Management/Get SharePoint Server 2013-2016 Access Requests with REST API/GetSPServerAccessRequestsItemsWithREST.ps1 @@ -1,60 +1,37 @@ -function Get-AccessRequests -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-AccessRequests{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $password, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string] $url - ) + ) - $Credentials = New-Object System.Net.NetworkCredential($Username, $password) - # $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')/items" + $Credentials = New-Object System.Net.NetworkCredential($Username, $password) + # $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $RestUrl=$url+"/_api/web/lists/getbytitle('Access Requests')/items" + $request = [System.Net.WebRequest]::Create($RESTUrl) + $request.Credentials = $Credentials + $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") + $request.Accept = "application/json;odata=verbose" + [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get + $request.Method=$Method + $response = $request.GetResponse() + $requestStream = $response.GetResponseStream() + $read = New-Object System.IO.StreamReader $requestStream + $data=$read.ReadToEnd() + # Because the string contains duplicate 'ID' keys. + $results = $data.ToString().Replace("ID", "_ID") | ConvertFrom-Json - - $request = [System.Net.WebRequest]::Create($RESTUrl) - $request.Credentials = $Credentials - $request.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f") - $request.Accept = "application/json;odata=verbose" - [Microsoft.PowerShell.Commands.WebRequestMethod]$Method = [Microsoft.PowerShell.Commands.WebRequestMethod]::Get - $request.Method=$Method - $response = $request.GetResponse() - $requestStream = $response.GetResponseStream() - $read = New-Object System.IO.StreamReader $requestStream - $data=$read.ReadToEnd() - # Because the string contains duplicate 'ID' keys. - $results = $data.ToString().Replace("ID", "_ID") | ConvertFrom-Json + return ($results.d.results) +} - - - return ($results.d.results) - - - - - - - - - } - - - - - - - - #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="administrator" $Url="http://dva" - - - -Get-AccessRequests -Username $username -Url $Url -password $AdminPassword \ No newline at end of file +Get-AccessRequests -Username $username -Url $Url -password $AdminPassword From 38fdc078e035ac16b18d4ded134b883f20481919 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:19:51 +0100 Subject: [PATCH 036/312] Update description.md --- .../description.md | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/Site Management/Get all site collections and their subsites/description.md b/Site Management/Get all site collections and their subsites/description.md index 91e0d731..a06c4746 100644 --- a/Site Management/Get all site collections and their subsites/description.md +++ b/Site Management/Get all site collections and their subsites/description.md @@ -6,16 +6,6 @@ If you run it in ISE you can easily copy-paste the results and search through th Does not require any modifications, just open the script in any Powershell and run. It will ask you TWICE for credentials. Just follow the prompts: - - - - - - - - - - - + -Enjoy and please share your feedback!! +**and please share your feedback!!** From fe16765d6ff6ff70293d05ae13e3cb7da486b4f7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:20:32 +0100 Subject: [PATCH 037/312] Update description.md --- .../Get all site collections and their subsites/description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Site Management/Get all site collections and their subsites/description.md b/Site Management/Get all site collections and their subsites/description.md index a06c4746..5ed7bc03 100644 --- a/Site Management/Get all site collections and their subsites/description.md +++ b/Site Management/Get all site collections and their subsites/description.md @@ -8,4 +8,4 @@ Does not require any modifications, just open the script in any Powershell and r -**and please share your feedback!!** +**Enjoy and please share your feedback!!** From 0d9b40a0cf97fd3147ebdb1415e1cc7bad12846b Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:21:29 +0100 Subject: [PATCH 038/312] Update GetAllSiteandSubsitesRecursive.ps1 --- .../GetAllSiteandSubsitesRecursive.ps1 | 55 ++++++++----------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/Site Management/Get all site collections and their subsites/GetAllSiteandSubsitesRecursive.ps1 b/Site Management/Get all site collections and their subsites/GetAllSiteandSubsitesRecursive.ps1 index 4007b4bc..fdb19a2d 100644 --- a/Site Management/Get all site collections and their subsites/GetAllSiteandSubsitesRecursive.ps1 +++ b/Site Management/Get all site collections and their subsites/GetAllSiteandSubsitesRecursive.ps1 @@ -1,31 +1,27 @@ -function Get-SPOAllWeb -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOAllWeb{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url - ) - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.Load($ctx.Web.Webs) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - - Write-Host $ctx.Web.Url - if($ctx.Web.Webs.Count -eq 0) - { - - } - else{ - foreach ($web in $ctx.Web.Webs) - { - Get-SPOAllWeb -Username $Username -AdminPassword $AdminPassword -Url $web.Url - }} - + ) + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.Load($ctx.Web.Webs) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + + Write-Host $ctx.Web.Url + + if($ctx.Web.Webs.Count -eq 0){} + else{ + foreach ($web in $ctx.Web.Webs){ + Get-SPOAllWeb -Username $Username -AdminPassword $AdminPassword -Url $web.Url + } + } } $passie=Read-Host -Prompt "Password" -AsSecureString @@ -34,15 +30,8 @@ $adminUserName=Read-Host -Prompt "Admin username" Connect-SPOService -Url $adminUrelek -Credential $adminUserName $sites=(Get-SPOSite -Limit All).Url - - -foreach($url in $sites) -{ - - Get-SPOAllWeb -Username $adminUserName -AdminPassword $passie -Url $url - - - +foreach($url in $sites){ + Get-SPOAllWeb -Username $adminUserName -AdminPassword $passie -Url $url } From 95789a8e1e00742d10b890aba8a381903ef7593a Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:22:46 +0100 Subject: [PATCH 039/312] Update description.md --- .../Get all time zones from a site/description.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Site Management/Get all time zones from a site/description.md b/Site Management/Get all time zones from a site/description.md index e069c3d6..4c45c48b 100644 --- a/Site Management/Get all time zones from a site/description.md +++ b/Site Management/Get all time zones from a site/description.md @@ -1,10 +1,5 @@ Short script to retrieve all time zones from a single site in Sharepoint Online. It does not change any settings, it just lists out possible options. - - - - - The script requires the following libraries. Please make sure the paths refer correct files on you machine: @@ -23,6 +18,6 @@ $url="https://tenant-my.sharepoint.com/personal/user_tenant_onmicrosoft_com" ``` -Expected results: +## *Expected results:* 39 (UTC-12:00) International Date Line West95 (UTC-11:00) Coordinated Universal Time-1115 (UTC-10:00) Hawaii14 (UTC-09:00) Alaska78 (UTC-08:00) Baja California13 (UTC-08:00) Pacific Time (US and Canada)38 (UTC-07:00) Arizona77 (UTC-07:00) Chihuahua, La Paz, Mazatlan12 (UTC-07:00) Mountain Time (US and Canada)55 (UTC-06:00) Central America11 (UTC-06:00) Central Time (US and Canada)37 (UTC-06:00) Guadalajara, Mexico City, Monterrey36 (UTC-06:00) Saskatchewan35 (UTC-05:00) Bogota, Lima, Quito10 (UTC-05:00) Eastern Time (US and Canada)34 (UTC-05:00) Indiana (East)88 (UTC-04:30) Caracas91 (UTC-04:00) Asuncion9 (UTC-04:00) Atlantic Time (Canada)81 (UTC-04:00) Cuiaba33 (UTC-04:00) Georgetown, La Paz, Manaus, San Juan28 (UTC-03:30) Newfoundland8 (UTC-03:00) Brasilia85 (UTC-03:00) Buenos Aires32 (UTC-03:00) Cayenne, Fortaleza60 (UTC-03:00) Greenland90 (UTC-03:00) Montevideo103 (UTC-03:00) Salvador65 (UTC-03:00) Santiago96 (UTC-02:00) Coordinated Universal Time-0230 (UTC-02:00) Mid-Atlantic29 (UTC-01:00) Azores53 (UTC-01:00) Cabo Verde86 (UTC) Casablanca93 (UTC) Coordinated Universal Time2 (UTC) Dublin, Edinburgh, Lisbon, London31 (UTC) Monrovia, Reykjavik4 (UTC+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna6 (UTC+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague3 (UTC+01:00) Brussels, Copenhagen, Madrid, Paris57 (UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb69 (UTC+01:00) West Central Africa83 (UTC+01:00) Windhoek79 (UTC+02:00) Amman5 (UTC+02:00) Athens, Bucharest, Istanbul80 (UTC+02:00) Beirut49 (UTC+02:00) Cairo98 (UTC+02:00) Damascus50 (UTC+02:00) Harare, Pretoria59 (UTC+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius101 (UTC+02:00) Istanbul27 (UTC+02:00) Jerusalem7 (UTC+02:00) Minsk (old)104 (UTC+02:00) E. Europe100 (UTC+02:00) Kaliningrad (RTZ 1)26 (UTC+03:00) Baghdad74 (UTC+03:00) Kuwait, Riyadh109 (UTC+03:00) Minsk51 (UTC+03:00) Moscow, St. Petersburg, Volgograd (RTZ 2)56 (UTC+03:00) Nairobi25 (UTC+03:30) Tehran24 (UTC+04:00) Abu Dhabi, Muscat54 (UTC+04:00) Baku106 (UTC+04:00) Izhevsk, Samara (RTZ 3)89 (UTC+04:00) Port Louis82 (UTC+04:00) Tbilisi84 (UTC+04:00) Yerevan48 (UTC+04:30) Kabul58 (UTC+05:00) Ekaterinburg (RTZ 4)87 (UTC+05:00) Islamabad, Karachi47 (UTC+05:00) Tashkent23 (UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi66 (UTC+05:30) Sri Jayawardenepura62 (UTC+05:45) Kathmandu71 (UTC+06:00) Astana102 (UTC+06:00) Dhaka46 (UTC+06:00) Novosibirsk (RTZ 5)61 (UTC+06:30) Yangon (Rangoon)22 (UTC+07:00) Bangkok, Hanoi, Jakarta64 (UTC+07:00) Krasnoyarsk (RTZ 6)45 (UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi63 (UTC+08:00) Irkutsk (RTZ 7)21 (UTC+08:00) Kuala Lumpur, Singapore73 (UTC+08:00) Perth75 (UTC+08:00) Taipei94 (UTC+08:00) Ulaanbaatar20 (UTC+09:00) Osaka, Sapporo, Tokyo72 (UTC+09:00) Seoul70 (UTC+09:00) Yakutsk (RTZ 8)19 (UTC+09:30) Adelaide44 (UTC+09:30) Darwin18 (UTC+10:00) Brisbane76 (UTC+10:00) Canberra, Melbourne, Sydney43 (UTC+10:00) Guam, Port Moresby42 (UTC+10:00) Hobart99 (UTC+10:00) Magadan68 (UTC+10:00) Vladivostok, Magadan (RTZ 9)107 (UTC+11:00) Chokurdakh (RTZ 10)41 (UTC+11:00) Solomon Is., New Caledonia108 (UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky (RTZ 11)17 (UTC+12:00) Auckland, Wellington97 (UTC+12:00) Coordinated Universal Time+1240 (UTC+12:00) Fiji92 (UTC+12:00) Petropavlovsk-Kamchatsky - Old67 (UTC+13:00) Nuku'alofa16 (UTC+13:00) Samoa From 9a8259dfae1a3e9e3fd1d5697ec3a9aed1487dc3 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:23:31 +0100 Subject: [PATCH 040/312] Update GetAllTimeZones.ps1 --- .../GetAllTimeZones.ps1 | 42 +++++++------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/Site Management/Get all time zones from a site/GetAllTimeZones.ps1 b/Site Management/Get all time zones from a site/GetAllTimeZones.ps1 index f2b3790e..cd90f321 100644 --- a/Site Management/Get all time zones from a site/GetAllTimeZones.ps1 +++ b/Site Management/Get all time zones from a site/GetAllTimeZones.ps1 @@ -1,38 +1,28 @@  -function Get-SPOUSerTimeZones -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOUSerTimeZones{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.RegionalSettings.TimeZone) - $ctx.Load($ctx.Web.RegionalSettings.TimeZones) - $ctx.ExecuteQuery() - - foreach($timezone in $ctx.Web.RegionalSettings.TimeZones) - { - Write-Host $timezone.ID $timezone.Description - } + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.RegionalSettings.TimeZone) + $ctx.Load($ctx.Web.RegionalSettings.TimeZones) + $ctx.ExecuteQuery() - - } - - - + foreach($timezone in $ctx.Web.RegionalSettings.TimeZones){ + Write-Host $timezone.ID $timezone.Description + } +} # Paths to SDK. Please verify location on your computer. #Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" From 96e5eb96f6744ba6d05a370cbc81054e6cf41ef4 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:26:34 +0100 Subject: [PATCH 041/312] Update description.md --- .../description.md | 76 ++++++------------- 1 file changed, 22 insertions(+), 54 deletions(-) diff --git a/Site Management/Get-SPOWeb to retrieve subsites and their properties/description.md b/Site Management/Get-SPOWeb to retrieve subsites and their properties/description.md index 8bd88fb8..77d8bbaf 100644 --- a/Site Management/Get-SPOWeb to retrieve subsites and their properties/description.md +++ b/Site Management/Get-SPOWeb to retrieve subsites and their properties/description.md @@ -1,98 +1,66 @@ -The cmdlet Get-SPOWeb retrieves subsites and their properties +The cmdlet **Get-SPOWeb** retrieves subsites and their properties - - -Parameters +## Parameters The cmdlet is using the following parameters: - [string]$Username +- [string]$Username + The string specifies admin of the site -[string]$Url +- [string]$Url + Specifies the url of the parent site -[string]$AdminPassword, +- [string]$AdminPassword, + Admin's password -[bool]$IncludeSubsites=$false -Specifies whether the sub-subsites and subs-subsubsites should be included as well. By default set to $false. +- [bool]$IncludeSubsites=$false - +Specifies whether the sub-subsites and subs-subsubsites should be included as well. By default set to $false. -Examples +## Examples - +- Get the subsites and their properties -Get the subsites and their properties Get-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -AdminPassword Pass -Url https://trialtrial123.sharepoint.com + +- Get the subsites and the sub-subsites - - - - - - - - -Get the subsites and the sub-subsites Get-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -AdminPassword Pass -Url https://trialtrial123.sharepoint.com -IncludeSubsites $true | select url - + +- Get properties of a site in the site collection - - - - - -Get properties of a site in the site collection Get-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -AdminPassword Pass -Url https://trialtrial123.sharepoint.com -IncludeSubsites $true | where {$_.Title -eq "SomeTitle"} - - - + - - - +- Get all sites in a site collecton based on some criteria - - -Get all sites in a site collecton based on some criteria Get-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -AdminPassword Pass -Url https://trialtrial123.sharepoint.com -IncludeSubsites $true | where {$_.Language -eq 1033} | select url - - - - - - - - - - - +

Requirements

- - The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - + ``` -Let me know about your experience in the Q&A section! +### Let me know about your experience in the Q&A section! From a9d31f3af39dd8ee4f957fed7d833f8b792f8ec7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:27:43 +0100 Subject: [PATCH 042/312] Update GetSPOWebModule.psm1 --- .../GetSPOWebModule.psm1 | 104 ++++++++---------- 1 file changed, 45 insertions(+), 59 deletions(-) diff --git a/Site Management/Get-SPOWeb to retrieve subsites and their properties/GetSPOWebModule.psm1 b/Site Management/Get-SPOWeb to retrieve subsites and their properties/GetSPOWebModule.psm1 index 4343f853..d3a58b79 100644 --- a/Site Management/Get-SPOWeb to retrieve subsites and their properties/GetSPOWebModule.psm1 +++ b/Site Management/Get-SPOWeb to retrieve subsites and their properties/GetSPOWebModule.psm1 @@ -1,71 +1,57 @@ -function Get-SPOWeb -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOWeb{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword, - [Parameter(Mandatory=$false,Position=4)] + [Parameter(Mandatory=$false,Position=4)] [bool]$IncludeSubsites=$false - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++) - { - $obj = new-Object PSOBject - $obj | Add-Member NoteProperty AllowRSSFeeds($ctx.Web.Webs[$i].AllowRssFeeds) - $obj | Add-Member NoteProperty Created($ctx.Web.Webs[$i].Created) - $obj | Add-Member NoteProperty CustomMasterUrl($ctx.Web.Webs[$i].CustomMasterUrl) - $obj | Add-Member NoteProperty Description($ctx.Web.Webs[$i].Description) - $obj | Add-Member NoteProperty EnableMinimalDownload($ctx.Web.Webs[$i].EnableMinimalDownload) - $obj | Add-Member NoteProperty ID($ctx.Web.Webs[$i].Id) - $obj | Add-Member NoteProperty Language($ctx.Web.Webs[$i].Language) - $obj | Add-Member NoteProperty LastItemModifiedDate($ctx.Web.Webs[$i].LastItemModifiedDate) - $obj | Add-Member NoteProperty MasterUrl($ctx.Web.Webs[$i].MasterUrl) - $obj | Add-Member NoteProperty QuickLaunchEnabled($ctx.Web.Webs[$i].QuickLaunchEnabled) - $obj | Add-Member NoteProperty RecycleBinEnabled($ctx.Web.Webs[$i].RecycleBinEnabled) - $obj | Add-Member NoteProperty ServerRelativeUrl($ctx.Web.Webs[$i].ServerRelativeUrl) - $obj | Add-Member NoteProperty Title($ctx.Web.Webs[$i].Title) - $obj | Add-Member NoteProperty TreeViewEnabled($ctx.Web.Webs[$i].TreeViewEnabled) - $obj | Add-Member NoteProperty UIVersion($ctx.Web.Webs[$i].UIVersion) - $obj | Add-Member NoteProperty UIVersionConfigurationEnabled($ctx.Web.Webs[$i].UIVersionConfigurationEnabled) - $obj | Add-Member NoteProperty Url($ctx.Web.Webs[$i].Url) - $obj | Add-Member NoteProperty WebTemplate($ctx.Web.Webs[$i].WebTemplate) - - Write-Output $obj - } - - - -if($ctx.Web.Webs.Count -gt 0 -and $IncludeSubsites) - { - Write-Host "--"-ForegroundColor DarkGreen - for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++) - { - Get-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -IncludeSubsites $IncludeSubsites - } - } - - - - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + + for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++){ + $obj = new-Object PSOBject + $obj | Add-Member NoteProperty AllowRSSFeeds($ctx.Web.Webs[$i].AllowRssFeeds) + $obj | Add-Member NoteProperty Created($ctx.Web.Webs[$i].Created) + $obj | Add-Member NoteProperty CustomMasterUrl($ctx.Web.Webs[$i].CustomMasterUrl) + $obj | Add-Member NoteProperty Description($ctx.Web.Webs[$i].Description) + $obj | Add-Member NoteProperty EnableMinimalDownload($ctx.Web.Webs[$i].EnableMinimalDownload) + $obj | Add-Member NoteProperty ID($ctx.Web.Webs[$i].Id) + $obj | Add-Member NoteProperty Language($ctx.Web.Webs[$i].Language) + $obj | Add-Member NoteProperty LastItemModifiedDate($ctx.Web.Webs[$i].LastItemModifiedDate) + $obj | Add-Member NoteProperty MasterUrl($ctx.Web.Webs[$i].MasterUrl) + $obj | Add-Member NoteProperty QuickLaunchEnabled($ctx.Web.Webs[$i].QuickLaunchEnabled) + $obj | Add-Member NoteProperty RecycleBinEnabled($ctx.Web.Webs[$i].RecycleBinEnabled) + $obj | Add-Member NoteProperty ServerRelativeUrl($ctx.Web.Webs[$i].ServerRelativeUrl) + $obj | Add-Member NoteProperty Title($ctx.Web.Webs[$i].Title) + $obj | Add-Member NoteProperty TreeViewEnabled($ctx.Web.Webs[$i].TreeViewEnabled) + $obj | Add-Member NoteProperty UIVersion($ctx.Web.Webs[$i].UIVersion) + $obj | Add-Member NoteProperty UIVersionConfigurationEnabled($ctx.Web.Webs[$i].UIVersionConfigurationEnabled) + $obj | Add-Member NoteProperty Url($ctx.Web.Webs[$i].Url) + $obj | Add-Member NoteProperty WebTemplate($ctx.Web.Webs[$i].WebTemplate) + + Write-Output $obj + } + + if($ctx.Web.Webs.Count -gt 0 -and $IncludeSubsites){ + Write-Host "--"-ForegroundColor DarkGreen + + for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++){ + Get-SPOWeb -Username $Username -Url $ctx.Web.Webs[$i].Url -AdminPassword $AdminPassword -IncludeSubsites $IncludeSubsites + } + } } Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - - - Export-ModuleMember -Function "Get-SPOWeb" From 064a92fc3f87eb09f573085a00929530c6875804 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:31:24 +0100 Subject: [PATCH 043/312] Update description.md --- .../description.md | 105 ++++++------------ 1 file changed, 32 insertions(+), 73 deletions(-) diff --git a/Site Management/Modify Web Inherited Permissions/description.md b/Site Management/Modify Web Inherited Permissions/description.md index 5627de15..ca66c30c 100644 --- a/Site Management/Modify Web Inherited Permissions/description.md +++ b/Site Management/Modify Web Inherited Permissions/description.md @@ -1,122 +1,81 @@ Powershell Module with 2 new cmdlets: - - Remove-SPOWebInheritance Restore-SPOWebInheritance - - - - -Restore-SPOWebInheritance - - - - -Parameters +## Restore-SPOWebInheritance +--- +### Parameters The cmdlet is using the following parameters: - [string]$Username -The string specifies admin of the site - -[string]$ParentUrl -Specifies the url of the parent site - -[string]$AdminPassword, - +- [string]$Username - - - +The string specifies admin of the site - +- [string]$ParentUrl -Remove-SPOWebInheritance +Specifies the url of the parent site +- [string]$AdminPassword, -Parameters +## Remove-SPOWebInheritance +--- +##Parameters The cmdlet is using the following parameters: - [string]$Username +- [string]$Username + The string specifies admin of the site -[string]$ParentUrl -Specifies the url of the parent site +- [string]$ParentUrl -[string]$AdminPassword, -Admin's password +Specifies the url of the parent site -[bool]$CopyRoleAssignments=$true -Whether the site should keep its current permissions +- [string]$AdminPassword, - [bool]$clearSubscopes=$false - +Admin's password - +- [bool]$CopyRoleAssignments=$true -Examples +Whether the site should keep its current permissions +- [bool]$clearSubscopes=$false +--- +## Examples -Restore-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass +**Restore-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass** Site https://trialtrial123.sharepoint.com/psweb2/psweb2 inherits permissions from its parent. - - -Remove-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -CopyRoleAssignments $true - +**Remove-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -CopyRoleAssignments $true** - - - - + That gives us: - - - - - - - - - - - + But if we set the CopyRoleAssignments to $false: -Remove-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -CopyRoleAssignments $false - - - +**Remove-SPOWebInheritance -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -CopyRoleAssignments $false** + - - -Requirements - - +### *Requirements* The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! - - - - -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - -Let me know about your experience in the Q&A section! + ``` +### Let me know about your experience in the Q&A section! From 8f8078fe28d920989adea8b0d7edc83ee84c73b5 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:32:11 +0100 Subject: [PATCH 044/312] Update description.md --- .../Modify Web Inherited Permissions/description.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Site Management/Modify Web Inherited Permissions/description.md b/Site Management/Modify Web Inherited Permissions/description.md index ca66c30c..acd4659e 100644 --- a/Site Management/Modify Web Inherited Permissions/description.md +++ b/Site Management/Modify Web Inherited Permissions/description.md @@ -4,9 +4,9 @@ Remove-SPOWebInheritance Restore-SPOWebInheritance - -## Restore-SPOWebInheritance --- +## Restore-SPOWebInheritance + ### Parameters The cmdlet is using the following parameters: @@ -21,9 +21,9 @@ Specifies the url of the parent site - [string]$AdminPassword, - -## Remove-SPOWebInheritance --- +## Remove-SPOWebInheritance + ##Parameters The cmdlet is using the following parameters: From 0b34d6ed2ba310fddf8e9f5f2440d284019d6dec Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:33:20 +0100 Subject: [PATCH 045/312] Update SPOWebInheritance.psm1 --- .../SPOWebInheritance.psm1 | 100 ++++++++---------- 1 file changed, 43 insertions(+), 57 deletions(-) diff --git a/Site Management/Modify Web Inherited Permissions/SPOWebInheritance.psm1 b/Site Management/Modify Web Inherited Permissions/SPOWebInheritance.psm1 index ce2fa9f4..d546a3b6 100644 --- a/Site Management/Modify Web Inherited Permissions/SPOWebInheritance.psm1 +++ b/Site Management/Modify Web Inherited Permissions/SPOWebInheritance.psm1 @@ -1,76 +1,62 @@ -function Remove-SPOWebInheritance -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Remove-SPOWebInheritance{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword, - [Parameter(Mandatory=$false,Position=4)] + [Parameter(Mandatory=$false,Position=4)] [bool]$CopyRoleAssignments=$true, - [Parameter(Mandatory=$false,Position=5)] + [Parameter(Mandatory=$false,Position=5)] [bool]$clearSubscopes=$false - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - - try - { - $ctx.Web.BreakRoleInheritance($CopyRoleAssignments,$clearSubscopes) - $ctx.ExecuteQuery() - Write-Host "Site " $ctx.Web.Url " has unique permissions." - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + + try{ + $ctx.Web.BreakRoleInheritance($CopyRoleAssignments,$clearSubscopes) + $ctx.ExecuteQuery() + Write-Host "Site " $ctx.Web.Url " has unique permissions." + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } } -function Restore-SPOWebInheritance -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Restore-SPOWebInheritance{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - - try - { - $ctx.Web.ResetRoleInheritance() - $ctx.ExecuteQuery() - Write-Host "Site " $ctx.Web.Url " inherits permissions from its parent." - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + + try{ + $ctx.Web.ResetRoleInheritance() + $ctx.ExecuteQuery() + Write-Host "Site " $ctx.Web.Url " inherits permissions from its parent." + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } } Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - - - - Export-ModuleMember -Function "Restore-SPOWebInheritance", "Remove-SPOWebInheritance" \ No newline at end of file + Export-ModuleMember -Function "Restore-SPOWebInheritance", "Remove-SPOWebInheritance" From 4f10453523789f09dadb6de59e3c4816292f779c Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:35:47 +0100 Subject: [PATCH 046/312] Update description.md --- .../description.md | 57 ++++++++----------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/description.md b/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/description.md index 16668dbd..68abda5d 100644 --- a/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/description.md +++ b/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/description.md @@ -1,78 +1,69 @@ SharePoint Online cmdlet - - -Set-SPOWeb - - +--- +## Set-SPOWeb

Parameters

The cmdlet is using the following parameters: - [string]$Username +- [string]$Username + The string specifies admin of the site -[string]$Url +- [string]$Url + Specifies the url of the parent site -[string]$AdminPassword, +- [string]$AdminPassword, + Admin's password -[string]$Description="" +- [string]$Description="" + Optional. -[string]$EnableMinimalDownload="" +- [string]$EnableMinimalDownload="" + Optional. -[string]$QuickLaunchEnabled="" +- [string]$QuickLaunchEnabled="" + Optional -[string]$Title="" -Optional. +- [string]$Title="" -[string]$TreeViewEnabled="" Optional. - +- [string]$TreeViewEnabled="" - +Optional.

Examples

- +- Set the site description and title -Set the site description and title Set-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -Description "none" -Title "Sososos23"Description set to noneTitle set to Sososos23PS -Enable tree view for the site -Set-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -TreeViewEnabled $true +- Enable tree view for the site - +Set-SPOWeb -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -TreeViewEnabled $true +

Requirements

- - The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - - - - - - - +``` -Let me know about your experience in the Q&A section! +### Let me know about your experience in the Q&A section! From dd4d97a6aaf3a95280be394a974fd2d943850bcb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:37:05 +0100 Subject: [PATCH 047/312] Update Set-SPOWeb.psm1 --- .../Set-SPOWeb.psm1 | 129 ++++++++---------- 1 file changed, 55 insertions(+), 74 deletions(-) diff --git a/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/Set-SPOWeb.psm1 b/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/Set-SPOWeb.psm1 index d54287a9..3c49d926 100644 --- a/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/Set-SPOWeb.psm1 +++ b/Site Management/Powershell cmdlet Set-SpoWeb to manage site properties/Set-SPOWeb.psm1 @@ -1,89 +1,70 @@ -function Set-SPOWeb -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOWeb{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$AdminPassword, - [Parameter(Mandatory=$false,Position=4)] + [Parameter(Mandatory=$false,Position=4)] [string]$Description="", -[ValidateSet("True","False","", 0, 1)] -[Parameter(Mandatory=$false,Position=5)] + [ValidateSet("True","False","", 0, 1)] + [Parameter(Mandatory=$false,Position=5)] [string]$EnableMinimalDownload="", -[ValidateSet("True","False","", 0, 1)] -[Parameter(Mandatory=$false,Position=6)] + [ValidateSet("True","False","", 0, 1)] + [Parameter(Mandatory=$false,Position=6)] [string]$QuickLaunchEnabled="", -[Parameter(Mandatory=$false,Position=7)] + [Parameter(Mandatory=$false,Position=7)] [string]$Title="", -[ValidateSet("True","False","", 0, 1)] -[Parameter(Mandatory=$false,Position=8)] + [ValidateSet("True","False","", 0, 1)] + [Parameter(Mandatory=$false,Position=8)] [string]$TreeViewEnabled="" - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - - - - if($Description -ne "") - { - $ctx.Web.Description = $Description - $ctx.Web.Update() - $ctx.ExecuteQuery() - Write-Host "Description set to " $Description -ForegroundColor Green - } - - - if($EnableMinimalDownload -ne "") - { - $ctx.Web.EnableMinimalDownload = $EnableMinimalDownload - $ctx.Web.Update() - $ctx.ExecuteQuery() - Write-Host "Minimal Download set to " $EnableMinimalDownload -ForegroundColor Green - } - - if($QuickLaunchEnabled -ne "") - { - - $ctx.Web.QuickLaunchEnabled = $QuickLaunchEnabled - $ctx.Web.Update() - $ctx.ExecuteQuery() - Write-Host "Quick launch set to " $QuickLaunchEnabled -ForegroundColor Green - } - - - - - if($Title -ne "") - { - $ctx.Web.Title = $Title - $ctx.Web.Update() - $ctx.ExecuteQuery() - Write-Host "Title set to " $Title -ForegroundColor Green - } - - if($TreeViewEnabled -ne "") - { - $ctx.Web.TreeViewEnabled = $TreeViewEnabled - $ctx.Web.Update() - $ctx.ExecuteQuery() - Write-Host "Treeview set to " $TreeViewEnabled -ForegroundColor Green - } - - + ) + + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + + if($Description -ne ""){ + $ctx.Web.Description = $Description + $ctx.Web.Update() + $ctx.ExecuteQuery() + Write-Host "Description set to " $Description -ForegroundColor Green + } + + + if($EnableMinimalDownload -ne ""){ + $ctx.Web.EnableMinimalDownload = $EnableMinimalDownload + $ctx.Web.Update() + $ctx.ExecuteQuery() + Write-Host "Minimal Download set to " $EnableMinimalDownload -ForegroundColor Green + } + + if($QuickLaunchEnabled -ne ""){ + $ctx.Web.QuickLaunchEnabled = $QuickLaunchEnabled + $ctx.Web.Update() + $ctx.ExecuteQuery() + Write-Host "Quick launch set to " $QuickLaunchEnabled -ForegroundColor Green + } + + if($Title -ne ""){ + $ctx.Web.Title = $Title + $ctx.Web.Update() + $ctx.ExecuteQuery() + Write-Host "Title set to " $Title -ForegroundColor Green + } + + if($TreeViewEnabled -ne ""){ + $ctx.Web.TreeViewEnabled = $TreeViewEnabled + $ctx.Web.Update() + $ctx.ExecuteQuery() + Write-Host "Treeview set to " $TreeViewEnabled -ForegroundColor Green + } } - Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - - - Export-ModuleMember -Function "Set-SPOWeb" From 51222dd2f8a018ba3ca0c94ac062fc57c8d12c27 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:41:21 +0100 Subject: [PATCH 048/312] Update description.md --- .../description.md | 36 +++---------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/Site Management/Recycle Bin/Detailed report on all recycle bin items across all site collections/description.md b/Site Management/Recycle Bin/Detailed report on all recycle bin items across all site collections/description.md index b95849cf..39912046 100644 --- a/Site Management/Recycle Bin/Detailed report on all recycle bin items across all site collections/description.md +++ b/Site Management/Recycle Bin/Detailed report on all recycle bin items across all site collections/description.md @@ -1,57 +1,29 @@ The script loops through all site collections, their subsites and retrieves all items from the recycle bin. The items can be seen in the console window or you can create an Excel report *doesn't apply to group site collections or personal sites - - -The script is basically an extension of a more basic Retrieve all reycle bin items across all site collections script. +The script is basically an extension of a more basic [Retrieve all reycle bin items across all site collections](https://gallery.technet.microsoft.com/Retrieve-all-reycle-bin-66bcab5c) script. The script loops through all site collections, their subsites and retrieves all items from the recycle bin and restores them. The items can be seen in the console window - - - - - - - - - + or you can create an Excel report using | Export-csv -c:\users\MyUser\Desktop\whereismyfilewithdetails.ps1 | export-csv c:\users\ivo\desktop\whereismyfilewithdetails2.csv - - - - - - - - - - +```c:\users\MyUser\Desktop\whereismyfilewithdetails.ps1 | export-csv c:\users\ivo\desktop\whereismyfilewithdetails2.csv``` + - The script requires SharePoint Online Management Shell and SharePoint Online SDK: http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx http://www.microsoft.com/en-us/download/details.aspx?id=30722 - - - - Before running the script enter correct paths to the SDK and your tenant data: - - - - ```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" From 65788de33976d6f9fd9d9169e36f44b066b5a93b Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:43:24 +0100 Subject: [PATCH 049/312] Update description.md --- .../description.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/Site Management/Recycle Bin/Move items from first to second stage recycle bin/description.md b/Site Management/Recycle Bin/Move items from first to second stage recycle bin/description.md index 31b5e4f3..75587eec 100644 --- a/Site Management/Recycle Bin/Move items from first to second stage recycle bin/description.md +++ b/Site Management/Recycle Bin/Move items from first to second stage recycle bin/description.md @@ -1,27 +1,13 @@ Powershell script which moves all items from a site's recycle bin to a second stage recycle bin: - - - + After the move the items can still be restored using 'Restore Selection' button. - - - - - - - - The script requires SharePoint Online SDK installed: https://www.microsoft.com/en-us/download/details.aspx?id=42038 - - - - Before running the script, open the file and enter correct paths to the SDK and your tenant data: From 65351da4bc9f2d65f4e8b80efa76ece7c410d339 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:44:08 +0100 Subject: [PATCH 050/312] Update MovingtoSecondStage.ps1 --- .../MovingtoSecondStage.ps1 | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/Site Management/Recycle Bin/Move items from first to second stage recycle bin/MovingtoSecondStage.ps1 b/Site Management/Recycle Bin/Move items from first to second stage recycle bin/MovingtoSecondStage.ps1 index 3eb7fa9a..c631b7a7 100644 --- a/Site Management/Recycle Bin/Move items from first to second stage recycle bin/MovingtoSecondStage.ps1 +++ b/Site Management/Recycle Bin/Move items from first to second stage recycle bin/MovingtoSecondStage.ps1 @@ -1,38 +1,36 @@ # The following script moves all items from a site collection and the specified subsite into second-stage recycle bin. -function Move-ToSecondStage -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Move-ToSecondStage{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) -# $ctx.Load($ctx.Site) - $rb=$ctx.Web.RecycleBin -# $siteRB=$ctx.Site.RecycleBin -$ctx.Load($rb) -#$ctx.load($siteRB) -$ctx.ExecuteQuery() -Write-Host $ctx.Web.Url " has " $rb.Count.ToString() " items in the recycle bin" -#Write-Host $ctx.Site.Url " has " $SiteRB.Count.ToString() " items in the recycle bin" - -Write-Host "Moving items to the second stage recycle bin..." -#$siteRB.MoveAllToSecondStage() -$rb.MoveAllToSecondStage() - -$ctx.ExecuteQuery() - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + # $ctx.Load($ctx.Site) + $rb=$ctx.Web.RecycleBin + # $siteRB=$ctx.Site.RecycleBin + $ctx.Load($rb) + #$ctx.load($siteRB) + $ctx.ExecuteQuery() + Write-Host $ctx.Web.Url " has " $rb.Count.ToString() " items in the recycle bin" + #Write-Host $ctx.Site.Url " has " $SiteRB.Count.ToString() " items in the recycle bin" + + Write-Host "Moving items to the second stage recycle bin..." + #$siteRB.MoveAllToSecondStage() + $rb.MoveAllToSecondStage() + + $ctx.ExecuteQuery() } From bf476f96c290231a7b0b136554d06920262be20d Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:45:39 +0100 Subject: [PATCH 051/312] Update RemovingSecondStage.ps1 --- .../RemovingSecondStage.ps1 | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/Site Management/Recycle Bin/Remove all items from second stage recycle bin (involves data loss)/RemovingSecondStage.ps1 b/Site Management/Recycle Bin/Remove all items from second stage recycle bin (involves data loss)/RemovingSecondStage.ps1 index 217f1b07..80fdecfe 100644 --- a/Site Management/Recycle Bin/Remove all items from second stage recycle bin (involves data loss)/RemovingSecondStage.ps1 +++ b/Site Management/Recycle Bin/Remove all items from second stage recycle bin (involves data loss)/RemovingSecondStage.ps1 @@ -1,36 +1,34 @@ # The following script permanently removes all items from a site collection second-stage recycle bin. # The items cannot be retrieved afterwards with Powershell, User Interface, or any programmatic way. -function Remove-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Remove-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Site) - $rb=$ctx.Web.RecycleBin - $siteRB=$ctx.Site.RecycleBin -$ctx.Load($rb) -$ctx.load($siteRB) -$ctx.ExecuteQuery() -Write-Host $ctx.Web.Url " has " $rb.Count.ToString() " items in the recycle bin" -Write-Host $ctx.Site.Url " has " $SiteRB.Count.ToString() " items in the recycle bin" - -Write-Host "Removing second stage items..." -$siteRB.DeleteAllSecondStageItems() -$ctx.ExecuteQuery() - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Site) + $rb=$ctx.Web.RecycleBin + $siteRB=$ctx.Site.RecycleBin + $ctx.Load($rb) + $ctx.load($siteRB) + $ctx.ExecuteQuery() + Write-Host $ctx.Web.Url " has " $rb.Count.ToString() " items in the recycle bin" + Write-Host $ctx.Site.Url " has " $SiteRB.Count.ToString() " items in the recycle bin" + + Write-Host "Removing second stage items..." + $siteRB.DeleteAllSecondStageItems() + $ctx.ExecuteQuery() } From f44601df67fd8037d2384e712b9509084a29f690 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:46:39 +0100 Subject: [PATCH 052/312] Update description.md --- .../description.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/description.md b/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/description.md index 68f74faf..27b37316 100644 --- a/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/description.md +++ b/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/description.md @@ -1,12 +1,8 @@ The script removes permanently and irrevocably items from the specified site recycle bin and its corresponding site collection recycle bin. The data cannot be retrieved afterwards. Test the script before using on production environment. - - - - -PowerShell +```PowerShell $ctx.Load($ctx.Web) $ctx.Load($ctx.Site) $rb=$ctx.Web.RecycleBin @@ -22,19 +18,12 @@ $siteRB.DeleteAll() $siteRB.DeleteAllSecondStageItems() $ctx.ExecuteQuery() - - - - + ``` The script requires SharePoint Online SDK installed: https://www.microsoft.com/en-us/download/details.aspx?id=42038 - - - - Before running the script, open the file and enter correct paths to the SDK and your tenant data: From 740dd19a5cf56079466a27e2da5e8710edfd019f Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:47:13 +0100 Subject: [PATCH 053/312] Update DeleteAll.ps1 --- .../DeleteAll.ps1 | 54 +++++++++---------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/DeleteAll.ps1 b/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/DeleteAll.ps1 index 158874cc..887c8a69 100644 --- a/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/DeleteAll.ps1 +++ b/Site Management/Recycle Bin/Remove permanently all items from recycle bins (data loss involved)/DeleteAll.ps1 @@ -7,38 +7,36 @@ its corresponding site collection recycle bin. The data cannot be retrieved afte Test the script before using on production environment. #> -function Remove-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Remove-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Site) - $rb=$ctx.Web.RecycleBin - $siteRB=$ctx.Site.RecycleBin -$ctx.Load($rb) -$ctx.load($siteRB) -$ctx.ExecuteQuery() -Write-Host $ctx.Web.Url $rb.Count.ToString() -Write-Host $ctx.Site.Url $SiteRB.Count.ToString() - -$rb.DeleteAll() -$siteRB.DeleteAll() -$siteRB.DeleteAllSecondStageItems() - -$ctx.ExecuteQuery() - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Site) + $rb=$ctx.Web.RecycleBin + $siteRB=$ctx.Site.RecycleBin + $ctx.Load($rb) + $ctx.load($siteRB) + $ctx.ExecuteQuery() + Write-Host $ctx.Web.Url $rb.Count.ToString() + Write-Host $ctx.Site.Url $SiteRB.Count.ToString() + + $rb.DeleteAll() + $siteRB.DeleteAll() + $siteRB.DeleteAllSecondStageItems() + + $ctx.ExecuteQuery() } From 49e0c8bf39b1085b99756f16fdc5a7044ebf1be7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:53:40 +0100 Subject: [PATCH 054/312] Update description.md --- .../description.md | 28 +++++-------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/Site Management/Recycle Bin/Report on all deleted items across all site collections/description.md b/Site Management/Recycle Bin/Report on all deleted items across all site collections/description.md index 6817e5bd..5ee9b259 100644 --- a/Site Management/Recycle Bin/Report on all deleted items across all site collections/description.md +++ b/Site Management/Recycle Bin/Report on all deleted items across all site collections/description.md @@ -1,40 +1,26 @@ The script loops through all site collections recycle bins and prints out the deleted items details or creates an Excel report on them -* doesn't apply to group site collections or personal sites +* doesn't apply to group site collections or personal sites - - -The script is basically an extension of a more basic Retrieve all reycle bin items across all site collections script, but it does NOT restore the items. +The script is basically an extension of a more basic [Retrieve all reycle bin items across all site collections](https://gallery.technet.microsoft.com/Retrieve-all-reycle-bin-66bcab5c) script, but it does NOT restore the items. The script loops through all site collections, their subsites and retrieves all items from the recycle bin. The items can be seen in the console window - + or you can create an Excel report using | Export-csv c:\users\MyUser\Desktop\whereismyfilewithdetails3.ps1 | export-csv c:\users\ivo\desktop\whereismyfilewithdetails2.csv - - + - - - - -The script requires SharePoint Online Management Shell and SharePoint Online SDK - - - - +The script requires [SharePoint Online Management Shell](https://docs.microsoft.com/en-us/powershell/sharepoint/sharepoint-online/connect-sharepoint-online?view=sharepoint-ps&redirectedfrom=MSDN) and [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) Before running the script enter correct paths to the SDK and your tenant data: - - - -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -43,5 +29,5 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="user@tenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://tenant-admin.sharepoint.com" - + ``` From ebba3695f871d81b4aa3b0df745816182debc5f7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:54:51 +0100 Subject: [PATCH 055/312] Update WhereIsMyFileWithDetails3.ps1 --- .../WhereIsMyFileWithDetails3.ps1 | 98 ++++++++----------- 1 file changed, 40 insertions(+), 58 deletions(-) diff --git a/Site Management/Recycle Bin/Report on all deleted items across all site collections/WhereIsMyFileWithDetails3.ps1 b/Site Management/Recycle Bin/Report on all deleted items across all site collections/WhereIsMyFileWithDetails3.ps1 index bc4374f1..0e8291a9 100644 --- a/Site Management/Recycle Bin/Report on all deleted items across all site collections/WhereIsMyFileWithDetails3.ps1 +++ b/Site Management/Recycle Bin/Report on all deleted items across all site collections/WhereIsMyFileWithDetails3.ps1 @@ -1,60 +1,45 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ -$ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) - $ctx.Load($ctx.Web.Webs) - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -try -{ -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url $rb.Count.ToString() -} catch [Net.WebException] - { - - Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red - -} - -for($i=0;$i -lt $rb.Count ;$i++) -{ - - $ctx.Load($rb[$i].Author) - $ctx.Load($rb[$i].DeletedBy) - $ctx.ExecuteQuery() - $obj = $rb[$i] - $obj | Add-Member NoteProperty AuthorLoginName($rb[$i].Author.LoginName) - $obj | Add-Member NoteProperty DeletedByLoginName($rb[$i].DeletedBy.LoginName) - Write-Output $obj - - -} - - - - - - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $ctx.Load($ctx.Web.Webs) + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + + try{ + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url $rb.Count.ToString() + } + catch [Net.WebException] { + Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red + } + + for($i=0;$i -lt $rb.Count ;$i++){ + $ctx.Load($rb[$i].Author) + $ctx.Load($rb[$i].DeletedBy) + $ctx.ExecuteQuery() + $obj = $rb[$i] + $obj | Add-Member NoteProperty AuthorLoginName($rb[$i].Author.LoginName) + $obj | Add-Member NoteProperty DeletedByLoginName($rb[$i].DeletedBy.LoginName) + Write-Output $obj + } } @@ -71,11 +56,8 @@ $AdminUrl="https://tenant-admin.sharepoint.com" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site } From ea08afa7d2eef0aa03be8aa80554209a672c8ba4 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:57:03 +0100 Subject: [PATCH 056/312] Update description.md --- .../description.md | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/Site Management/Recycle Bin/Report on deleted files within one site/description.md b/Site Management/Recycle Bin/Report on deleted files within one site/description.md index 747e744e..23d56957 100644 --- a/Site Management/Recycle Bin/Report on deleted files within one site/description.md +++ b/Site Management/Recycle Bin/Report on deleted files within one site/description.md @@ -2,27 +2,13 @@ Powershell script that lists all files and items deleted from a single site and Powershell script that lists all files and items deleted from a single site and present in the recycle bin of that site. - - -Works with group sites! - - +**Works with group sites!** - - - +The script requires [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: - +(usually if not, they will be under **16**\ISAPI\) - - -The script requires SharePoint Online SDK. After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: - -(usually if not, they will be under 16\ISAPI\) - - - -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -31,7 +17,7 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="2190@sampletenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://sampletenant.sharepoint.com/sites/dgd" - +``` Insert the credentials before running the script. @@ -40,7 +26,7 @@ Insert the credentials before running the script. You can either view the deleted files in the Powershell console or enter: -PathToTheFile\ReportOnDeleted.ps1| export-csv c:\users\MyUSer\CSVReport.csv +**PathToTheFile\ReportOnDeleted.ps1| export-csv c:\users\MyUSer\CSVReport.csv** From 4920a65e3a553158caf97a8a1275b611854a42fd Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:57:47 +0100 Subject: [PATCH 057/312] Update ReportOnDeleted.ps1 --- .../ReportOnDeleted.ps1 | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/Site Management/Recycle Bin/Report on deleted files within one site/ReportOnDeleted.ps1 b/Site Management/Recycle Bin/Report on deleted files within one site/ReportOnDeleted.ps1 index c26a2789..4b42e489 100644 --- a/Site Management/Recycle Bin/Report on deleted files within one site/ReportOnDeleted.ps1 +++ b/Site Management/Recycle Bin/Report on deleted files within one site/ReportOnDeleted.ps1 @@ -1,38 +1,30 @@ -function Get-DeletedItem -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItem{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Site) - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -$ctx.ExecuteQuery() - -for($i=0;$i -lt $rb.Count ;$i++) -{ - $obj = $rb[$i] - - Write-Output $obj - - -} -#$ctx.Web.RecycleBin.RestoreAll() -$ctx.ExecuteQuery() - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + $ctx.Load($ctx.Site) + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + $ctx.ExecuteQuery() + for($i=0;$i -lt $rb.Count ;$i++){ + $obj = $rb[$i] + Write-Output $obj + } + #$ctx.Web.RecycleBin.RestoreAll() + $ctx.ExecuteQuery() } From c6f279869da10216be3651bcbd2f3f5a7a38da85 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 16:59:36 +0100 Subject: [PATCH 058/312] Update description.md --- .../description.md | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/Site Management/Recycle Bin/Restore All Files from a Given Site/description.md b/Site Management/Recycle Bin/Restore All Files from a Given Site/description.md index cfa62e88..b6bc59f7 100644 --- a/Site Management/Recycle Bin/Restore All Files from a Given Site/description.md +++ b/Site Management/Recycle Bin/Restore All Files from a Given Site/description.md @@ -1,26 +1,16 @@ Powershell script that loops through all files and items deleted from a single site and present in the recycle bin of that site. All files are restored. - - -Works with group sites! - - - - - - - - +**Works with group sites!** -The script requires SharePoint Online SDK. After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: +The script requires [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: -(usually if not, they will be under 16\ISAPI\) +(usually if not, they will be under **16**\ISAPI\) -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -29,5 +19,6 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="2190@sampletenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://sampletenant.sharepoint.com/sites/dgd" +``` Insert the credentials before running the script. From d02d1d81ab80dbffd78a25a4a81212afb79470cb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:00:01 +0100 Subject: [PATCH 059/312] Update RestoreAllDeletedGroupFiles.ps1 --- .../RestoreAllDeletedGroupFiles.ps1 | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/Site Management/Recycle Bin/Restore All Files from a Given Site/RestoreAllDeletedGroupFiles.ps1 b/Site Management/Recycle Bin/Restore All Files from a Given Site/RestoreAllDeletedGroupFiles.ps1 index 0ddd35c8..8a48455a 100644 --- a/Site Management/Recycle Bin/Restore All Files from a Given Site/RestoreAllDeletedGroupFiles.ps1 +++ b/Site Management/Recycle Bin/Restore All Files from a Given Site/RestoreAllDeletedGroupFiles.ps1 @@ -1,29 +1,24 @@ -function Restore-AllItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Restore-AllItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url $rb.Count.ToString() -$ctx.Site.RecycleBin.RestoreAll() -$ctx.ExecuteQuery() - - - - - + ) + + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url $rb.Count.ToString() + $ctx.Site.RecycleBin.RestoreAll() + $ctx.ExecuteQuery() } From c85e121f1910e3a15a352018b4dcda1d8638bdde Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:01:52 +0100 Subject: [PATCH 060/312] Update description.md --- .../description.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md index 4313daf1..8099ce77 100644 --- a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md +++ b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md @@ -16,25 +16,19 @@ More variations on the script and more options are coming so click on View Contr -The script will notify you as it loops through the sites if there are any items at all in the site collection recycle bin; if it finds items DELETED BY the specified user, it will restore them and print out their names in green. +The script will notify you as it loops through the sites if there are any items at all in the site collection recycle bin; if it finds items DELETED BY the specified user, it will restore them and print out their names **in green**. -If it runs into any troubles (e.g. it cannot access the public site and the mysite host) it will notify you about it in red - - - - - - - - +If it runs into any troubles (e.g. it cannot access the public site and the mysite host) it will notify you about it **in red** + + Before running the script you need to open the file and enter the correct the data: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -46,5 +40,5 @@ $AdminUrl="https://tenant-admin.sharepoint.com" $userupn="i:0#.f|membership|uss2@arletka.cloudns.org" $Username correponds to the global admin who has access to all the site collections you want to loop through. $userupn is the naughty employee's SharePoint loginname who deleted the items. Pay attention to the format and DO NOT remove i:0#.f|membership| part unless you are 100% sure that your SharePoint user loginname includes something else than this. - +``` From 2a60108038425e1e4f4f86cee654541b12ec8b3e Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:02:26 +0100 Subject: [PATCH 061/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md index 8099ce77..9d4430d2 100644 --- a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md +++ b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/description.md @@ -38,7 +38,7 @@ $Username="admin@tenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://tenant-admin.sharepoint.com" $userupn="i:0#.f|membership|uss2@arletka.cloudns.org" - + ``` $Username correponds to the global admin who has access to all the site collections you want to loop through. $userupn is the naughty employee's SharePoint loginname who deleted the items. Pay attention to the format and DO NOT remove i:0#.f|membership| part unless you are 100% sure that your SharePoint user loginname includes something else than this. -``` + From a63e994764aa48f7e0600c292b5d9f311e443d71 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:04:28 +0100 Subject: [PATCH 062/312] Update WhereIsMyFileWithDetails3BasedRestore.ps1 --- .../WhereIsMyFileWithDetails3BasedRestore.ps1 | 134 ++++++++---------- 1 file changed, 59 insertions(+), 75 deletions(-) diff --git a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/WhereIsMyFileWithDetails3BasedRestore.ps1 b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/WhereIsMyFileWithDetails3BasedRestore.ps1 index 2a6164b5..f6327f51 100644 --- a/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/WhereIsMyFileWithDetails3BasedRestore.ps1 +++ b/Site Management/Recycle Bin/Restore all files, items, lists deleted by a single employee/WhereIsMyFileWithDetails3BasedRestore.ps1 @@ -1,78 +1,65 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$UserUpn -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ - $ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) - $ctx.Load($ctx.Web.Webs) - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -try -{ -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url " Items in the recycle bin: " $rb.Count.ToString() -} catch [Net.WebException] - { - - Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red - -} - -$myarray=@() -for($i=0;$i -lt $rb.Count ;$i++) -{ - - $ctx.Load($rb[$i].Author) - $ctx.Load($rb[$i].DeletedBy) - $ctx.ExecuteQuery() - $obj = $rb[$i] - $obj | Add-Member NoteProperty AuthorLoginName($rb[$i].Author.LoginName) - $obj | Add-Member NoteProperty DeletedByLoginName($rb[$i].DeletedBy.LoginName) - $myarray+=$obj - -} - -Write-Host "Items to process: " $myarray.Count - -for($i=0;$i -lt $myarray.Count ; $i++){ -if($myarray[$i].DeletedByLoginName -eq $UserUpn ) -{ -$myarray[$i].Restore() -try{ -$ctx.ExecuteQuery() -Write-Host $myarray[$i].LeafName " restored" -ForegroundColor Green -} -catch [Net.WebException] -{ - Write-Host $myarray[$i].LeafName " failed" $_.Message.ToString() -ForegroundColor Red -} -} -} - - - - - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $ctx.Load($ctx.Web.Webs) + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + + try{ + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url " Items in the recycle bin: " $rb.Count.ToString() + } + catch [Net.WebException] { + Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $myarray=@() + + for($i=0;$i -lt $rb.Count ;$i++){ + $ctx.Load($rb[$i].Author) + $ctx.Load($rb[$i].DeletedBy) + $ctx.ExecuteQuery() + $obj = $rb[$i] + $obj | Add-Member NoteProperty AuthorLoginName($rb[$i].Author.LoginName) + $obj | Add-Member NoteProperty DeletedByLoginName($rb[$i].DeletedBy.LoginName) + $myarray+=$obj + } + + Write-Host "Items to process: " $myarray.Count + + for($i=0;$i -lt $myarray.Count ; $i++){ + if($myarray[$i].DeletedByLoginName -eq $UserUpn ){ + $myarray[$i].Restore() + + try{ + $ctx.ExecuteQuery() + Write-Host $myarray[$i].LeafName " restored" -ForegroundColor Green + } + catch [Net.WebException]{ + Write-Host $myarray[$i].LeafName " failed" $_.Message.ToString() -ForegroundColor Red + } + } + } } @@ -90,11 +77,8 @@ $userupn="i:0#.f|membership|uss2@arletka.cloudns.org" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -UserUpn $userupn - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site -UserUpn $userupn } From 1419513779fcfae393e41b23f393516c89104b2f Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:06:31 +0100 Subject: [PATCH 063/312] Update description.md --- .../description.md | 29 ++++--------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/description.md b/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/description.md index ab43d2a6..168fcd3a 100644 --- a/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/description.md +++ b/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/description.md @@ -1,32 +1,13 @@ The script loops across all site collections in the tenant and finds all deleted items and restores them all. - - -More variations of the script are available on Technet Gallery: https://gallery.technet.microsoft.com/office/site/search?query=recycle%20bin&f%5B1%5D.Value=recycle%20bin&f%5B1%5D.Type=SearchText&f%5B0%5D.Value=Arleta%20Wanat&f%5B0%5D.Type=User&ac=4 - - +More variations of the script are available on [Technet Gallery](https://gallery.technet.microsoft.com/office/site/search?query=recycle%20bin&f%5B1%5D.Value=recycle%20bin&f%5B1%5D.Type=SearchText&f%5B0%5D.Value=Arleta%20Wanat&f%5B0%5D.Type=User&ac=4) - +The script will notify you as it loops through the sites if there are any items at all in the site collection recycle bin; it will restore them and print out their names **in green**. - +If it runs into any troubles (e.g. duplicate items already exist and the mysite host) it will notify you about it **in red** -The script will notify you as it loops through the sites if there are any items at all in the site collection recycle bin; it will restore them and print out their names in green. - -If it runs into any troubles (e.g. duplicate items already exist and the mysite host) it will notify you about it in red - - - - - - - - - - - - - - + + Before running the script you need to open the file and enter the correct the data: From 0f440417bbb3b73bdfb7cf0cba2d510471b184fb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:07:56 +0100 Subject: [PATCH 064/312] Update RestoreAllRecycleBinItems.ps1 --- .../RestoreAllRecycleBinItems.ps1 | 119 ++++++++---------- 1 file changed, 51 insertions(+), 68 deletions(-) diff --git a/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/RestoreAllRecycleBinItems.ps1 b/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/RestoreAllRecycleBinItems.ps1 index a8b65916..9ff2317d 100644 --- a/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/RestoreAllRecycleBinItems.ps1 +++ b/Site Management/Recycle Bin/Restore all reycle bin items across all site collections/RestoreAllRecycleBinItems.ps1 @@ -1,70 +1,56 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - -try -{ -$ctx.ExecuteQuery() -} catch [Net.WebException] - { - - Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red -} - - $ctx.Load($ctx.Site) - $ctx.Load($ctx.Web.Webs) - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -try -{ -$ctx.ExecuteQuery() -Write-Host $ctx.Site.Url " Items in the recycle bin: " $rb.Count.ToString() -} catch [Net.WebException] - { - - Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red - -} - -$myarray=@() -for($i=0;$i -lt $rb.Count ;$i++) -{ - - $obj = $rb[$i] - $myarray+=$obj - -} - -Write-Host "Items to process: " $myarray.Count - -for($i=0;$i -lt $myarray.Count ; $i++){ - -$myarray[$i].Restore() -try{ -$ctx.ExecuteQuery() -Write-Host $myarray[$i].LeafName " restored" -ForegroundColor Green -} -catch [Net.WebException] -{ - Write-Host $myarray[$i].LeafName " failed" $_.Message.ToString() -ForegroundColor Red -} - -} - - - - - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + + try{ + $ctx.ExecuteQuery() + } + catch [Net.WebException] { + Write-Host $Url " failed to connect to the site" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $ctx.Load($ctx.Site) + $ctx.Load($ctx.Web.Webs) + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + + try{ + $ctx.ExecuteQuery() + Write-Host $ctx.Site.Url " Items in the recycle bin: " $rb.Count.ToString() + } + catch [Net.WebException] { + Write-Host $ctx.Site.Url " failed" $_.Exception.Message.ToString() -ForegroundColor Red + } + + $myarray=@() + + for($i=0;$i -lt $rb.Count ;$i++){ + $obj = $rb[$i] + $myarray+=$obj + } + + Write-Host "Items to process: " $myarray.Count + + for($i=0;$i -lt $myarray.Count ; $i++){ + $myarray[$i].Restore() + + try{ + $ctx.ExecuteQuery() + Write-Host $myarray[$i].LeafName " restored" -ForegroundColor Green + } + catch [Net.WebException]{ + Write-Host $myarray[$i].LeafName " failed" $_.Message.ToString() -ForegroundColor Red + } + } } @@ -81,11 +67,8 @@ $AdminUrl="https://trial765-admin.sharepoint.com" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site } From 016779af6ed165e1bfd396b4982e50868b0a94de Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:10:46 +0100 Subject: [PATCH 065/312] Update description.md --- .../description.md | 37 +++++-------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/Site Management/Recycle Bin/Restore one file from a Given Site/description.md b/Site Management/Recycle Bin/Restore one file from a Given Site/description.md index 9be6a13a..36bdfb8c 100644 --- a/Site Management/Recycle Bin/Restore one file from a Given Site/description.md +++ b/Site Management/Recycle Bin/Restore one file from a Given Site/description.md @@ -1,22 +1,12 @@ -Powershell script that restores a single file deleted and present in the recycle bin of that site. If you want to restore all files or see a report on them first, please refer to Related Scripts section. +Powershell script that restores a single file deleted and present in the recycle bin of that site. If you want to restore all files or see a report on them first, please refer to **Related Scripts** section. - - -Works with group sites! +**Works with group sites!** - - - - -The script requires SharePoint Online SDK. After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: - -(usually if not, they will be under 16\ISAPI\) - - +The script requires [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). After installing the SDK verify if the path to 2 libraries: Client.dll and Client.Runtime.dll are in the same location as below: - +(usually if not, they will be under **16**\ISAPI\) -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -25,20 +15,13 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="2190@sampletenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://sampletenant.sharepoint.com/sites/dgd" +``` Insert the credentials before running the script. - - - -Please share your thoughts in the Q&A section! +### Please share your thoughts in the Q&A section! +## Related scripts +[Create a report on deleted files within one site using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Create-a-report-on-deleted-496ce018) - - - - -Related scripts -Create a report on deleted files within one site using Powershell - -Restore All Files from a Given Site using Powershell +[Restore All Files from a Given Site using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Restore-All-Files-from-a-bc3037ac) From 6ddf1aa206eacb638c2c04007cdbc66581239ebd Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:11:34 +0100 Subject: [PATCH 066/312] Update RestoreDeletedItem.ps1 --- .../RestoreDeletedItem.ps1 | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/Site Management/Recycle Bin/Restore one file from a Given Site/RestoreDeletedItem.ps1 b/Site Management/Recycle Bin/Restore one file from a Given Site/RestoreDeletedItem.ps1 index b7dd6ede..49eabd8a 100644 --- a/Site Management/Recycle Bin/Restore one file from a Given Site/RestoreDeletedItem.ps1 +++ b/Site Management/Recycle Bin/Restore one file from a Given Site/RestoreDeletedItem.ps1 @@ -1,38 +1,29 @@ -function Restore-DeletedItem -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Restore-DeletedItem{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [GUID]$ItemGuid -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $rb=$ctx.Site.RecycleBin -$ctx.Load($rb) -$ctx.ExecuteQuery() - -$rb.GetById($ItemGuid).Restore() - -$ctx.ExecuteQuery() - - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + $ctx.Load($ctx.Web) + $rb=$ctx.Site.RecycleBin + $ctx.Load($rb) + $ctx.ExecuteQuery() + $rb.GetById($ItemGuid).Restore() + $ctx.ExecuteQuery() } - - - # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" From a3f36bdbad5b79cc7d8ebb5741ba4ebda06e2c13 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:13:41 +0100 Subject: [PATCH 067/312] Update description.md --- .../description.md | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/description.md b/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/description.md index 6eb121c9..3df93821 100644 --- a/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/description.md +++ b/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/description.md @@ -1,28 +1,18 @@ The script loops through all site collections, their subsites and retrieves all items from the recycle bin. The items can be seen in the console window or you can create an Excel report -* doesn't apply to group site collections or personal sites +* doesn't apply to group site collections or personal sites The script loops through all site collections, their subsites and retrieves all items from the recycle bin. The items can be seen in the console window - - - - - + or you can create an Excel report using | Export-csv - C:\Users\ivo\Desktop\wiki\technet\whereismyfile.ps1 | export-csv c:\users\ivo\desktop\whereismyfile.csv - - - + ```C:\Users\ivo\Desktop\wiki\technet\whereismyfile.ps1 | export-csv c:\users\ivo\desktop\whereismyfile.csv``` - - - - + The script requires SharePoint Online Management Shell and SharePoint Online SDK: @@ -32,11 +22,9 @@ http://www.microsoft.com/en-us/download/details.aspx?id=30722 - - Before running the script enter correct paths to the SDK and your tenant data: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -45,10 +33,10 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="user@tenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://tenant-admin.sharepoint.com" - +``` -Let me know about your experience in the Q&A section! +### Let me know about your experience in the Q&A section! From 286c51fc87499567e8e93c95d60306ea2a213fd8 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:14:41 +0100 Subject: [PATCH 068/312] Update WhereIsMyFile.ps1 --- .../WhereIsMyFile.ps1 | 80 ++++++++----------- 1 file changed, 35 insertions(+), 45 deletions(-) diff --git a/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/WhereIsMyFile.ps1 b/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/WhereIsMyFile.ps1 index 19ee085c..fc15178c 100644 --- a/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/WhereIsMyFile.ps1 +++ b/Site Management/Recycle Bin/Retrieve all reycle bin items across all site collections/WhereIsMyFile.ps1 @@ -1,47 +1,40 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $rb=$ctx.Web.RecycleBin -$ctx.Load($rb) -$ctx.ExecuteQuery() -Write-Host $ctx.Web.Url $rb.Count.ToString() - -for($i=0;$i -lt $rb.Count ;$i++) -{ - $obj = $rb[$i] - - Write-Output $obj - - -} -#$ctx.Web.RecycleBin.RestoreAll() -$ctx.ExecuteQuery() - - - -if($ctx.Web.Webs.Count -gt 0) - { - Write-Host "--"-ForegroundColor DarkGreen - for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++) - { - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ctx.Web.Webs[$i].Url - } - } - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $rb=$ctx.Web.RecycleBin + $ctx.Load($rb) + $ctx.ExecuteQuery() + Write-Host $ctx.Web.Url $rb.Count.ToString() + + for($i=0;$i -lt $rb.Count ;$i++){ + $obj = $rb[$i] + + Write-Output $obj + } + + #$ctx.Web.RecycleBin.RestoreAll() + $ctx.ExecuteQuery() + + if($ctx.Web.Webs.Count -gt 0){ + Write-Host "--"-ForegroundColor DarkGreen + + for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ctx.Web.Webs[$i].Url + } + } } @@ -58,11 +51,8 @@ $AdminUrl="https://tenant-admin.sharepoint.com" Connect-SPOService -Url $adminUrl $sites=(Get-SPOSite).Url -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site } From 63d0a8a944d29b21dc4d30c24b8b946551ec1ab2 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:16:49 +0100 Subject: [PATCH 069/312] Update description.md --- .../description.md | 24 ++++--------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/description.md b/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/description.md index d435aafd..baacdbc3 100644 --- a/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/description.md +++ b/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/description.md @@ -1,26 +1,14 @@ -* including the group sites - - +* including the group sites The script loops through all site collections, their subsites and retrieves all items from the recycle bin. The items can be seen in the console window - - - - - + or you can create an Excel report using | Export-csv - C:\Users\ivo\Desktop\wiki\technet\whereismyfile.ps1 | export-csv c:\users\ivo\desktop\whereismyfile.csv - - - - +``` C:\Users\ivo\Desktop\wiki\technet\whereismyfile.ps1 | export-csv c:\users\ivo\desktop\whereismyfile.csv``` - - - + The script requires SharePoint Online Management Shell and SharePoint Online SDK: @@ -28,10 +16,6 @@ http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx http://www.microsoft.com/en-us/download/details.aspx?id=30722 - - - - Before running the script enter correct paths to the SDK and your tenant data: ```PowerShell From a492c53531ab5e3b843504fcce4dcefba2a7c8f7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:17:54 +0100 Subject: [PATCH 070/312] Update WithUnifiedGroups.ps1 --- .../WithUnifiedGroups.ps1 | 89 ++++++++----------- 1 file changed, 38 insertions(+), 51 deletions(-) diff --git a/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/WithUnifiedGroups.ps1 b/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/WithUnifiedGroups.ps1 index 17253212..72cd36b3 100644 --- a/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/WithUnifiedGroups.ps1 +++ b/Site Management/Recycle Bin/Retrieve all reycle bin items across all sites incl group sites/WithUnifiedGroups.ps1 @@ -1,47 +1,40 @@ -function Get-DeletedItems -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-DeletedItems{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url -) -#$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $rb=$ctx.Web.RecycleBin -$ctx.Load($rb) -$ctx.ExecuteQuery() -Write-Host $ctx.Web.Url $rb.Count.ToString() - -for($i=0;$i -lt $rb.Count ;$i++) -{ - $obj = $rb[$i] - - Write-Output $obj - - -} -#$ctx.Web.RecycleBin.RestoreAll() -$ctx.ExecuteQuery() - - - -if($ctx.Web.Webs.Count -gt 0) - { - Write-Host "--"-ForegroundColor DarkGreen - for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++) - { - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ctx.Web.Webs[$i].Url - } - } - + ) + #$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $rb=$ctx.Web.RecycleBin + $ctx.Load($rb) + $ctx.ExecuteQuery() + Write-Host $ctx.Web.Url $rb.Count.ToString() + + for($i=0;$i -lt $rb.Count ;$i++){ + $obj = $rb[$i] + + Write-Output $obj + } + + #$ctx.Web.RecycleBin.RestoreAll() + $ctx.ExecuteQuery() + + if($ctx.Web.Webs.Count -gt 0){ + Write-Host "--"-ForegroundColor DarkGreen + + for($i=0;$i -lt $ctx.Web.Webs.Count ;$i++){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ctx.Web.Webs[$i].Url + } + } } @@ -66,16 +59,10 @@ Import-PSSession $sesja $unifiedGroups=(get-unifiedGroup).SharePointSiteUrl -foreach($site in $sites) -{ - - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site - +foreach($site in $sites){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $site } - - -foreach($ug in $unifiedGroups) -{ - Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ug -} \ No newline at end of file +foreach($ug in $unifiedGroups){ + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $ug +} From 97ebe4d2784de2e5c0ec3f6697018797b38ded10 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:18:47 +0100 Subject: [PATCH 071/312] Update Remove SPO subsite.ps1 --- .../Remove SPO subsite/Remove SPO subsite.ps1 | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/Site Management/Remove SPO subsite/Remove SPO subsite.ps1 b/Site Management/Remove SPO subsite/Remove SPO subsite.ps1 index 53869cc4..8c067f4d 100644 --- a/Site Management/Remove SPO subsite/Remove SPO subsite.ps1 +++ b/Site Management/Remove SPO subsite/Remove SPO subsite.ps1 @@ -9,38 +9,30 @@ function GetAllSubsitesAndDelete($SiteUrl) $ctx2.Load($sites2) $ctx2.ExecuteQuery() - if($sites2.Count -gt 0) - { - for($i=0;$i -lt $sites2.Count ;$i++) - { + if($sites2.Count -gt 0) { + for($i=0;$i -lt $sites2.Count ;$i++) { GetAllSubsitesAndDelete($sites2[$i].Url) } - try - { - $rootWeb2.DeleteObject() + try { + $rootWeb2.DeleteObject() $ctx2.ExecuteQuery() Write-Host "Subsite " $rootWeb2.Url " has been removed" } - catch [Net.WebException] - { + catch [Net.WebException] { Write-Host $_.Exception.ToString() } - } - else - { - try - { + } + else { + try { $rootWeb2.DeleteObject() $ctx2.ExecuteQuery() Write-Host "Subsite " $rootWeb2.Url " has been removed" } - catch [Net.WebException] - { + catch [Net.WebException] { Write-Host $_.Exception.ToString() } - } - + } } #paths to SDK (copied from Victor's comment) From 00628c8f39f1cb2f3367dc9184284ea90398b03d Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:20:12 +0100 Subject: [PATCH 072/312] Update description.md --- .../description.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Site Management/Set RequestAccessEmail for all subsites in one site collection/description.md b/Site Management/Set RequestAccessEmail for all subsites in one site collection/description.md index b28cc009..1a303fb8 100644 --- a/Site Management/Set RequestAccessEmail for all subsites in one site collection/description.md +++ b/Site Management/Set RequestAccessEmail for all subsites in one site collection/description.md @@ -1,12 +1,8 @@ Powershell script to set the email for access requests. The setting is available from SharePoint Online User Interface at: -Site Settings>Site Permissions>Access Requests Settings +**Site Settings** > **Site Permissions** > **Access Requests Settings** - - - - - + The script requires the following libraries. Please confirm that the files are in the same location on your PC. From 2dd8dfab89d4bb91b102c91312db54274578f9d4 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:21:02 +0100 Subject: [PATCH 073/312] Update RequestEmailAddress.ps1 --- .../RequestEmailAddress.ps1 | 59 ++++++++----------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/Site Management/Set RequestAccessEmail for all subsites in one site collection/RequestEmailAddress.ps1 b/Site Management/Set RequestAccessEmail for all subsites in one site collection/RequestEmailAddress.ps1 index 12641efc..4c960948 100644 --- a/Site Management/Set RequestAccessEmail for all subsites in one site collection/RequestEmailAddress.ps1 +++ b/Site Management/Set RequestAccessEmail for all subsites in one site collection/RequestEmailAddress.ps1 @@ -1,46 +1,37 @@ Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll" -function Set-SPOWebRequestAccessEmail -{ -param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOWebRequestAccessEmail{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] $password, [Parameter(Mandatory=$true,Position=4)] [string]$RequestAccessEmail - ) - - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - Write-Host "Changing for " $ctx.Web.Url - $ctx.Web.RequestAccessEmail=$RequestAccessEmail - $ctx.Web.Update() - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - if($ctx.Web.Webs.Count -ne 0) - { - foreach($webbie in $ctx.Web.Webs) - { - - - Set-SPOWebRequestAccessEmail -Username $Username -Url $webbie.Url -password $password -RequestAccessEmail $RequestAccessEmail - - - } - - } - - } + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + Write-Host "Changing for " $ctx.Web.Url + $ctx.Web.RequestAccessEmail=$RequestAccessEmail + $ctx.Web.Update() + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + + if($ctx.Web.Webs.Count -ne 0){ + foreach($webbie in $ctx.Web.Webs){ + Set-SPOWebRequestAccessEmail -Username $Username -Url $webbie.Url -password $password -RequestAccessEmail $RequestAccessEmail + } + } +} # Paths to SDK. Please verify location on your computer. From 70145f68e5de2d6543dcafe0896c7942030987ac Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:23:03 +0100 Subject: [PATCH 074/312] Update description.md --- .../description.md | 33 +++++-------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/Site Management/Set theme of your SharePoint Online site/description.md b/Site Management/Set theme of your SharePoint Online site/description.md index 8952118c..3b89366d 100644 --- a/Site Management/Set theme of your SharePoint Online site/description.md +++ b/Site Management/Set theme of your SharePoint Online site/description.md @@ -1,28 +1,18 @@ Powershell script to set theme for your site. - - The script chooses one of the default font and color palettes available from Designer Gallery: - - - + The font and colors are applied to existing site. The current settings (they can be modified) change the look of the page into: - - - - - - -1. Install SharePoint Online SDK. + -2. Open the script (e.g. in Notepad) and enter your data in the following lines: +**1.** Install SharePoint Online SDK. - +**2.** Open the script (e.g. in Notepad) and enter your data in the following lines: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -31,19 +21,14 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Username="admin@tenant.onmicrosoft.com" $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://tenant.sharepoint.com/sites/powie1" + ``` - - a) Find paths to SDK libraries SharePoint.Client.Runtime.dll and SharePoint.Client.dll on your local computer and replace the ones in the file (they may be very similar or exactly the same!) b) Insert the username and the url of the site where you want to change the theme. You will be prmopted for the password during the script execution so do not enter it here. - - -3. Run the script in any Powershell Module. +**3.** Run the script in any Powershell Module. -4. Verify the results on the site. - - +**4.** Verify the results on the site. -If you have any questions, do not hesitate to post them in the Q&A section! +#### If you have any questions, do not hesitate to post them in the Q&A section! From f6a6dbe1e5f89f7e83beaab23d0bb932a2267a7c Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:23:56 +0100 Subject: [PATCH 075/312] Update Theme.ps1 --- .../Theme.ps1 | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/Site Management/Set theme of your SharePoint Online site/Theme.ps1 b/Site Management/Set theme of your SharePoint Online site/Theme.ps1 index 42075fa2..8f68d755 100644 --- a/Site Management/Set theme of your SharePoint Online site/Theme.ps1 +++ b/Site Management/Set theme of your SharePoint Online site/Theme.ps1 @@ -1,35 +1,32 @@ -function Set-SPOTheme -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOTheme{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, -[Parameter(Mandatory=$true,Position=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$palette, -[Parameter(Mandatory=$true,Position=5)] + [Parameter(Mandatory=$true,Position=5)] [string]$font - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() + ) - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.ThemeInfo) - $ctx.ExecuteQuery() - $palette=$ctx.web.ServerRelativeUrl+$palette - $font=$ctx.Web.ServerRelativeUrl+$font - $mynu=Out-Null - Write-Host "Current theme " $ctx.Web.ThemeInfo.AccessibleDescription - Write-Host $ctx.Web.ThemeInfo.ThemeBackgroundImageUri -$ctx.Web.ApplyTheme($palette,$font,$mynu, $true) -$ctx.ExecuteQuery() - - } + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.ThemeInfo) + $ctx.ExecuteQuery() + $palette=$ctx.web.ServerRelativeUrl+$palette + $font=$ctx.Web.ServerRelativeUrl+$font + $mynu=Out-Null + Write-Host "Current theme " $ctx.Web.ThemeInfo.AccessibleDescription + Write-Host $ctx.Web.ThemeInfo.ThemeBackgroundImageUri + $ctx.Web.ApplyTheme($palette,$font,$mynu, $true) + $ctx.ExecuteQuery() +} From 72673aebe20b224c913c81aefcfcebcb4ecf1bcb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:25:40 +0100 Subject: [PATCH 076/312] Update description.md --- .../description.md | 31 +++---------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/Site Management/Update locale id for all personal sites/description.md b/Site Management/Update locale id for all personal sites/description.md index 04612d55..f3f23d1e 100644 --- a/Site Management/Update locale id for all personal sites/description.md +++ b/Site Management/Update locale id for all personal sites/description.md @@ -1,34 +1,21 @@ -Acknowledegement -The script uses Vadim Gremyachev's Invoke-LoadMethod published here +### Acknowledegement - +The script uses Vadim Gremyachev's Invoke-LoadMethod published here - +### Description -Description The script updates locale id in regional settings of all personal sites to which you have access. The locale id can later be verified by going to Site Settings>Regional Settings. - - The script requires the following libraries: - - -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" - - - - - - + ``` Enter the correct data and specify the locale id you'd like to set: - - ```PowerShell # Insert the credentials and the name of the admin site $Username="admin@tenant.onmicrosoft.com" @@ -37,19 +24,11 @@ Connect-SPOService https://tenant-admin.sharepoint.com -Credential $Username $myhost="https://tenant-my.sharepoint.com" $LocaleID=1033 ``` - - - - - If you are not currently an Administrator of the user's personal site, you can gain access using: - - ```PowerShell Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true ``` - In order to use the cmdlet, you can either modify the.ps1 file or write a separate script. From 3fdeea617c06a784bb80d8c3652d362c5ae93c72 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:26:21 +0100 Subject: [PATCH 077/312] Update description.md --- .../Update locale id for all personal sites/description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Site Management/Update locale id for all personal sites/description.md b/Site Management/Update locale id for all personal sites/description.md index f3f23d1e..fd1a5a35 100644 --- a/Site Management/Update locale id for all personal sites/description.md +++ b/Site Management/Update locale id for all personal sites/description.md @@ -1,6 +1,6 @@ ### Acknowledegement -The script uses Vadim Gremyachev's Invoke-LoadMethod published here +The script uses [Vadim Gremyachev's](https://sharepoint.stackexchange.com/users/10610/vadim-gremyachev) Invoke-LoadMethod published [here](https://sharepoint.stackexchange.com/questions/126221/spo-retrieve-hasuniqueroleassignements-property-using-powershell) ### Description From a47138f1791a31a8349168f060c486ec2c16b307 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:28:33 +0100 Subject: [PATCH 078/312] Update LocaleID.ps1 --- .../LocaleID.ps1 | 107 ++++++++---------- 1 file changed, 49 insertions(+), 58 deletions(-) diff --git a/Site Management/Update locale id for all personal sites/LocaleID.ps1 b/Site Management/Update locale id for all personal sites/LocaleID.ps1 index 6de5c803..e177f7e5 100644 --- a/Site Management/Update locale id for all personal sites/LocaleID.ps1 +++ b/Site Management/Update locale id for all personal sites/LocaleID.ps1 @@ -1,63 +1,57 @@  # Vadim Gremyachev's function - Function Invoke-LoadMethod() { -param( - [Microsoft.SharePoint.Client.ClientObject]$Object = $(throw "Please provide a Client Object"), - [string]$PropertyName -) - $ctx = $Object.Context - $load = [Microsoft.SharePoint.Client.ClientContext].GetMethod("Load") - $type = $Object.GetType() - $clientLoad = $load.MakeGenericMethod($type) - - - $Parameter = [System.Linq.Expressions.Expression]::Parameter(($type), $type.Name) - $Expression = [System.Linq.Expressions.Expression]::Lambda( - [System.Linq.Expressions.Expression]::Convert( - [System.Linq.Expressions.Expression]::PropertyOrField($Parameter,$PropertyName), - [System.Object] - ), - $($Parameter) - ) - $ExpressionArray = [System.Array]::CreateInstance($Expression.GetType(), 1) - $ExpressionArray.SetValue($Expression, 0) - $clientLoad.Invoke($ctx,@($Object,$ExpressionArray)) +Function Invoke-LoadMethod() { + param( + [Microsoft.SharePoint.Client.ClientObject]$Object = $(throw "Please provide a Client Object"), + [string]$PropertyName + ) + + $ctx = $Object.Context + $load = [Microsoft.SharePoint.Client.ClientContext].GetMethod("Load") + $type = $Object.GetType() + $clientLoad = $load.MakeGenericMethod($type) + + $Parameter = [System.Linq.Expressions.Expression]::Parameter(($type), $type.Name) + $Expression = [System.Linq.Expressions.Expression]::Lambda( + [System.Linq.Expressions.Expression]::Convert( + [System.Linq.Expressions.Expression]::PropertyOrField($Parameter,$PropertyName), + [System.Object] + ), + $($Parameter) + ) + + $ExpressionArray = [System.Array]::CreateInstance($Expression.GetType(), 1) + $ExpressionArray.SetValue($Expression, 0) + $clientLoad.Invoke($ctx,@($Object,$ExpressionArray)) } -function Set-SPOUserRegionalSettings -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOUserRegionalSettings{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$LocaleID - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - - $ctx.Load($ctx.Web.RegionalSettings.TimeZones) - Invoke-LoadMethod -Object $ctx.Web.RegionalSettings -PropertyName "LocaleID" - $ctx.ExecuteQuery() + ) - Write-Host "Old locale id: " $ctx.Web.RegionalSettings.LocaleId.ToString() + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() - $ctx.Web.RegionalSettings.LocaleId=$LocaleID -$ctx.Web.Update() -$ctx.ExecuteQuery() + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.RegionalSettings.TimeZones) + Invoke-LoadMethod -Object $ctx.Web.RegionalSettings -PropertyName "LocaleID" + $ctx.ExecuteQuery() - } - - + Write-Host "Old locale id: " $ctx.Web.RegionalSettings.LocaleId.ToString() + $ctx.Web.RegionalSettings.LocaleId=$LocaleID + $ctx.Web.Update() + $ctx.ExecuteQuery() +} # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" @@ -72,19 +66,16 @@ $LocaleID=1033 $users=get-SPOUser -Site $myhost -foreach($user in $users) -{ - - if($user.LoginName.Contains('@')) - { - $persweb=$user.LoginName.Replace(".","_").Replace("@","_") - $persweb=$myhost+"/personal/"+$persweb - Write-Host $persweb +foreach($user in $users){ + if($user.LoginName.Contains('@')){ + $persweb=$user.LoginName.Replace(".","_").Replace("@","_") + $persweb=$myhost+"/personal/"+$persweb + Write-Host $persweb - $AdminUrl=$persweb + $AdminUrl=$persweb - Set-SPOUserRegionalSettings -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl -LocaleID $LocaleID - } + Set-SPOUserRegionalSettings -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl -LocaleID $LocaleID + } } From e19197ac139eedb9facbf4edbef7a8338deeab12 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Sun, 1 Mar 2020 17:29:56 +0100 Subject: [PATCH 079/312] Update PersonalRegSettings.ps1 --- .../PersonalRegSettings.ps1 | 60 +++++++++---------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/Site Management/Update the time zones in all personal sites/PersonalRegSettings.ps1 b/Site Management/Update the time zones in all personal sites/PersonalRegSettings.ps1 index d8a3c125..0cee28b0 100644 --- a/Site Management/Update the time zones in all personal sites/PersonalRegSettings.ps1 +++ b/Site Management/Update the time zones in all personal sites/PersonalRegSettings.ps1 @@ -1,33 +1,29 @@ -function Set-SPOUserRegionalSettings -{ - param ( - [Parameter(Mandatory=$true,Position=1)] +function Set-SPOUserRegionalSettings{ + param ( + [Parameter(Mandatory=$true,Position=1)] [string]$Username, - [Parameter(Mandatory=$true,Position=2)] + [Parameter(Mandatory=$true,Position=2)] $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$Url, - [Parameter(Mandatory=$true,Position=3)] + [Parameter(Mandatory=$true,Position=3)] [string]$TimeZoneID - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.ExecuteQuery() - - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.RegionalSettings.TimeZone) - $ctx.Load($ctx.Web.RegionalSettings.TimeZones) - $ctx.ExecuteQuery() - - - $ctx.Web.RegionalSettings.TimeZone=$ctx.Web.RegionalSettings.TimeZones.GetbyID($TimeZoneID) - $ctx.Web.Update() - $ctx.ExecuteQuery() + ) + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.ExecuteQuery() + + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.RegionalSettings.TimeZone) + $ctx.Load($ctx.Web.RegionalSettings.TimeZones) + $ctx.ExecuteQuery() + + $ctx.Web.RegionalSettings.TimeZone=$ctx.Web.RegionalSettings.TimeZones.GetbyID($TimeZoneID) + $ctx.Web.Update() + $ctx.ExecuteQuery() } - # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" @@ -40,17 +36,15 @@ $myhost="https://t321-my.sharepoint.com" $users=get-SPOUser -Site $myhost $TimeZoneID=63 -foreach($user in $users) -{ - if($user.LoginName.Contains('@')) - { - $persweb=$user.LoginName.Replace(".","_").Replace("@","_") - $persweb=$myhost+"/personal/"+$persweb - Write-Host $persweb +foreach($user in $users){ + if($user.LoginName.Contains('@')){ + $persweb=$user.LoginName.Replace(".","_").Replace("@","_") + $persweb=$myhost+"/personal/"+$persweb + Write-Host $persweb - $AdminUrl=$persweb + $AdminUrl=$persweb - Set-SPoUserRegionalSettings -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl -TimeZoneID $TimeZoneID - } + Set-SPoUserRegionalSettings -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl -TimeZoneID $TimeZoneID + } } From 1a9e5ddd7ce59d9c04f96f8351f5efc9757281a4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 1 Aug 2020 17:48:28 +0300 Subject: [PATCH 080/312] Delete description.md --- .../description.md | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 Site Management/Create OneDrive for Business usage report for all users/description.md diff --git a/Site Management/Create OneDrive for Business usage report for all users/description.md b/Site Management/Create OneDrive for Business usage report for all users/description.md deleted file mode 100644 index c99d310f..00000000 --- a/Site Management/Create OneDrive for Business usage report for all users/description.md +++ /dev/null @@ -1,40 +0,0 @@ -The script retrieves all SPO users and pulls usage statistics for their ODB sites. - - - -The script uses CSOM. It requires SharePoint Online SDK and SharePoint Online Management Shell. Make sure the script refers the paths on your computer: - - - -```PowerShell -# Paths to SDK. Please verify location on your computer. -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" - ``` - - - - -## How to use? -**1.** Download the script and open it in ISE or NotePad. - -**2.** Enter your tenant's data: - - - -```PowerShell -$admin="user@tenant.onmicrosoft.com" -$pass=Read-Host "Enter Password: " -AsSecureString -$mysiteHost="https://tenant-my.sharepoint.com" -``` - - -**3.** Run the script. - -**4.** Expected results: - - - -### Acknowledgement: - -The script is using Invoke-LoadMethod published [here](https://sharepoint.stackexchange.com/questions/126221/spo-retrieve-hasuniqueroleassignements-property-using-powershell), without which it could not proceed. The method was created and belongs to a brilliant SharePointer and Guru, [Vadim Gremyachev](https://sharepoint.stackexchange.com/users/10610/vadim-gremyachev). From 7d00f0660b90856d3ee4c01256c88f9222161fc4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 1 Aug 2020 17:49:17 +0300 Subject: [PATCH 081/312] Delete AddFeaturesToPersonal.ps1 --- .../AddFeaturesToPersonal.ps1 | 103 ------------------ 1 file changed, 103 deletions(-) delete mode 100644 Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 b/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 deleted file mode 100644 index ecec6128..00000000 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 +++ /dev/null @@ -1,103 +0,0 @@ -function Remove-SPOFeature{ - param ( - [string]$Username, - [Parameter(Mandatory=$true,Position=1)] - [string]$Url, - [Parameter(Mandatory=$true,Position=2)] - $password - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - - $site=$ctx.Site - $ctx.Load($site) - $ctx.ExecuteQuery() - - - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url -} - - -function Add-SPOFeature{ - param ( - [string]$Username, - [Parameter(Mandatory=$true,Position=1)] - [string]$Url, - [Parameter(Mandatory=$true,Position=2)] - $password - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - - $site=$ctx.Site - $ctx.Load($site) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url -} - - - - -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" -$csvPath= Read-Host -Prompt "Enter the path of the csv file" -$users=import-csv $csvPath -$siteUrl = Read-Host -Prompt "Enter the my site host: https://tenant-my.sharepoint.com” -$username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" -$password = Read-Host -Prompt "Enter password" -AsSecureString -$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) -$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -$ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -$adminUrl=$siteUrl.Replace("-my","-admin") -Connect-SPOService -Url $adminUrl -Credential $username - -try{ - $ctx.ExecuteQuery() -} -catch [Net.WebException] { - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red -} - -$feature=Read-Host -Prompt "Enter the feature id, e.g. for SharePoint Server Publishing it's 94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" -$featureguid=new-object System.Guid $feature -$RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." -$RemoveorAdd=$RemoveorAdd.Trim() - -if($RemoveorAdd -like "a"){ - foreach($user in $users){ - if($user.Site -ne ""){ - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Add-SPOFeature -Username $username -Url $urelek -password $password - - #Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $false - } - } -} -elseif($RemoveorAdd -like "d"){ - foreach($user in $users){ - if($user.Site -ne ""){ - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Remove-SPOFeature -Username $username -Url $urelek -password $password - } - } -} -else{ - Write-Host "Didn't recognize the command" -} - - - -Write-Host "Done." -ForegroundColor Green - From 074acb5405a0abc82ede6e69c07cc64c81267b5a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 1 Aug 2020 17:49:42 +0300 Subject: [PATCH 082/312] Delete description.md --- .../description.md | 44 ------------------- 1 file changed, 44 deletions(-) delete mode 100644 Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md b/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md deleted file mode 100644 index 1349362f..00000000 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md +++ /dev/null @@ -1,44 +0,0 @@ -This script is a temporary solution intended to work together with [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936). - -Using [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936) generate a CSV file with personal sites in the format: - - - -Site -|---| -/personal/t_trial234_onmicrosoft_com/ -/personal/uss100_trial234_onmicrosoft_com/ -/personal/t_trial234_onmicrosoft_com/ - -The Column name has to be SITE. - -Run the script. It will ask you for credentials, [feature id](https://docs.microsoft.com/pl-pl/archive/blogs/), and whether you want to acivate it or de-activate. - -Before running the script, verify the paths to SharePoint Online SDK: - -```PowerShell -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - ``` - - -Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - -During its execution the script will inform you, where the features have been changed. - - -### Related scripts - -[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) - -[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) - -[Activate or deactivate a site collection feature ](https://gallery.technet.microsoft.com/Activate-or-deactivate-a-a7e12c79) - -[Get all features from a site collection](https://gallery.technet.microsoft.com/Get-all-features-from-a-2954b47a) - -[Get all features from a site](https://gallery.technet.microsoft.com/Get-all-features-from-a-3168e476) - - - -** As a side-effect the script assigns the administrator as a site collection admin to all users. This will be improved in the next version** From 3a390764f680a0ae64259a26f1295c1919f24716 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sat, 1 Aug 2020 17:52:37 +0300 Subject: [PATCH 083/312] Delete description.md --- .../description.md | 40 ------- .../AddFeaturesToPersonal.ps1 | 103 ------------------ .../description.md | 44 -------- 3 files changed, 187 deletions(-) delete mode 100644 Site Management/Create OneDrive for Business usage report for all users/description.md delete mode 100644 Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 delete mode 100644 Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md diff --git a/Site Management/Create OneDrive for Business usage report for all users/description.md b/Site Management/Create OneDrive for Business usage report for all users/description.md deleted file mode 100644 index c99d310f..00000000 --- a/Site Management/Create OneDrive for Business usage report for all users/description.md +++ /dev/null @@ -1,40 +0,0 @@ -The script retrieves all SPO users and pulls usage statistics for their ODB sites. - - - -The script uses CSOM. It requires SharePoint Online SDK and SharePoint Online Management Shell. Make sure the script refers the paths on your computer: - - - -```PowerShell -# Paths to SDK. Please verify location on your computer. -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" - ``` - - - - -## How to use? -**1.** Download the script and open it in ISE or NotePad. - -**2.** Enter your tenant's data: - - - -```PowerShell -$admin="user@tenant.onmicrosoft.com" -$pass=Read-Host "Enter Password: " -AsSecureString -$mysiteHost="https://tenant-my.sharepoint.com" -``` - - -**3.** Run the script. - -**4.** Expected results: - - - -### Acknowledgement: - -The script is using Invoke-LoadMethod published [here](https://sharepoint.stackexchange.com/questions/126221/spo-retrieve-hasuniqueroleassignements-property-using-powershell), without which it could not proceed. The method was created and belongs to a brilliant SharePointer and Guru, [Vadim Gremyachev](https://sharepoint.stackexchange.com/users/10610/vadim-gremyachev). diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 b/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 deleted file mode 100644 index ecec6128..00000000 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/AddFeaturesToPersonal.ps1 +++ /dev/null @@ -1,103 +0,0 @@ -function Remove-SPOFeature{ - param ( - [string]$Username, - [Parameter(Mandatory=$true,Position=1)] - [string]$Url, - [Parameter(Mandatory=$true,Position=2)] - $password - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - - $site=$ctx.Site - $ctx.Load($site) - $ctx.ExecuteQuery() - - - $site.Features.Remove($featureguid, $true); - $ctx.ExecuteQuery() - Write-Host "Feature removed for" $site.Url -} - - -function Add-SPOFeature{ - param ( - [string]$Username, - [Parameter(Mandatory=$true,Position=1)] - [string]$Url, - [Parameter(Mandatory=$true,Position=2)] - $password - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - - $site=$ctx.Site - $ctx.Load($site) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - - $site.Features.Add($featureguid, $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) - $ctx.ExecuteQuery() - Write-Host "Feature enabled for" $site.Url -} - - - - -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" -$csvPath= Read-Host -Prompt "Enter the path of the csv file" -$users=import-csv $csvPath -$siteUrl = Read-Host -Prompt "Enter the my site host: https://tenant-my.sharepoint.com” -$username = Read-Host -Prompt "Enter admin@tenant.onmicrosoft.com" -$password = Read-Host -Prompt "Enter password" -AsSecureString -$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl) -$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -$ctx.Credentials= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) -$adminUrl=$siteUrl.Replace("-my","-admin") -Connect-SPOService -Url $adminUrl -Credential $username - -try{ - $ctx.ExecuteQuery() -} -catch [Net.WebException] { - Write-Host "Wrong credentials" $_.Exception.Message -ForegroundColor Red -} - -$feature=Read-Host -Prompt "Enter the feature id, e.g. for SharePoint Server Publishing it's 94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb" -$featureguid=new-object System.Guid $feature -$RemoveorAdd= Read-Host "Do you want to activate the feature to the sites (a) or deactivate it (d)? Press a or d." -$RemoveorAdd=$RemoveorAdd.Trim() - -if($RemoveorAdd -like "a"){ - foreach($user in $users){ - if($user.Site -ne ""){ - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Add-SPOFeature -Username $username -Url $urelek -password $password - - #Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $false - } - } -} -elseif($RemoveorAdd -like "d"){ - foreach($user in $users){ - if($user.Site -ne ""){ - $urelek=$siteUrl+$user.Site - $urelek=$urelek.TrimEnd("/") - Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true - Remove-SPOFeature -Username $username -Url $urelek -password $password - } - } -} -else{ - Write-Host "Didn't recognize the command" -} - - - -Write-Host "Done." -ForegroundColor Green - diff --git a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md b/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md deleted file mode 100644 index 1349362f..00000000 --- a/Site Management/Features/Add/Remove Site Features from all Personal Sites/description.md +++ /dev/null @@ -1,44 +0,0 @@ -This script is a temporary solution intended to work together with [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936). - -Using [Retrieve all SharePoint Online profiles and their properties using CSOM](https://gallery.technet.microsoft.com/Retrieve-all-SharePoint-357e2936) generate a CSV file with personal sites in the format: - - - -Site -|---| -/personal/t_trial234_onmicrosoft_com/ -/personal/uss100_trial234_onmicrosoft_com/ -/personal/t_trial234_onmicrosoft_com/ - -The Column name has to be SITE. - -Run the script. It will ask you for credentials, [feature id](https://docs.microsoft.com/pl-pl/archive/blogs/), and whether you want to acivate it or de-activate. - -Before running the script, verify the paths to SharePoint Online SDK: - -```PowerShell -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - ``` - - -Optionally, you can edit these two lines so that the script doesn'task you for credentials at runtime: - -During its execution the script will inform you, where the features have been changed. - - -### Related scripts - -[Activate or deactivate a SPO feature for direct subsites in site collection](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-9fe2fb34) - -[Activate or deactivate a SPO feature for a single site](https://gallery.technet.microsoft.com/office/Activate-or-deactivate-a-da769f9d) - -[Activate or deactivate a site collection feature ](https://gallery.technet.microsoft.com/Activate-or-deactivate-a-a7e12c79) - -[Get all features from a site collection](https://gallery.technet.microsoft.com/Get-all-features-from-a-2954b47a) - -[Get all features from a site](https://gallery.technet.microsoft.com/Get-all-features-from-a-3168e476) - - - -** As a side-effect the script assigns the administrator as a site collection admin to all users. This will be improved in the next version** From 1e561127160fcf0b57b317652dea2120fc642c8b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 1 Aug 2020 18:02:08 +0300 Subject: [PATCH 084/312] Update desscription.md --- .../desscription.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md b/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md index 58278007..cab6144e 100644 --- a/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md +++ b/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md @@ -10,7 +10,7 @@ It requires installed SharePoint Online SDK You have to enter the library data before running the script: -PowerShell +```PowerShell #Paths to SDK Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -26,6 +26,6 @@ $Url="https://test-my.sharepoint.com/personal/german_test_onmicrosoft_com" $csvPath="C:\MyFiles\Versions.csv" #Path for a csv where files with no version will be recorded $csvPath2="C:\MyFiles\FileThatShowsNoVersionsAvailable4.csv" - + ``` You will see the following output during the script execution and 2 csv files will be generated: From d061797e9b5df03169a8638acf6d8280ad9a3072 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 2 Aug 2020 12:23:29 +0300 Subject: [PATCH 085/312] Rename desscription.md to description.md --- .../{desscription.md => description.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Versioning/Create a report on all file versions in OneDrive for Business/{desscription.md => description.md} (100%) diff --git a/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md b/Versioning/Create a report on all file versions in OneDrive for Business/description.md similarity index 100% rename from Versioning/Create a report on all file versions in OneDrive for Business/desscription.md rename to Versioning/Create a report on all file versions in OneDrive for Business/description.md From b6580507e1f5015e38f4dfb05516e11763654292 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 5 Aug 2020 21:06:47 +0300 Subject: [PATCH 086/312] Create README.md --- File Management/Get SPO Folder and File/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Get SPO Folder and File/README.md diff --git a/File Management/Get SPO Folder and File/README.md b/File Management/Get SPO Folder and File/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Get SPO Folder and File/README.md @@ -0,0 +1 @@ +. From 11cef658581dba41d606708b88c7557c27273cd7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 8 Aug 2020 12:05:20 +0300 Subject: [PATCH 087/312] Create README.md --- Items Management/Create new list item using Powershell/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Items Management/Create new list item using Powershell/README.md diff --git a/Items Management/Create new list item using Powershell/README.md b/Items Management/Create new list item using Powershell/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Items Management/Create new list item using Powershell/README.md @@ -0,0 +1 @@ +. From 8466b8674a81e2d60b20c92f3f47152e69e92b6d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 10 Aug 2020 09:32:09 +0300 Subject: [PATCH 088/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/description.md b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/description.md index 948e2f38..df1f668c 100644 --- a/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/description.md +++ b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/description.md @@ -26,7 +26,7 @@ You need to enter the appropriate data: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" @@ -35,7 +35,7 @@ Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint. $Username="ana@etr56.onmicrosoft.com" Connect-SPOService https://etr56-admin.sharepoint.com -Credential $Username $myhost="https://etr56-my.sharepoint.com" - + ``` The user list is imported from a csv file that should look like this: From 2013932a1a48400d6c5a6dab35e5712a85a10f95 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 10 Aug 2020 09:32:18 +0300 Subject: [PATCH 089/312] Create README.md --- .../README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/README.md diff --git a/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/README.md b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/README.md new file mode 100644 index 00000000..df1f668c --- /dev/null +++ b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/README.md @@ -0,0 +1,47 @@ +Powershell script that enables versioning for all the libraries and lists in personal sites (OneDrive for Business). + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +For some lists, enabling version may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether enabling was successful or not. + + + +As the script runs you will see green lists' titles for which the enabling succeeded and red for those which failed (not all lists support versioning). + + + + + + + +You need to enter the appropriate data: + + + +```PowerShell + # Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the admin site inthe next 3 lines +$Username="ana@etr56.onmicrosoft.com" +Connect-SPOService https://etr56-admin.sharepoint.com -Credential $Username +$myhost="https://etr56-my.sharepoint.com" + ``` + The user list is imported from a csv file that should look like this: + + + + + + + +There is another version of this script that enables versioning for ALL users: https://gallery.technet.microsoft.com/office/Enable-versioning-for-all-83548eb6 From 6e68a527fab496dcb7adc153dfdac6c1c399dd1d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 17 Aug 2020 17:42:18 +0300 Subject: [PATCH 090/312] Create README.md --- .../Script to get SharePoint objects with REST/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md diff --git a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md @@ -0,0 +1 @@ +. From 2725ad2bd91ad810ca4dc08e681da2ba6c5877c9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 19 Aug 2020 23:30:20 +0300 Subject: [PATCH 091/312] Create README.md --- .../Remove SharePoint Online licenses for all users/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Licensing/Remove SharePoint Online licenses for all users/README.md diff --git a/Licensing/Remove SharePoint Online licenses for all users/README.md b/Licensing/Remove SharePoint Online licenses for all users/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Licensing/Remove SharePoint Online licenses for all users/README.md @@ -0,0 +1 @@ +. From a9316adb2a7e91b9fa9ec82a8bb6494a6fdbb581 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 21 Aug 2020 19:25:56 +0300 Subject: [PATCH 092/312] Update README.md --- .../README.md | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/Items Management/Create new list item using Powershell/README.md b/Items Management/Create new list item using Powershell/README.md index 9c558e35..f1a9692b 100644 --- a/Items Management/Create new list item using Powershell/README.md +++ b/Items Management/Create new list item using Powershell/README.md @@ -1 +1,58 @@ -. +Powershell Module with one new cmdlet + + + +## **New-SPOListItem** + +### *Parameters* + +The cmdlet is using the following parameters: +```powershell + [string]$Username + ``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to change the settings. +```powershell +[string]$ItemTitle +``` +Specifies the title of the list item. In case of a contact list it will be the LastName, task list -> task name, etc. +```powershell +[string]$AdditionalField="" +``` +Optional. If you want to add some additional attribute to the item at the moment of creation. For more attributes use Update-SPOListItem. This parameter defines the internal name of the column +```powershell +[string]$AdditionalValue="" +``` +Optional. If you want to add some additional attribute to the item at the moment of creation. For more attributes use Update-SPOListItem. This parameter defines the value that you want to input. + +### *Examples* + + + +### *Requirements* + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the ```.psm1``` file! + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + +

+Enjoy and please share feedback! + + + + From 1bd3b838628a31c29d1dcce4493ce00af4cd9de4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 21 Aug 2020 19:45:40 +0300 Subject: [PATCH 093/312] Create README.md --- .../Bulk update all items in a list/README.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Items Management/Bulk update all items in a list/README.md diff --git a/Items Management/Bulk update all items in a list/README.md b/Items Management/Bulk update all items in a list/README.md new file mode 100644 index 00000000..2671eab5 --- /dev/null +++ b/Items Management/Bulk update all items in a list/README.md @@ -0,0 +1,37 @@ +Short Powershell script to bulk update all items in a list + +### **Example** + + + Result: + + + +## **Requirements** + +Before running the script, you have to modify the last lines! + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + +Update-SPOListItem -Username user@tenant.onmicrosoft.com -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "contacts list" -FieldToUpdate elp -ValueToUpdate bio +``` + ++ Enter your credentials
++ FieldToUpdate specifies the name of the list column which you want to update
++ ValueToUpdate means the value that you want to enter in that column for each item
++ Verify if the [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) is installed in the same location on your computer
+ + + + +Related Scripts + +[Powershell Module with Update-SPOListItem cmdlet](https://gallery.technet.microsoft.com/scriptcenter/Powershell-Module-for-easy-5d590623) + + +

+Enjoy and please share feedback! From 439cd33007298439c7df05839ebf3c73c4bb891d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 21 Aug 2020 19:46:50 +0300 Subject: [PATCH 094/312] Create README.md --- .../Get FlowsPolicy using REST API/README.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Power Automate/Get FlowsPolicy using REST API/README.md diff --git a/Power Automate/Get FlowsPolicy using REST API/README.md b/Power Automate/Get FlowsPolicy using REST API/README.md new file mode 100644 index 00000000..d8706e41 --- /dev/null +++ b/Power Automate/Get FlowsPolicy using REST API/README.md @@ -0,0 +1,24 @@ +Powershell script that verifies DisableFlows property of a SharePoint Online site. The script is related to and more described in an article [Verifying and modifying Flows Policy in SharePoint Online site using Powershell](https://social.technet.microsoft.com/wiki/contents/articles/39331.sharepoint-online-verifying-and-modifying-flows-policy-in-site-using-powershell.aspx) on the TechNet Wiki. + + + +If the setting is set to disabled, the flows button will be missing on all lists and libraries in the site: + + + + +The property can also be verified using REST API in the browser: + + + +## How to use? +- Download and open the .ps1 file. +- Enter the correct url and admin login: +```PowerShell +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT.sharepoint.com" +``` +- Run the script + + + From ac14119a87c9000878c1e06d0985a8ae55113007 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 21 Aug 2020 19:47:57 +0300 Subject: [PATCH 095/312] Update README.md --- Power Automate/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Power Automate/README.md b/Power Automate/README.md index 9c558e35..a8de0c7c 100644 --- a/Power Automate/README.md +++ b/Power Automate/README.md @@ -1 +1 @@ -. +Scripts to modify Power Automate settings From 3a351ebc1966075d53c218cc914c7b2ea690998f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:34:20 +0300 Subject: [PATCH 096/312] Create README.md --- .../README.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Tenant Settings/Add BCC to all sharing invitations in OneDrive for Business/README.md diff --git a/Tenant Settings/Add BCC to all sharing invitations in OneDrive for Business/README.md b/Tenant Settings/Add BCC to all sharing invitations in OneDrive for Business/README.md new file mode 100644 index 00000000..a4152221 --- /dev/null +++ b/Tenant Settings/Add BCC to all sharing invitations in OneDrive for Business/README.md @@ -0,0 +1,29 @@ +Short Powershell script to send bcc copies to all sharing invitations send from users' OneDrives for Business. The script uses CSOM with December 2015 update. + +## How to use? + +- Download and open the .ps1 file. +- Add correct SharePoint Online SDK libraries: + + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` +- Enter the correct url, and admin login. Under InvitationsList, enter the email addresses that you want to add in BCC to every sharing invitation in your users' OneDrive for Business. You will be additionally prompted for the password. Do not enter it in the file: +```PowerShell + $spoTenant.BccExternalSharingInvitationsList={arleta.wanat@SomeFakeAdresse.com} + + + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" + ``` +- Run the script + +After the setting takes place, the BCC emails will start receiving copies of the sharing invitations with Invited person's email in the "TO" field and inviter's in "CC": + + From 2d25ad6b468576c8b1700d0ccf10f6e2d03af649 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:34:40 +0300 Subject: [PATCH 097/312] Create README.md --- .../README.md | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Tenant Settings/Allow external sharing only with specific domains/README.md diff --git a/Tenant Settings/Allow external sharing only with specific domains/README.md b/Tenant Settings/Allow external sharing only with specific domains/README.md new file mode 100644 index 00000000..c0257d59 --- /dev/null +++ b/Tenant Settings/Allow external sharing only with specific domains/README.md @@ -0,0 +1,32 @@ +Short Powershell script that limits external sharing in SharePoint Online to only specific mail domains. The script uses CSOM and requires SharePoint Online SDK. + + + +The script is related to and more described in a Wiki article [SharePoint Online Sharing settings with CSOM](https://social.technet.microsoft.com/wiki/contents/articles/39365.sharepoint-online-sharing-settings-with-csom). + + + + + +## How to use? + +- Download and open the .ps1 file. +- Add correct libraries: +``` PowerShell + +#Paths to SDK +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\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` +- Enter the correct url and admin login: + + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$AllowDomainList="test.com madeup.com" +``` +- Run the script + From f4cff1d09ac9a77dc2601a06f00a3f97fe65b959 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:40:57 +0300 Subject: [PATCH 098/312] Create README.md --- .../README.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Tenant Settings/Block download of all files for guests in SharePoint with Powershell and CSOM/README.md diff --git a/Tenant Settings/Block download of all files for guests in SharePoint with Powershell and CSOM/README.md b/Tenant Settings/Block download of all files for guests in SharePoint with Powershell and CSOM/README.md new file mode 100644 index 00000000..f7154227 --- /dev/null +++ b/Tenant Settings/Block download of all files for guests in SharePoint with Powershell and CSOM/README.md @@ -0,0 +1,49 @@ +Short Powershell script that prevents external users from downloading the files that have been shared with them using guest link. The script uses CSOM and requires SharePoint Online SDK. The script is described in and is part of Wiki Technet article OneDrive for Business sharing settings with PowerShell . + +Modifying these settings is currently not possible with SharePoint Online Management Shell. + + + + + + +From August 2016 and the CSOM version 16.1.5626.1200 there is an option to prevent external users from downloading the files that have been shared with them using guest link: + + + + + + + + + + + + + + +How to use? +Download and open the .ps1 file. +Add correct SharePoint Online SDK libraries: + + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` Enter the correct url, the setting for the sync button, and admin login. You will be additionally prompted for the password. Do not enter it in the file: + + +```PowerShell + #Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$BlockDownloadOfAllFilesForGuests=$false #Whether the download should be allowed +``` + Run the script + + + + + From ed0ee3cf8da08f06c93f584a8c96270b985c6c2b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:41:39 +0300 Subject: [PATCH 099/312] Create README.md --- .../README.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Tenant Settings/Force external users to accept sharing invitations with the same account/README.md diff --git a/Tenant Settings/Force external users to accept sharing invitations with the same account/README.md b/Tenant Settings/Force external users to accept sharing invitations with the same account/README.md new file mode 100644 index 00000000..c0363ce1 --- /dev/null +++ b/Tenant Settings/Force external users to accept sharing invitations with the same account/README.md @@ -0,0 +1,36 @@ +Short PowerShell script to force external users to accept sharing invitations with the same account that the invitations were sent to. The script uses CSOM, tenant object property RequireAcceptingAccountMatchInvitedAccount, and requires SharePoint Online SDK. + +It is one of the 3 additional settings: + +- Limit external sharing using domains +- Prevent external users from sharing files, folders, and sites that they don’t own +- External users must accept sharing invitations using the same account that the invitations were sent to + + + + +The script is related to and more described in a Wiki article [SharePoint Online Sharing settings with CSOM](https://social.technet.microsoft.com/wiki/contents/articles/39365.sharepoint-online-sharing-settings-with-csom). + + + +### How to use? + +- Download and open the .ps1 file. +- Add correct libraries: + + +```PowerShell +#Paths to SDK +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\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` +- Enter the correct url and admin login: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$RequireAcceptingAccountMatchInvitedAccount=$true +``` +- Run the script From 0982d8f882c5efa091362afc2b5d499b9a9d0681 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:42:20 +0300 Subject: [PATCH 100/312] Create README.md --- .../README.md | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Tenant Settings/Globally set OneDrive for Business Access Requests and Members Can Share/README.md diff --git a/Tenant Settings/Globally set OneDrive for Business Access Requests and Members Can Share/README.md b/Tenant Settings/Globally set OneDrive for Business Access Requests and Members Can Share/README.md new file mode 100644 index 00000000..7a13599f --- /dev/null +++ b/Tenant Settings/Globally set OneDrive for Business Access Requests and Members Can Share/README.md @@ -0,0 +1,44 @@ +Short Powershell script that modifies the following settings on every user's OneDrive for Business: + + + + + +On- Users with edit permissions can re-share. + +Off- Only OneDrive for Business owner can share. The value of ODBAccessRequestsdefines whether a request to share gets sent to the owner. + +Unspecified- Let each OneDrive for Business owner enable or disable re-sharing behavior on their OneDrive. + + + + + +The script is part of Technet Wiki article OneDrive for Business sharing settings with Powershell. + +## How to use? +Download and open the .ps1 file. +Add correct SharePoint Online SDK libraries: + + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` Enter the correct url, the setting for the sync button, and admin login. You will be additionally prompted for the password. Do not enter it in the file: +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$ODBMembersCanShare="On" # On, Off, Unspecified +$ODBAccessRequests="Unspecified" #On, Off, Unspecified +``` + + + Run the script + + + + + From 620ed2030c6e1b399a8a1ec1b93ded8059ae48c2 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:44:58 +0300 Subject: [PATCH 101/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md diff --git a/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md @@ -0,0 +1 @@ +. From c6ccf6da08a7ee4a50ca5e9271aa611bd05d89ac Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:45:19 +0300 Subject: [PATCH 102/312] Update description.md --- .../description.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/description.md b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/description.md index d2189e8a..0255174e 100644 --- a/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/description.md +++ b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/description.md @@ -1,10 +1,7 @@ Short Powershell script that hides Sync button in OneDrive for Business for all users. - - The script uses CSOM and requires SharePoint Online SDK. - This button will be removed with the script: From 56f587da25147ae1f7306bb59bf9faeda3ccd07e Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:45:24 +0300 Subject: [PATCH 103/312] Update README.md --- .../README.md | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md index 9c558e35..d2189e8a 100644 --- a/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md +++ b/Tenant Settings/Hide OneDrive for Business Sync button using PS and CSOM/README.md @@ -1 +1,34 @@ -. +Short Powershell script that hides Sync button in OneDrive for Business for all users. + + + +The script uses CSOM and requires SharePoint Online SDK. + + + +This button will be removed with the script: + + + +### How to use? +- Download and open the ```.ps1``` file. +- Add correct SharePoint Online SDK libraries: + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` + +- Enter the correct url, the setting for the sync button, and admin login. You will be additionally prompted for the password. Do not enter it in the file: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="arleta@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$HideSyncButtonOnODB=$true #Whether the sync button should be hidden +``` + +- Run the script + From 63080fbf57e6f3ac0f414ddc0247c8cb2de1acda Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:46:06 +0300 Subject: [PATCH 104/312] Create README.md --- Tenant Settings/Modify external sharing setting/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tenant Settings/Modify external sharing setting/README.md diff --git a/Tenant Settings/Modify external sharing setting/README.md b/Tenant Settings/Modify external sharing setting/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Tenant Settings/Modify external sharing setting/README.md @@ -0,0 +1 @@ +. From 405846ac4200240355634dd453cb2819cbf9bc02 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:46:23 +0300 Subject: [PATCH 105/312] Update description.md --- Tenant Settings/Modify external sharing setting/description.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Tenant Settings/Modify external sharing setting/description.md b/Tenant Settings/Modify external sharing setting/description.md index 6c4018ca..5151383b 100644 --- a/Tenant Settings/Modify external sharing setting/description.md +++ b/Tenant Settings/Modify external sharing setting/description.md @@ -23,4 +23,3 @@ $Url="https://TENANT-admin.sharepoint.com" $SharingCapability="Disabled" # Disabled, ExternalUserSharingOnly, ExternalUserAndGuestSharing, ExistingExternalUserSharingOnly ``` - Run the script - From 8643276fd68322bc52903b35d4e8ff947a78f08c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:46:28 +0300 Subject: [PATCH 106/312] Update README.md --- .../Modify external sharing setting/README.md | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Tenant Settings/Modify external sharing setting/README.md b/Tenant Settings/Modify external sharing setting/README.md index 9c558e35..5151383b 100644 --- a/Tenant Settings/Modify external sharing setting/README.md +++ b/Tenant Settings/Modify external sharing setting/README.md @@ -1 +1,25 @@ -. +Short Powershell script sets the external sharing setting in SharePoint Online and controls how users share content with people outside the organization. + +It sets sharing outside the organization using CSOM to Disabled, ExternalUserSharingOnly, ExternalUserAndGuestSharing, or ExistingExternalUserSharingOnly. +It requires SharePoint Online SDK. + +The script is part of and more described in a TechNet Wiki [SharePoint Online Sharing settings with CSOM](https://social.technet.microsoft.com/wiki/contents/articles/39365.sharepoint-online-sharing-settings-with-csom.aspx?Sort=MostRecent&PageIndex=1) article. + +## How to use? +- Download and open the .ps1 file. +- Add correct libraries: + +```PowerShell +#Paths to SDK +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\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` +- Enter the correct url and admin login: +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$SharingCapability="Disabled" # Disabled, ExternalUserSharingOnly, ExternalUserAndGuestSharing, ExistingExternalUserSharingOnly +``` +- Run the script From 92f76901297185f41cb7ebfbf3c82cdf165440ef Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:46:54 +0300 Subject: [PATCH 107/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md diff --git a/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md b/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md @@ -0,0 +1 @@ +. From 28af30b6b56cd9220beeb63bcf549a8bc46d7f91 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:47:11 +0300 Subject: [PATCH 108/312] Update README.md --- .../README.md | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md b/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md index 9c558e35..09e4549a 100644 --- a/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md +++ b/Tenant Settings/Notify OneDrive for Business owner if anonymous link to their content is created/README.md @@ -1 +1,28 @@ -. +Short Powershell script that enables or disables a setting to send emails to OneDrive for Business owners when someone creates an anonymous link to the ODB owner's content. + +It uses CSOm and requires SharePoint Online SDK. The script is part of and more explained in a Technet Wiki article: +[OneDrive for Business notification settings with Powershell](https://social.technet.microsoft.com/wiki/contents/articles/39385.onedrive-for-business-notifications-with-powershell.aspx) + + +## How to use? + +- Download and open the .ps1 file. +- Add correct libraries: + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` + +- Enter the correct url and admin login: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$OwnerAnonymousNotification=$true #Whether ODB owner should be notified when anonymous link is created or changed + ``` + +- Run the script From 78b5abde58f171525a515ef24be139eb7919eeb8 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:48:16 +0300 Subject: [PATCH 109/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md diff --git a/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md b/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md @@ -0,0 +1 @@ +. From 9ed92cf9dad138204ef22fe9e0c57f3b58e4d158 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:48:31 +0300 Subject: [PATCH 110/312] Update README.md --- .../README.md | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md b/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md index 9c558e35..a7c3e28e 100644 --- a/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md +++ b/Tenant Settings/Notify OneDrive for Business owner if their content is reshared/README.md @@ -1 +1,28 @@ -. +Short Powershell script that enables or disables a setting to send emails to OneDrive for Business owners when someone further shares the ODB owner's content with external users. + +It uses CSOM and requires SharePoint Online SDK. The script is part of and more explained in a Technet Wiki article: + +[OneDrive for Business notification settings with Powershell](https://social.technet.microsoft.com/wiki/contents/articles/39385.onedrive-for-business-notifications-with-powershell.aspx) + +## How to use? + +- Download and open the .ps1 file. +- Add correct libraries: + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` + +- ter the correct url and admin login: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" +$NotifyOwnersWhenItemsReshare=$true #Whether ODB owner should be notified the content is reshared with external users +``` + +- Run the script From fac46efebeff1c47bfb49a4c24a88d9646d46502 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 22 Aug 2020 21:48:40 +0300 Subject: [PATCH 111/312] Update description.md From e2893167bf77b94dc8b5eeb11c551fb6b53453da Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 24 Aug 2020 17:11:59 +0300 Subject: [PATCH 112/312] Create README.md --- .../Export all user profiles using Powershell/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 User Profiles/Export all user profiles using Powershell/README.md diff --git a/User Profiles/Export all user profiles using Powershell/README.md b/User Profiles/Export all user profiles using Powershell/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/User Profiles/Export all user profiles using Powershell/README.md @@ -0,0 +1 @@ +. From 1572d67f37195845cae02e2f1a6875079daa9f5d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:03:55 +0300 Subject: [PATCH 113/312] Update README.md --- .../README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Items Management/Attachments/Copy all SharePoint Online list item attachments/README.md b/Items Management/Attachments/Copy all SharePoint Online list item attachments/README.md index 5fffbeac..f1006081 100644 --- a/Items Management/Attachments/Copy all SharePoint Online list item attachments/README.md +++ b/Items Management/Attachments/Copy all SharePoint Online list item attachments/README.md @@ -4,7 +4,7 @@ Powershell script retrieves all the item attachments from a SharePoint list and In order to use the script, you need to enter your data in the downloaded file: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -15,7 +15,7 @@ $Url = "https://etr56.sharepoint.com" $ListTitle = "attatest" $CSVPath = "C:\Users\Public\attachmentsreport.csv" $DestinationLibraryFullPath = "/test/AttachmentsFromAtta" - + ``` Examples of $DestinationLibraryFullPath: e.g. "/sites/powie4/Destiny2/" where powie4 is the name of the site collection and Destiny2 is the name of the library From 0de46882589b8095e6ec63f3773522397eb8f4b7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:05:39 +0300 Subject: [PATCH 114/312] Create README.md --- .../Copy list attachments to a separate library/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Items Management/Attachments/Copy list attachments to a separate library/README.md diff --git a/Items Management/Attachments/Copy list attachments to a separate library/README.md b/Items Management/Attachments/Copy list attachments to a separate library/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Items Management/Attachments/Copy list attachments to a separate library/README.md @@ -0,0 +1 @@ +. From 715866a62477e68a1124f9483ed20d29eca15f7d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:06:14 +0300 Subject: [PATCH 115/312] Update README.md --- .../README.md | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/Items Management/Attachments/Copy list attachments to a separate library/README.md b/Items Management/Attachments/Copy list attachments to a separate library/README.md index 9c558e35..39764f7b 100644 --- a/Items Management/Attachments/Copy list attachments to a separate library/README.md +++ b/Items Management/Attachments/Copy list attachments to a separate library/README.md @@ -1 +1,46 @@ -. +# Description +The following script copies list attachments to another library within the same site. + + + +# Scenario: + +List with attachments: + + + +sometimes several attachments per item: + + + +The attachments are to be copied to another library: + + + +# Requirements +The script requires SharePoint Online SDK. + +# How to use? +1. Download and open the file. + +2. Enter correct paths to the SDK: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +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" +``` +3. Enter credentials and list data and save the file: + +```PowerShell +Connect-SPOCSOM -Username "user@tenant.onmicrosoft.com" -Url "https://tenant.sharepoint.com/sites/powie4" + + Get-SPOListItems -ListTitle withatt -IncludeAllProperties $true -Recursive -DestinationLibrary "/sites/powie4/Destiny2/" -Overwrite $true +``` + 4. Run it in Powershell. + + +

+ +Enjoy and please share feedback! + From fb0da94191e68821239aa814d37774033fe8bd9c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:06:33 +0300 Subject: [PATCH 116/312] Update description.md --- .../Copy list attachments to a separate library/description.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Items Management/Attachments/Copy list attachments to a separate library/description.md b/Items Management/Attachments/Copy list attachments to a separate library/description.md index c9e497d5..6280da17 100644 --- a/Items Management/Attachments/Copy list attachments to a separate library/description.md +++ b/Items Management/Attachments/Copy list attachments to a separate library/description.md @@ -43,6 +43,3 @@ Connect-SPOCSOM -Username "user@tenant.onmicrosoft.com" -Url "https://tenant.sha

Enjoy and please share feedback! - -Enjoy and please share feedback! - From b1c26b2cf8a3f383d4f84a1971281ef4d86308df Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:07:13 +0300 Subject: [PATCH 117/312] Create README.md --- .../README.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md diff --git a/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md b/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md new file mode 100644 index 00000000..302b1fad --- /dev/null +++ b/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md @@ -0,0 +1,43 @@ +Test the script before usage. + + + +Maybe other scripts will be more applicable to your requirements: + +Copy all SharePoint Online list item attachments to a SPO library + +Get the size of all attachments in SharePoint Online list + +List all attachments from SharePoint Online list to CSV file + + + + + +In order to use the script, you need to modify the downloaded file: + +PowerShell + for($k=0; $k -lt $itemAttachments.Count; $k++) + { + #deletes the attachment file. Uncomment it only if you are absolutely sure you want to lose this data. + #$itemAttachments[$k].DeleteObject() + try + { + + +PowerShell +# Paths to SDK. Please verify location on your computer. +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" + +#Please enter your data +$Username = "ana@etr56.onmicrosoft.com" +$Url = "https://etr56.sharepoint.com" +$ListTitle = "attatest" +$CSVPath = "C:\Users\Public\attachmentsreport.csv" + + + + + + From 1a900014631d5fdd3592ac00b2a5191e5e2f566a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:08:18 +0300 Subject: [PATCH 118/312] Update README.md --- .../README.md | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md b/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md index 302b1fad..8d47f141 100644 --- a/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md +++ b/Items Management/Attachments/Delete all your list attachments (data loss involved)/README.md @@ -4,28 +4,26 @@ Test the script before usage. Maybe other scripts will be more applicable to your requirements: -Copy all SharePoint Online list item attachments to a SPO library + * Copy all SharePoint Online list item attachments to a SPO library -Get the size of all attachments in SharePoint Online list + * Get the size of all attachments in SharePoint Online list -List all attachments from SharePoint Online list to CSV file + * List all attachments from SharePoint Online list to CSV file - - - + In order to use the script, you need to modify the downloaded file: -PowerShell +```PowerShell for($k=0; $k -lt $itemAttachments.Count; $k++) { #deletes the attachment file. Uncomment it only if you are absolutely sure you want to lose this data. #$itemAttachments[$k].DeleteObject() try { - +``` -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -35,9 +33,4 @@ $Username = "ana@etr56.onmicrosoft.com" $Url = "https://etr56.sharepoint.com" $ListTitle = "attatest" $CSVPath = "C:\Users\Public\attachmentsreport.csv" - - - - - - + ``` From 0aa33a148d2c8ebc4ee3b7c906cb7c5beb529898 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:09:19 +0300 Subject: [PATCH 119/312] Create README.md --- .../README.md | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 Items Management/Attachments/Disable or enable attachments to list items/README.md diff --git a/Items Management/Attachments/Disable or enable attachments to list items/README.md b/Items Management/Attachments/Disable or enable attachments to list items/README.md new file mode 100644 index 00000000..6e93a62e --- /dev/null +++ b/Items Management/Attachments/Disable or enable attachments to list items/README.md @@ -0,0 +1,49 @@ +Want to keep your lists tidy? Saving space?? This is a solution for you! Looking for a quick way to restore the option for all lists? +
**This is also a solution for you! :)** + + +Want to keep your lists tidy? Saving space? Do you want to prevent users from adding unnecessary attachments to the list because their place belongs elsewhere? +This is a solution for you! +Or maybe you already disabled the feature? For some of the lists - for some not, and now you are looking for a quick way to restore the option for all lists? + +This is also a solution for you! :) + + + + + + +
**This is also a solution for you! :)** + + +```Powershell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and the desired setting: $true or $false +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$Attachments=$false + + + + +Set-SPOListsAttachments -Username $Username -AdminPassword $AdminPassword -Url $Url -Attachments $Attachments +``` + + +For full description please refer here to the [Wiki Article](https://social.technet.microsoft.com/wiki/contents/articles/30024.sharepoint-online-disable-or-enable-attachments-to-list-items-using-powershell.aspx) + + + +

+Enjoy and please share feedback! + +**Related scripts**
+[Set direction of the reading order for a single list](https://gallery.technet.microsoft.com/office/Set-the-direction-of-the-f17ca66a) + +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + +[Allow or disallow your users to create folders in SPO lists](https://gallery.technet.microsoft.com/scriptcenter/Allow-or-disallow-your-20f7b44a) From e09416817ca1789992d2c6d46516a0af886ebac6 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 27 Aug 2020 19:09:43 +0300 Subject: [PATCH 120/312] Update description.md --- .../Disable or enable attachments to list items/description.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Items Management/Attachments/Disable or enable attachments to list items/description.md b/Items Management/Attachments/Disable or enable attachments to list items/description.md index 6e93a62e..e6845432 100644 --- a/Items Management/Attachments/Disable or enable attachments to list items/description.md +++ b/Items Management/Attachments/Disable or enable attachments to list items/description.md @@ -9,8 +9,6 @@ Or maybe you already disabled the feature? For some of the lists - for some not, This is also a solution for you! :) - -
**This is also a solution for you! :)** From 519a57420d50bfc21636c2cca704a48c484d023e Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:44:52 +0300 Subject: [PATCH 121/312] Create README.md --- .../README.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 File Management/Add thousands of documents to your SPO library/README.md diff --git a/File Management/Add thousands of documents to your SPO library/README.md b/File Management/Add thousands of documents to your SPO library/README.md new file mode 100644 index 00000000..0bf3a730 --- /dev/null +++ b/File Management/Add thousands of documents to your SPO library/README.md @@ -0,0 +1,55 @@ +The application is mainly for SharePoint Online test environments. + +It creates mock data for a library of your choice so that you can test synchronization and SharePoint Online performance. + +It creates: + +-Word Documents with random content from Latin texts + +-Excel Spreadsheets with random number of Sheets but no content + +-PowerPoint presentations + +-files that will be corrupt (as said above, for testing purposes) + + + +You can create unlimited* number of items. Of course the more items you choose, the longer it will run. Depending on your environment, it creates 100 documents per 20seconds. + + + +Works for OneDrive for Business as well. + + + + + The code wouldn't exist without: + +http://msdn.microsoft.com/en-us/library/office/cc850834(v=office.15).aspx + +http://sharepoint.stackexchange.com/questions/121904/create-a-document-in-sharepoint-online-using-csom + + + + + + *SPO view threshold 5000 items +SPO sync limit : 20 000 items +Feel free to create more if you want to test the errrors. +EDIT +It seems like the application is not completely stable. In a given environment, a given tenant may give an error. Another tenant will not. The error tenant will run in a different environment. It seems to be connected to mapped network drives. I will add some error handling and will upload a more stable version. +EDIT2 +Uploaded a corrected version. Will remove the edits when I have confirmation that the version is stable on all tenants. + + + + + + + + + + + +

+Enjoy and please share feedback! From 5b514cc705d7e94f3e3ffbec254c222838912017 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:46:36 +0300 Subject: [PATCH 122/312] Create README.md --- .../Audit SharePoint Online folder structure to XML/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md diff --git a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md @@ -0,0 +1 @@ +. From 964f325b5288332b9161bf66e4dfa25d8131e4f0 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:47:10 +0300 Subject: [PATCH 123/312] Update description.md --- .../description.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/description.md b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/description.md index 19bc143f..e67acbac 100644 --- a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/description.md +++ b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/description.md @@ -24,7 +24,7 @@ Sample results: IN order to use the script, you need to enter your data at the bottom of the file: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" @@ -38,6 +38,4 @@ $libraryTitle="test" $script:XMLPath = "C:\Users\Public\foolders2.xml" #Enter your data above! - - - + ``` From f4cbe61348f90d6ccebd6b03b561d37647e2953b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:47:12 +0300 Subject: [PATCH 124/312] Update README.md --- .../README.md | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md index 9c558e35..bb515d36 100644 --- a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md +++ b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md @@ -1 +1,43 @@ -. +SharePoint Online has a lot of options allowing you to organize your files. Some of them really amazing. Folders aren't necessarily one of them. + +But once you have used them and your users happily created unstructured, repeating, unrecoverable mess, you may want to audit them and find out if you can reorganize or save the day in some other way. + + + +This Powershell script allows you to investigate into your folder structure and creates an XML file as a report. It adds name, number of subfolders, itemcount and serverrelativeurl as attributes. You can remove some or all of these attributes by modifying the script. + +There is also another, very similar version without the attributes available here: Audit folder structure to XML. + +Sample results: + + + + + + + + + + + + + +IN order to use the script, you need to enter your data at the bottom of the file: + +```PowerShell +# Paths to SDK. Please verify location on your computer. + +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" + + +# Enter your data +$admin="ana@etr56.onmicrosoft.com" +$site="https://etr56.sharepoint.com" +$libraryTitle="test" +$script:XMLPath = "C:\Users\Public\foolders2.xml" +#Enter your data above! + + ``` + + From 5d28e078dd62c248e9917977fd66dbe6eeb7b32d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:48:44 +0300 Subject: [PATCH 125/312] Create README.md --- .../README.md | 228 ++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 Workflows/Get workflow report for a site collection/README.md diff --git a/Workflows/Get workflow report for a site collection/README.md b/Workflows/Get workflow report for a site collection/README.md new file mode 100644 index 00000000..75d3f32e --- /dev/null +++ b/Workflows/Get workflow report for a site collection/README.md @@ -0,0 +1,228 @@ +Powershell script. Creates a .csv file with a report on all workflows in a site collection. + + + +Before you run the script, open .ps1 file and edit all necessary information: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site collection and the path where the report should be saved. +$Username="2190@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Url="https://tenant.sharepoint.com" +$CSVpath="C:\testpath.csv" +``` + + +As the script runs you will see how many workflows each list has: + + + + + + + + + + + +### Sample report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation                       
Site UrlList TitleAllowManualAssociationDataAutoStartChangeAutoStartCreateBaseIdCreatedDescriptionEnabledHistoryListTitleIdInstantiationUrlInternalNameIsDeclarativeListIdModifiedNameTaskListTitleWebIdContextTagPathObjectVersionServerObjectIsNullTypedObject
https://tenant.sharepoint.comDocumentsTrue<dfs:myFields xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields" + xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields" xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes" xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dfs:queryFields></dfs:queryFields><dfs:dataFields><d:SharePointListItem_RW><d:Approvers><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta + Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage + xsi:nil="true" /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment></d:Approvers><d:ExpandGroups>true</d:ExpandGroups><d:NotificationMessage>hf</d:NotificationMessage><d:DueDateforAllTasks xsi:nil="true" + /><d:DurationforSerialTasks xsi:nil="true" /><d:DurationUnits>Day</d:DurationUnits><d:CC /><d:CancelonRejection>false</d:CancelonRejection><d:CancelonChange>false</d:CancelonChange><d:EnableContentApproval>false</d:EnableContentApproval></d:SharePointListItem_RW></dfs:dataFields></dfs:myFields>FalseFalse8ad4d8f0-93a7-4941-9657-cf3706f00409########Routes a document for approval. Approvers can approve or reject the document, reassign the approval task, or request changes to the document.TrueWorkflow Historye76e75fe-1622-4c26-a5fa-7e6178c61ae9_layouts/15/IniWrkflIP.aspxoo
+
+<Cfg.d3a8e0e9_03da_4f32_99c9_f778c1d5d560.4.512.>
True19e3d565-15c5-4a89-b95a-626b48ff0bcc########ooTask List with 14 elementsb05b85f0-c7fe-4646-ac41-4fde2db44f3bMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/nowanowaSite PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow History139a534e-abe6-4862-b19e-895eac1e0cbcmjyfFalsec6e865a5-b992-4a51-ba25-9ecd76ba336f########mjyfTasks0a2bec62-9fd7-44a4-b1bb-eacc553b3cd2Microsoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/newSiteCollectionDocumentsTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historye9dd54d1-27db-4ca9-8a84-6266ab3e824fapp2False62a23f97-fe21-4142-b485-9805474162b1########app2Tasks051be499-7633-4837-a3d6-68fc68ca0bcbMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/vs20072153Site PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc7cd1221-4dd7-4e0c-953b-aee71519116buoiioFalse545e45b7-6c2d-4378-9d23-cd08acf7ce19########uoiioTasksd7275f5e-6ec5-4f67-a817-dc3d694027edMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/TeamsitewithListsGeneric List With GeolocationColumnFalse TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc0d62395-f5b7-4f90-9d73-b7456017e00capprovalFalsed21515ce-2ec4-43c2-8f43-3150520b32f0########approvalTasks list9a105d7e-03c9-4561-acbf-5226c71f9babMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
From ee2fa2ce5c2349d4f3c73c2aeb35239e7a2c2443 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:49:39 +0300 Subject: [PATCH 126/312] Update README.md --- .../Audit SharePoint Online folder structure to XML/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md index bb515d36..62b4c990 100644 --- a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md +++ b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md @@ -11,7 +11,7 @@ There is also another, very similar version without the attributes available her Sample results: - + From 9bafc6d46e85fca6c9b3e5deee2edc33d9e4baff Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:51:30 +0300 Subject: [PATCH 127/312] Update README.md --- .../Audit SharePoint Online folder structure to XML/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md index 62b4c990..64a4a04e 100644 --- a/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md +++ b/File Management/Audit folder structure/Audit SharePoint Online folder structure to XML/README.md @@ -11,7 +11,7 @@ There is also another, very similar version without the attributes available her Sample results: - + From 366c6bf30ce4fea4617c88d9cc8a104cd8b1b299 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:54:03 +0300 Subject: [PATCH 128/312] Create README.md --- .../README.md | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md diff --git a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md new file mode 100644 index 00000000..a0b176ba --- /dev/null +++ b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md @@ -0,0 +1,39 @@ +SharePoint Server has a lot of options allowing you to organize your files. Some of them really amazing. Folders aren't necessarily one of them. + +But once you have used them and your users happily created unstructured, repeating, unrecoverable mess, you may want to audit them and find out if you can reorganize or save the day in some other way. + +The audit may come in handy during migration, upgrades or company restructuring. + + + +This Powershell script allows you to investigate into your folder structure in a single library and creates an XML file as a report. + + + + + + + +In order to use the script you need to modify the following lines: + + + + + +PowerShell +# Paths to SDK. Please verify location on your computer. + +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" + + +# Enter your data +$admin="CORPO\Admini5" +$site="https://etr56.corpo.com" +$libraryTitle="test" +$script:XMLPath = "C:\Users\Public\foldersAudit.xml" +#Enter your data above! + + + + From a47d3f368e982fae5f5ae495168fbe7725e6e3cb Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:54:20 +0300 Subject: [PATCH 129/312] Update README.md --- .../Audit Sharepoint folder structure to XML/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md index a0b176ba..e0ca0858 100644 --- a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md +++ b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/README.md @@ -20,7 +20,7 @@ In order to use the script you need to modify the following lines: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" @@ -34,6 +34,6 @@ $libraryTitle="test" $script:XMLPath = "C:\Users\Public\foldersAudit.xml" #Enter your data above! - + ``` From 7260e75b0f930cecbfbf1fc386fd7bfca22e5375 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 28 Aug 2020 15:54:32 +0300 Subject: [PATCH 130/312] Update description.md --- .../Audit Sharepoint folder structure to XML/description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md index a0b176ba..d38127c4 100644 --- a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md +++ b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md @@ -20,7 +20,7 @@ In order to use the script you need to modify the following lines: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" @@ -34,6 +34,6 @@ $libraryTitle="test" $script:XMLPath = "C:\Users\Public\foldersAudit.xml" #Enter your data above! - +``` From 6d44e1171d11f133a117199dbfd7bae3a1798456 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 29 Aug 2020 21:26:59 +0300 Subject: [PATCH 131/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md diff --git a/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md @@ -0,0 +1 @@ +. From 326e6c1aa702369659ba062efdbb7e09eee562c3 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 29 Aug 2020 21:29:48 +0300 Subject: [PATCH 132/312] Update README.md --- .../README.md | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md index 9c558e35..9c0b4845 100644 --- a/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md +++ b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/README.md @@ -1 +1,19 @@ -. +Powershell module with Get-SPOObject cmdlet to retrieve SharePoint Online objects, such as + +lists +content types +fields/columns +alerts +event receivers +features +site groups +users +workflow associations +The cmdlet in the module offers help with choosing the objects. Just use TAB after -object parameter and you will see possible options. That also means that the retrieval is limited to those options. If you are looking for a less restricted solution, please check out: + +[Module for getting SharePoint Online objects with Powershell](https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/readmeBranch/Getting%20SPO%20objects%20with%20REST/Module%20for%20getting%20SharePoint%20Online%20objects%20with%20Powershell) + +and + +[Module for getting SharePoint Online objects with Powershell (unrestricted)](https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/readmeBranch/Getting%20SPO%20objects%20with%20REST/Unrestricted%20Module) + From a0820c5dc89fdba81f7b871855b46f9a63fd834d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 29 Aug 2020 21:30:06 +0300 Subject: [PATCH 133/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/description.md b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/description.md index 1b1d1b7c..9c0b4845 100644 --- a/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/description.md +++ b/Getting SPO objects with REST/Module for getting SharePoint objects with Powershell (limited)/description.md @@ -11,9 +11,9 @@ users workflow associations The cmdlet in the module offers help with choosing the objects. Just use TAB after -object parameter and you will see possible options. That also means that the retrieval is limited to those options. If you are looking for a less restricted solution, please check out: -Module for getting SharePoint Online objects with Powershell +[Module for getting SharePoint Online objects with Powershell](https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/readmeBranch/Getting%20SPO%20objects%20with%20REST/Module%20for%20getting%20SharePoint%20Online%20objects%20with%20Powershell) and -Module for getting SharePoint Online objects with Powershell (unrestricted) +[Module for getting SharePoint Online objects with Powershell (unrestricted)](https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/readmeBranch/Getting%20SPO%20objects%20with%20REST/Unrestricted%20Module) From 1e29035ab4967ebceab3e08cd4cbdb17e18b01d5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 30 Aug 2020 01:18:46 +0300 Subject: [PATCH 134/312] Update README.md --- .../README.md | 106 +++++++++++++++++- 1 file changed, 105 insertions(+), 1 deletion(-) diff --git a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md index 9c558e35..e1ee1f26 100644 --- a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md +++ b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md @@ -1 +1,105 @@ -. +Short script to retrieve SharePoint Online objects, such as + +lists +content types +fields/columns +alerts +event receivers +features +site groups +users +workflow associations + + + + +How does it work? +Open the file, enter your tenant's data: + + + +PowerShell + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@t321.onmicrosoft.com" +$Url="https://t321.sharepoint.com/standard" +$object="lists" + + + +$object refers to object you want to retrieve. Example objects are: + +lists +contenttypes +availablefields +alerts +eventreceivers +features +sitegroups +siteusers +workflowassociations +but you can also use anything that would work with the REST api in the browser, such as : + +lists/getbytitle('biblioteka') +"" (empty string to retrieve the web object properties) +allproperties +lists/getbytitle('biblioteka')/files + + +You will be asked for password during execution. Do not enter your password in the file. + + + +Then you can modify the last cmdlet: + + + +PowerShell +Get-SPOObject -Username $username -Url $Url -password $AdminPassword -object $object + + + +To retrieve whatever you need in a friendly and familiar Powershell fashion, e.g.: + + + +PowerShell +Get-SPOObject -Username $username -Url $Url -password $AdminPassword -object "lists" | select title + +PowerShell +Get-SPOObject -Username t@t321.onmicrosoft.com -password $password -url https://t321.sharepoint. +com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | select Name, +CreatedBy + + + + + +The script can serve to pull all kinds of data from SharePoint Online in an admin-friendly Powershell way and can help deliver this data in a report form: + + + +```PowerShell +Get-SPOObject -Username t@t321.onmicrosoft.com -password $password -url https://t321.sharepoint. +com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | export-csv c:\MyReport.csv +``` + + + + + + +If you plan on using it more often, I recommend a module with a cmdlet that serves the same purpose. After importing the module, a cmdlet can be reused multiple times directly from Shell and is generally faster than executing script every time we need to pull data. + +You can find the REST module in 3 versions: + +- one with suggestions, limited but helpful when you are starting and don't know what your options are + +- 2nd for users who have idea about REST and will be able to define their objects within web without any hints (most recommended) + +- 3rd one free-style allowing you to pull anything under /_api/ so not only web but also site objects + + + + From 4b2a7768807351695d91edbd8f7e3b9053f82708 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 30 Aug 2020 01:19:44 +0300 Subject: [PATCH 135/312] Update README.md --- .../README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md index e1ee1f26..98ed35e3 100644 --- a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md +++ b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md @@ -55,23 +55,22 @@ Then you can modify the last cmdlet: -PowerShell +```PowerShell Get-SPOObject -Username $username -Url $Url -password $AdminPassword -object $object - + ``` To retrieve whatever you need in a friendly and familiar Powershell fashion, e.g.: -PowerShell +```PowerShell Get-SPOObject -Username $username -Url $Url -password $AdminPassword -object "lists" | select title - -PowerShell + ``` +```PowerShell Get-SPOObject -Username t@t321.onmicrosoft.com -password $password -url https://t321.sharepoint. -com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | select Name, -CreatedBy - +com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | select Name, CreatedBy + ``` @@ -81,8 +80,7 @@ The script can serve to pull all kinds of data from SharePoint Online in an admi ```PowerShell -Get-SPOObject -Username t@t321.onmicrosoft.com -password $password -url https://t321.sharepoint. -com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | export-csv c:\MyReport.csv +Get-SPOObject -Username t@t321.onmicrosoft.com -password $password -url https://t321.sharepoint.com/standard -object "lists/getbytitle('biblioteka')/files" | where {$_.CreatedBy.Name -eq "Ana Trial"} | export-csv c:\MyReport.csv ``` From 13981245647a10949804dd4bfed34eb7735fca89 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 30 Aug 2020 01:20:33 +0300 Subject: [PATCH 136/312] Update README.md --- .../Script to get SharePoint objects with REST/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md index 98ed35e3..7e000a8e 100644 --- a/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md +++ b/Getting SPO objects with REST/Script to get SharePoint objects with REST/README.md @@ -18,14 +18,14 @@ Open the file, enter your tenant's data: -PowerShell +```PowerShell #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="t@t321.onmicrosoft.com" $Url="https://t321.sharepoint.com/standard" $object="lists" - + ``` $object refers to object you want to retrieve. Example objects are: From 7bd9aa7971756757b0c2961e3b59ab5e904d8d7d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 8 Sep 2020 20:28:41 +0300 Subject: [PATCH 137/312] Create README.md --- File Management/Get SPO Files from a folder/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Get SPO Files from a folder/README.md diff --git a/File Management/Get SPO Files from a folder/README.md b/File Management/Get SPO Files from a folder/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Get SPO Files from a folder/README.md @@ -0,0 +1 @@ +. From c44dc6668661e886bc17ac341861797d5928b31f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 9 Sep 2020 21:46:12 +0300 Subject: [PATCH 138/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md diff --git a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md @@ -0,0 +1 @@ +. From 6c816bdef34e5b108968b991982b91000e66fd5e Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 9 Sep 2020 21:47:56 +0300 Subject: [PATCH 139/312] Update description.md --- .../description.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/description.md b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/description.md index e4bc0298..87686426 100644 --- a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/description.md +++ b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/description.md @@ -2,33 +2,33 @@ A module with new cmdlets for Taxonomy written in an easily-modifiable Powershel -### The cmdlets include: + ### The cmdlets include: -### New-SPOTerm + New-SPOTerm -### Get-SPOTermGroups + Get-SPOTermGroups -### Get-SPOTermSets + Get-SPOTermSets -### Get-SPOTermStore + Get-SPOTermStore -### Get-SPOHashTagsTermSet + Get-SPOHashTagsTermSet -### Get-SpoHashTagsTerms + Get-SpoHashTagsTerms -### Get-SPOKeyWordsTermSet + Get-SPOKeyWordsTermSet -### New-SPOTermGroup + New-SPOTermGroup -### Set-SPOTermGroup + Set-SPOTermGroup -### New-SPOTermSet + New-SPOTermSet -### Set-SPOTermSet + Set-SPOTermSet -### Get-SPOTerm + Get-SPOTerm -### Connect-SPOCSOM + Connect-SPOCSOM From 318ce67416e0aff4553b9ddc4bf0e90cb46bb55c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 9 Sep 2020 21:48:18 +0300 Subject: [PATCH 140/312] Update README.md --- .../README.md | 94 ++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md index 9c558e35..87686426 100644 --- a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md +++ b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/README.md @@ -1 +1,93 @@ -. +A module with new cmdlets for Taxonomy written in an easily-modifiable Powershell file + + + + ### The cmdlets include: + + New-SPOTerm + + Get-SPOTermGroups + + Get-SPOTermSets + + Get-SPOTermStore + + Get-SPOHashTagsTermSet + + Get-SpoHashTagsTerms + + Get-SPOKeyWordsTermSet + + New-SPOTermGroup + + Set-SPOTermGroup + + New-SPOTermSet + + Set-SPOTermSet + + Get-SPOTerm + + Connect-SPOCSOM + + + +Exact syntax and cmdlet descriptions with examples will be available here at [SharePoint Online SPOMod cmdlets & resources.](https://social.technet.microsoft.com/wiki/contents/articles/32334.sharepoint-online-spomod-cmdlets-resources.aspx) + +One of the cmdlets: + + + +```PowerShell + function New-SPOTermSet + { + param( + [Parameter(ParameterSetName="ByName",Mandatory=$true)] + [string]$TermGroupName="", + [Parameter(ParameterSetName="ByID",Mandatory=$true)] + [string]$TermGroupID="", + [Parameter(ParameterSetName="ByGroup",Mandatory=$true,ValueFromPipeline=$true)] + $TermGroup="", + [Parameter(Mandatory=$true)] + [string]$TermSetName, + [Parameter(Mandatory=$false)] + [int]$LanguageID=1033, + [Parameter(Mandatory=$false)] + $GUID="" + + ) + + BEGIN{ + $session = [Microsoft.SharePoint.Client.Taxonomy.TaxonomySession]::GetTaxonomySession($ctx) + $ctx.Load($session) + $ctx.ExecuteQuery() + + } + PROCESS{ + $termstore = $session.GetDefaultSiteCollectionTermStore() + if($TermGroupName -ne "") + { $group=$termstore.Groups.GetByName($TermGroupName)} + elseif($TermGroupID -ne "") + { $group=$termstore.Groups.GetById($TermGroupID)} + elseif($group -ne "") + { + $group=$TermGroup + } + else + { + Write-Host "Could not retrieve the group. Missing parameters" + } + + $ctx.Load($group) + $ctx.Load($group.TermSets) + $ctx.ExecuteQuery() + if($GUID -eq ""){$GUID = [guid]::NewGuid()} + + $termSet=$group.CreateTermSet($TermSetName, $GUID, $LanguageID) + $ctx.ExecuteQuery() + return $termset + } + + + } + ``` From 47a1790a9053a174adddde0130c976d60eacac06 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 10 Sep 2020 23:54:29 +0300 Subject: [PATCH 141/312] Update README.md --- .../Get SPO Files from a folder/README.md | 99 ++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/File Management/Get SPO Files from a folder/README.md b/File Management/Get SPO Files from a folder/README.md index 9c558e35..9ee52858 100644 --- a/File Management/Get SPO Files from a folder/README.md +++ b/File Management/Get SPO Files from a folder/README.md @@ -1 +1,98 @@ -. +Powershell Module with a new cmdlet: + + + +

Get-SPOFolderFiles

+ +Retrieves all files from a folder. Not recursive. + + +
+

Parameters

+ +The cmdlet is using the following parameters: + +```powershell +[string]$Username +``` +The string specifies admin of the site + +```powershell +[string]$Url +``` +Specifies the url of the parent site + +```powershell +[string]$AdminPassword +``` +Admin's password + +```powershell +[string]$ServerRelativeUrl +``` +Specifies the relative url of the folder, eg. "/Library/FolderName" + + +

+

Examples

+ +Get all files from a folder and their properties +```powershell +Get-SPOFolderFiles -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -ServerRelativeUrl "/chc1/fff" +``` + + + + + +--- +Get all files from a folder and list their names and dates of creation +```powershell +Get-SPOFolderFiles -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -ServerRelativeUrl "/chc1/fff" | select name, timecreated +``` + + + + +--- +Get all files from a folder and export their names and dates of creation to a CSV file +```powershell +Get-SPOFolderFiles -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -ServerRelativeUrl "/chc1/fff" | select name, timecreated | export-csv c:\filename.csv +``` + + + + + + + +--- +If you want to get all files from all the folders, you can use Get-SPOFolder cmdlet to retrieve the folders and then for each folder retrieve the files. + + + + + + +
+

Requirements

+ + + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + + +```powershell +# Paths to SDK. Please verify location on your computer. +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" ``` +``` + + + + + + +

+Enjoy and please share feedback! From 731ae7498cd5d324779e708c4a0db720321f2498 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Sep 2020 21:41:21 +0300 Subject: [PATCH 142/312] Create README.md --- .../Break inheritance for all SPO lists in a site/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md diff --git a/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md b/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md @@ -0,0 +1 @@ +. From b7bf6810967026a849d96ab7405476bf6be474da Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:20:56 +0200 Subject: [PATCH 143/312] Update README.md --- Workflows/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workflows/README.md b/Workflows/README.md index 9c558e35..c4f3c476 100644 --- a/Workflows/README.md +++ b/Workflows/README.md @@ -1 +1 @@ -. +Scripts dealing with SharePoint workflows From d9f7d4d6c81fcc36d30ca5f72c59557bb2851a60 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:21:38 +0200 Subject: [PATCH 144/312] Delete description.md --- .../description.md | 228 ------------------ 1 file changed, 228 deletions(-) delete mode 100644 Workflows/Get workflow report for a site collection/description.md diff --git a/Workflows/Get workflow report for a site collection/description.md b/Workflows/Get workflow report for a site collection/description.md deleted file mode 100644 index 75d3f32e..00000000 --- a/Workflows/Get workflow report for a site collection/description.md +++ /dev/null @@ -1,228 +0,0 @@ -Powershell script. Creates a .csv file with a report on all workflows in a site collection. - - - -Before you run the script, open .ps1 file and edit all necessary information: - -```PowerShell -# Paths to SDK. Please verify location on your computer. -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - -# Insert the credentials and the name of the site collection and the path where the report should be saved. -$Username="2190@tenant.onmicrosoft.com" -$AdminPassword=Read-Host -Prompt "Password" -AsSecureString -$Url="https://tenant.sharepoint.com" -$CSVpath="C:\testpath.csv" -``` - - -As the script runs you will see how many workflows each list has: - - - - - - - - - - - -### Sample report - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation                       
Site UrlList TitleAllowManualAssociationDataAutoStartChangeAutoStartCreateBaseIdCreatedDescriptionEnabledHistoryListTitleIdInstantiationUrlInternalNameIsDeclarativeListIdModifiedNameTaskListTitleWebIdContextTagPathObjectVersionServerObjectIsNullTypedObject
https://tenant.sharepoint.comDocumentsTrue<dfs:myFields xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields" - xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields" xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes" xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dfs:queryFields></dfs:queryFields><dfs:dataFields><d:SharePointListItem_RW><d:Approvers><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta - Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage - xsi:nil="true" /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment></d:Approvers><d:ExpandGroups>true</d:ExpandGroups><d:NotificationMessage>hf</d:NotificationMessage><d:DueDateforAllTasks xsi:nil="true" - /><d:DurationforSerialTasks xsi:nil="true" /><d:DurationUnits>Day</d:DurationUnits><d:CC /><d:CancelonRejection>false</d:CancelonRejection><d:CancelonChange>false</d:CancelonChange><d:EnableContentApproval>false</d:EnableContentApproval></d:SharePointListItem_RW></dfs:dataFields></dfs:myFields>FalseFalse8ad4d8f0-93a7-4941-9657-cf3706f00409########Routes a document for approval. Approvers can approve or reject the document, reassign the approval task, or request changes to the document.TrueWorkflow Historye76e75fe-1622-4c26-a5fa-7e6178c61ae9_layouts/15/IniWrkflIP.aspxoo
-
-<Cfg.d3a8e0e9_03da_4f32_99c9_f778c1d5d560.4.512.>
True19e3d565-15c5-4a89-b95a-626b48ff0bcc########ooTask List with 14 elementsb05b85f0-c7fe-4646-ac41-4fde2db44f3bMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/nowanowaSite PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow History139a534e-abe6-4862-b19e-895eac1e0cbcmjyfFalsec6e865a5-b992-4a51-ba25-9ecd76ba336f########mjyfTasks0a2bec62-9fd7-44a4-b1bb-eacc553b3cd2Microsoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/newSiteCollectionDocumentsTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historye9dd54d1-27db-4ca9-8a84-6266ab3e824fapp2False62a23f97-fe21-4142-b485-9805474162b1########app2Tasks051be499-7633-4837-a3d6-68fc68ca0bcbMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/vs20072153Site PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc7cd1221-4dd7-4e0c-953b-aee71519116buoiioFalse545e45b7-6c2d-4378-9d23-cd08acf7ce19########uoiioTasksd7275f5e-6ec5-4f67-a817-dc3d694027edMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.com/TeamsitewithListsGeneric List With GeolocationColumnFalse TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc0d62395-f5b7-4f90-9d73-b7456017e00capprovalFalsed21515ce-2ec4-43c2-8f43-3150520b32f0########approvalTasks list9a105d7e-03c9-4561-acbf-5226c71f9babMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
From a58b0b78ba68bfcf39784749fa9d89019cb79b3e Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:22:19 +0200 Subject: [PATCH 145/312] Create readme.md --- Workflows/Get workflow report for one site/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Workflows/Get workflow report for one site/readme.md diff --git a/Workflows/Get workflow report for one site/readme.md b/Workflows/Get workflow report for one site/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Workflows/Get workflow report for one site/readme.md @@ -0,0 +1 @@ +. From 658965c180004e439c4c2be4e9c64553c344d219 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:22:41 +0200 Subject: [PATCH 146/312] Update readme.md --- .../readme.md | 220 +++++++++++++++++- 1 file changed, 219 insertions(+), 1 deletion(-) diff --git a/Workflows/Get workflow report for one site/readme.md b/Workflows/Get workflow report for one site/readme.md index 9c558e35..672af455 100644 --- a/Workflows/Get workflow report for one site/readme.md +++ b/Workflows/Get workflow report for one site/readme.md @@ -1 +1,219 @@ -. +Powershell script. Creates a ```.csv``` file with a report on all workflows in a site collection. + +Before you run the script, open ```.ps1``` file and edit all necessary information: + +```PowerShell + +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and the path where the report should be saved. +$Username="2190@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Url="https://tenant.sharepoint.com" +$CSVpath="C:\testpath2.csv" +``` +As the script runs you will see how many workflows each list has: + + + +### Sample report + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation                       
Site UrlList TitleAllowManualAssociationDataAutoStartChangeAutoStartCreateBaseIdCreatedDescriptionEnabledHistoryListTitleIdInstantiationUrlInternalNameIsDeclarativeListIdModifiedNameTaskListTitleWebIdContextTagPathObjectVersionServerObjectIsNullTypedObject
https://tenant.sharepoint.comDocumentsTrue<dfs:myFields xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields" + xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields" xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes" xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dfs:queryFields></dfs:queryFields><dfs:dataFields><d:SharePointListItem_RW><d:Approvers><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta + Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment><d:Assignment><d:Assignee><pc:Person><pc:DisplayName>Arleta Wanat</pc:DisplayName><pc:AccountId>i:0#.f|membership|2190@tenant.onmicrosoft.com</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:Person></d:Assignee><d:Stage + xsi:nil="true" /><d:AssignmentType>Serial</d:AssignmentType></d:Assignment></d:Approvers><d:ExpandGroups>true</d:ExpandGroups><d:NotificationMessage>hf</d:NotificationMessage><d:DueDateforAllTasks xsi:nil="true" + /><d:DurationforSerialTasks xsi:nil="true" /><d:DurationUnits>Day</d:DurationUnits><d:CC /><d:CancelonRejection>false</d:CancelonRejection><d:CancelonChange>false</d:CancelonChange><d:EnableContentApproval>false</d:EnableContentApproval></d:SharePointListItem_RW></dfs:dataFields></dfs:myFields>FalseFalse8ad4d8f0-93a7-4941-9657-cf3706f00409########Routes a document for approval. Approvers can approve or reject the document, reassign the approval task, or request changes to the document.TrueWorkflow Historye76e75fe-1622-4c26-a5fa-7e6178c61ae9_layouts/15/IniWrkflIP.aspxoo
+
+<Cfg.d3a8e0e9_03da_4f32_99c9_f778c1d5d560.4.512.>
True19e3d565-15c5-4a89-b95a-626b48ff0bcc########ooTask List with 14 elementsb05b85f0-c7fe-4646-ac41-4fde2db44f3bMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.comSite PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow History139a534e-abe6-4862-b19e-895eac1e0cbcmjyfFalsec6e865a5-b992-4a51-ba25-9ecd76ba336f########mjyfTasks0a2bec62-9fd7-44a4-b1bb-eacc553b3cd2Microsoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.comDocumentsTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historye9dd54d1-27db-4ca9-8a84-6266ab3e824fapp2False62a23f97-fe21-4142-b485-9805474162b1########app2Tasks051be499-7633-4837-a3d6-68fc68ca0bcbMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.comSite PagesTrue TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc7cd1221-4dd7-4e0c-953b-aee71519116buoiioFalse545e45b7-6c2d-4378-9d23-cd08acf7ce19########uoiioTasksd7275f5e-6ec5-4f67-a817-dc3d694027edMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
https://tenant.sharepoint.comGeneric List With GeolocationColumnFalse TrueTruedd19a800-37c1-43c0-816d-f8eb5f4a4145########Manages document expiration and retention by allowing participants to decide whether to retain or delete expired documents.TrueWorkflow Historyc0d62395-f5b7-4f90-9d73-b7456017e00capprovalFalsed21515ce-2ec4-43c2-8f43-3150520b32f0########approvalTasks list9a105d7e-03c9-4561-acbf-5226c71f9babMicrosoft.SharePoint.Client.ClientContextMicrosoft.SharePoint.Client.ObjectPathIdentityFalseMicrosoft.SharePoint.Client.Workflow.WorkflowAssociation
+
+
From dfdbf4922ef4f0cedde068047065888b16494966 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:23:38 +0200 Subject: [PATCH 147/312] Create removeWfs.ps1 --- Workflows/Remove workflow associations/removeWfs.ps1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 Workflows/Remove workflow associations/removeWfs.ps1 diff --git a/Workflows/Remove workflow associations/removeWfs.ps1 b/Workflows/Remove workflow associations/removeWfs.ps1 new file mode 100644 index 00000000..a1a7b990 --- /dev/null +++ b/Workflows/Remove workflow associations/removeWfs.ps1 @@ -0,0 +1 @@ +fdf From cfb65c16241813b648d183f03a1ca4d93c7deab0 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:25:48 +0200 Subject: [PATCH 148/312] Update README.md --- Versioning/README.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/Versioning/README.md b/Versioning/README.md index 9c558e35..c4931169 100644 --- a/Versioning/README.md +++ b/Versioning/README.md @@ -1 +1,18 @@ -. +Scripts related to versioning of the SharePoint files. + + +
+Versioning +
+ +* Create a report on all file versions in OneDrive for Business +* Enable minor versions for all lists +* Enable versioning for all lists in OneDrive sites +* Enable versioning for all SharePoint Online lists +* Get versioning settings for all lists +* Restore previous versions in selected files the entire library +* Restore previous versions in the entire library +* Set the major version limit for all the lists and libraries (data loss involved) +
+
+ From d13fe3ec3cd02f711bd16d3d11457b9427a4a730 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:26:34 +0200 Subject: [PATCH 149/312] Create readme.md --- Versioning/Enable minor versions for all lists/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Enable minor versions for all lists/readme.md diff --git a/Versioning/Enable minor versions for all lists/readme.md b/Versioning/Enable minor versions for all lists/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Enable minor versions for all lists/readme.md @@ -0,0 +1 @@ +. From b42834caa2402d146f3df495231bceb643541383 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:26:53 +0200 Subject: [PATCH 150/312] Update readme.md --- .../readme.md | 113 +++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/Versioning/Enable minor versions for all lists/readme.md b/Versioning/Enable minor versions for all lists/readme.md index 9c558e35..f502d868 100644 --- a/Versioning/Enable minor versions for all lists/readme.md +++ b/Versioning/Enable minor versions for all lists/readme.md @@ -1 +1,112 @@ -. +A short script that enables versioning with minor versions for all the libraries and lists in the whole SharePoint Online tenant. + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. + +For some lists, enabling minor versions may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether enabling was successful or not. + + + +As the script runs you will see green lists' titles for which the enabling succeeded and red for those which failed (not all lists support minor versioning). + +Versioning will always fail for public site. + + + +If you need to enable versioning in general and minor versioning for those lists that support it, first run this script for enabling versioning in general and then the one here for minor versions. + +```PowerShell +function getall($urelek) +{ + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($urelek) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) + $ctx.Load($ctx.Web.Lists) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + Write-Host + Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + foreach( $ll in $ctx.Web.Lists) + { + $ctx.Load($ll.RootFolder) + $ctx.ExecuteQuery() + $ll.EnableMinorVersions = $versioning + $ll.Update() + $csvvalue= new-object PSObject + $listurl=$null + if($ctx.Url.EndsWith("/")) {$listurl= $ctx.Url.Remove(($ctx.Url.Length-1),1)+$ll.RootFolder.ServerRelativeUrl} + else { + $index=$ctx.Url.LastIndexOf(".com") + $listurl=$ctx.Url.Remove($index+4)+$ll.RootFolder.ServerRelativeUrl} + $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) + $csvvalue | Add-Member -MemberType NoteProperty -Name "Status" -Value "Failed" + try + { + $ErrorActionPreference="Stop" + $ctx.ExecuteQuery() + Write-Host $listurl -ForegroundColor DarkGreen + $csvvalue.Status="Success" + $Global:csv+= $csvvalue + } + + catch + { + $Global:csv+= $csvvalue + Write-Host $listurl -ForegroundColor Red + } + finally + {$ErrorActionPreference="Continue"} + + + } + + if($ctx.Web.Webs.Count -gt 0) + { + for($i=0; $i -lt $ctx.Web.Webs.Count ; $i++) + { + getall($ctx.Web.Webs[$i].Url) + } + + } + + + +} + +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false +$versioning = $true + +# You can also enter credentials directly: $siteUrl="https://tenant-admin.sharepoint.com" +$siteUrl = Read-Host -Prompt "Enter https://tenant-admin.sharepoint.com” +$username = Read-Host -Prompt "Enter admin's login, e.g. admin@domain.onmicrosoft.com" +$password = Read-Host -Prompt "Enter password" -AsSecureString +$credy= New-Object System.Management.Automation.PSCredential($username,$password) +Connect-SPOService -Credential $credy -Url $siteUrl + +$sitecollections=get-SPOSite +$Global:csv=@() + +foreach($sitecoll in $sitecollections) +{ + getall($sitecoll.Url) +} + +# Specify the path where the log file will be published +$Global:csv | Export-Csv -Path C:\Users\Public\Versioning.csv + ``` + + +### If you think, I could have improved on anything, please let me know in the Q&A section! From 5cc6d07e7daf0b051841dcfd76bd427ab32da44f Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:27:23 +0200 Subject: [PATCH 151/312] Update readme.md --- Versioning/Enable minor versions for all lists/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Versioning/Enable minor versions for all lists/readme.md b/Versioning/Enable minor versions for all lists/readme.md index f502d868..7bf2a70d 100644 --- a/Versioning/Enable minor versions for all lists/readme.md +++ b/Versioning/Enable minor versions for all lists/readme.md @@ -109,4 +109,4 @@ $Global:csv | Export-Csv -Path C:\Users\Public\Versioning.csv ``` -### If you think, I could have improved on anything, please let me know in the Q&A section! +### If you think, I could have improved on anything, please let me know in the Issues section! From 3e354b76126fcfac7c011492d90a22ab3df9fbe6 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:27:56 +0200 Subject: [PATCH 152/312] Create readme.md --- .../Enable versioning for all SharePoint Online lists/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Enable versioning for all SharePoint Online lists/readme.md diff --git a/Versioning/Enable versioning for all SharePoint Online lists/readme.md b/Versioning/Enable versioning for all SharePoint Online lists/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Enable versioning for all SharePoint Online lists/readme.md @@ -0,0 +1 @@ +. From 8c22607c7296005d5327f822dc186b8e4597e5ce Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:28:39 +0200 Subject: [PATCH 153/312] Update readme.md --- .../readme.md | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/Versioning/Enable versioning for all SharePoint Online lists/readme.md b/Versioning/Enable versioning for all SharePoint Online lists/readme.md index 9c558e35..19ed65b3 100644 --- a/Versioning/Enable versioning for all SharePoint Online lists/readme.md +++ b/Versioning/Enable versioning for all SharePoint Online lists/readme.md @@ -1 +1,30 @@ -. +A short script that enables versioning for all the libraries and lists in the whole tenant. + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. +For some lists, enabling version may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether enabling was successful or not. + + + +As the script runs you will see green lists' titles for which the enabling succeeded and red for those which failed (not all lists support versioning). + + + + + + + + +You can customize the script by using the commented out tips. + +

+Enjoy and please share feedback! From dd5cc9ac7562d14e75e9321fa53990fa057da7d4 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:29:20 +0200 Subject: [PATCH 154/312] Create readme.md --- .../Enable versioning for all lists in OneDrive sites/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Enable versioning for all lists in OneDrive sites/readme.md diff --git a/Versioning/Enable versioning for all lists in OneDrive sites/readme.md b/Versioning/Enable versioning for all lists in OneDrive sites/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Enable versioning for all lists in OneDrive sites/readme.md @@ -0,0 +1 @@ +. From 91f1b69fa00beb092073aa446590df9cad609f0d Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:29:37 +0200 Subject: [PATCH 155/312] Update readme.md --- .../readme.md | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Versioning/Enable versioning for all lists in OneDrive sites/readme.md b/Versioning/Enable versioning for all lists in OneDrive sites/readme.md index 9c558e35..59cc0a80 100644 --- a/Versioning/Enable versioning for all lists in OneDrive sites/readme.md +++ b/Versioning/Enable versioning for all lists in OneDrive sites/readme.md @@ -1 +1,26 @@ -. +Powershell script that enables versioning for all the libraries and lists in all personal sites (OneDrive for Business). + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. + +For some lists, enabling version may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether enabling was successful or not. + + + +As the script runs you will see green lists' titles for which the enabling succeeded and red for those which failed (not all lists support versioning). + + + + +You can customize the script by using the commented out tips. + + From 2dc529439592154701d467609181d8b955d7b09d Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:30:18 +0200 Subject: [PATCH 156/312] Create readme.md --- Versioning/Get versioning settings for all lists/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Get versioning settings for all lists/readme.md diff --git a/Versioning/Get versioning settings for all lists/readme.md b/Versioning/Get versioning settings for all lists/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Get versioning settings for all lists/readme.md @@ -0,0 +1 @@ +. From e6629610e3b38858eed1f0f22e0ca12e6f2c57e2 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:30:37 +0200 Subject: [PATCH 157/312] Update readme.md --- .../readme.md | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Versioning/Get versioning settings for all lists/readme.md b/Versioning/Get versioning settings for all lists/readme.md index 9c558e35..8ac15997 100644 --- a/Versioning/Get versioning settings for all lists/readme.md +++ b/Versioning/Get versioning settings for all lists/readme.md @@ -1 +1,32 @@ -. +A short script that checks versioning settings for all the libraries and lists in the whole tenant. + + + +It requires SharePoint Online Management Shell and SharePoint SDK installed. + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. + +At the end, a csv file is generated with the lists' urls and settings: + + + + + +As the script runs you will see green lists' titles for which the setting was successfully retrieved and red for those which failed. + + + + + +### How to use? +Download and open the .ps1 file. +Add correct SharePoint Online SDK libraries: + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +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" + From 392051ed4e0d094c45586f007da5777ac83fd6dd Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:31:10 +0200 Subject: [PATCH 158/312] Create readme.md --- .../readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Restore previous versions in selected files the entire library/readme.md diff --git a/Versioning/Restore previous versions in selected files the entire library/readme.md b/Versioning/Restore previous versions in selected files the entire library/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Restore previous versions in selected files the entire library/readme.md @@ -0,0 +1 @@ +. From 0164da53b6d168e14367a50148238b60adccca01 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:31:23 +0200 Subject: [PATCH 159/312] Update readme.md --- .../readme.md | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/Versioning/Restore previous versions in selected files the entire library/readme.md b/Versioning/Restore previous versions in selected files the entire library/readme.md index 9c558e35..b9d7d1e2 100644 --- a/Versioning/Restore previous versions in selected files the entire library/readme.md +++ b/Versioning/Restore previous versions in selected files the entire library/readme.md @@ -1 +1,49 @@ -. +The script retrieves all files and restores the LAST NOT CURRENT version of the file. + +Please test the script in test environment before using it in production. + + + +The script is a modification of the existing [Restore Previous Versions](https://gallery.technet.microsoft.com/Restore-previous-versions-bbcb0796) script created to show 2 ways on filtering the file results. The filters are only examples that need to be adjusted to your specific needs. + +The first filter uses CamlQuery to retrieve only files coming from a specific folder. + +The second filter takes files we have already retrieved and selects only those modified after 12/2/2017. + +When dealing with large number of files CamlQuery is the preferred and more efficient way. + + + + + + The script requires SharePoint Online SDK. Make sure that the paths below point to locations on your computer: + + + +```PowerShell +#Paths to SDK +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` + +The script needs to be edited before running. Enter the necessary data: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" +$ListTitle="VersionTest" +``` +The CamlQuery below chooses only files whose ServerRelativeUrl includes a certain path. In this way you can restore versions only from a specific folder. + +```PowerShell + $spqQuery.ViewXml ="/VersionTest/Folder2/FolderWithinFolder"; + ``` + The following lines allow us to narrow the files only to those modified after 12/2/2017. +```PowerShell + $date=Get-Date ("2/12/2017") + + if($file.TimeLastModified -gt $date) + { + ``` From deb9b27ab8629fbab40005080c09ec6194c7a51f Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:31:55 +0200 Subject: [PATCH 160/312] Create readme.md --- .../Restore previous versions in the entire library/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Restore previous versions in the entire library/readme.md diff --git a/Versioning/Restore previous versions in the entire library/readme.md b/Versioning/Restore previous versions in the entire library/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Restore previous versions in the entire library/readme.md @@ -0,0 +1 @@ +. From a94a01dc2575ef08ca922b85dcf46277b1e5550f Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:32:08 +0200 Subject: [PATCH 161/312] Update readme.md --- .../readme.md | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Versioning/Restore previous versions in the entire library/readme.md b/Versioning/Restore previous versions in the entire library/readme.md index 9c558e35..602e5d33 100644 --- a/Versioning/Restore previous versions in the entire library/readme.md +++ b/Versioning/Restore previous versions in the entire library/readme.md @@ -1 +1,27 @@ -. +The script retrieves all files and restores the LAST NOT CURRENT version of the file. + +Please test the script in test environment before using it in production. + + The script requires SharePoint Online SDK. Make sure that the paths below point to locations on your computer: + +```PowerShell +#Paths to SDK +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + +The script needs to be edited before running. Enter the necessary data: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@trial456.onmicrosoft.com" +$Url="https://trial456.sharepoint.com/sites/teamsitewithlibraries" +$ListTitle="uyyu" +``` + + + + +

+Enjoy and please share feedback! From f0824e37d0cd016d1f0d16d5c9339405166bdcea Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:32:51 +0200 Subject: [PATCH 162/312] Create readme.md --- .../readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -0,0 +1 @@ +. From 9ba549f6b157f9d2796571769f01a146997022cf Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:33:27 +0200 Subject: [PATCH 163/312] Update readme.md --- .../readme.md | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md index 9c558e35..3c927c83 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -1 +1,70 @@ -. +A short script that sets the major version limit for all the libraries and lists in the whole site collection or in the whole tenant. + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. + +If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: + +Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. + + + +As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: + + + + + + + + + + + + + +In order to use the script, adjust the data inside: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + + +# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false +$Versioning = $true + +#Number of major versions to keep +$VersionLimit = 14 + +# You can also enter credentials directly: $siteUrl="https://tenant-admin.sharepoint.com" +$AdminUrl = "https://tenant-admin.sharepoint.com” +$Username = "test@tenant.onmicrosoft.com" +$Password = Read-Host -Prompt "Enter password" -AsSecureString +$Creds= New-Object System.Management.Automation.PSCredential($username,$password) +Connect-SPOService -Credential $Creds -Url $AdminUrl + +$sitecollections=Get-SPOSite +$Global:csv=@() + +#Uncomment the foreach loop if you want to change the settings in all site collections +#foreach($sitecoll in $sitecollections) +#{ + Set-VersionLimit -Url ("https://test.sharepoint.com/sites/test") -Username $Username -Password $Password -Versioning $Versioning -VersionLimit $VersionLimit +#} + + + +# Specify the path where the log file will be published +$Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv + ``` From 3fff13975589caf0b19818239fd98a19a11ab03a Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:33:30 +0200 Subject: [PATCH 164/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md index c95d7eea..3c927c83 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md @@ -34,7 +34,7 @@ As the script runs you will see green lists' titles for which the setting succee In order to use the script, adjust the data inside: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -67,4 +67,4 @@ $Global:csv=@() # Specify the path where the log file will be published $Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv - + ``` From 1c8291d9061c146060dfab0b2431bb904e19cbf1 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:37:13 +0200 Subject: [PATCH 165/312] Update readme.md --- .../readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md index 3c927c83..a828978d 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -12,6 +12,7 @@ It uses recurrence to find all sites in all site collections and then goes throu If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: + Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. @@ -21,7 +22,7 @@ At the end, a csv file is generated with the lists' urls and the status whether As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: - + From 4a3a5eeec8233d88e33b3b8e79fdc3d2afcb7657 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:37:54 +0200 Subject: [PATCH 166/312] Update readme.md --- .../readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md index a828978d..8cbec348 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -12,7 +12,7 @@ It uses recurrence to find all sites in all site collections and then goes throu If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: - + Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. @@ -22,7 +22,7 @@ At the end, a csv file is generated with the lists' urls and the status whether As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: - + From 4c271d51db82cd328fb5cdcbbcbeb20e6e1295fc Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:40:46 +0200 Subject: [PATCH 167/312] Update readme.md --- .../readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md index 8cbec348..25ce37f5 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -12,12 +12,12 @@ It uses recurrence to find all sites in all site collections and then goes throu If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: - -Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. + +Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. - + As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: From f92be48f668915914dbc2fac0e5db31fa9a7d42f Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:41:07 +0200 Subject: [PATCH 168/312] Update description.md --- .../description.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md index 3c927c83..25ce37f5 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md @@ -12,16 +12,17 @@ It uses recurrence to find all sites in all site collections and then goes throu If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: -Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. + +Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. - + As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: - + From 21b0d940d689da1689426b6fe14fdc1ae6670338 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:42:19 +0200 Subject: [PATCH 169/312] Update readme.md --- .../readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md index 25ce37f5..efb3c192 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/readme.md @@ -69,3 +69,5 @@ $Global:csv=@() # Specify the path where the log file will be published $Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv ``` +

+Enjoy and please share feedback! From 732756fe0695ab979ef1b0d92d8e6660832eda4d Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:42:28 +0200 Subject: [PATCH 170/312] Update description.md --- .../description.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md index 25ce37f5..efb3c192 100644 --- a/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md +++ b/Versioning/Set the major version limit for all the lists and libraries (data loss involved)/description.md @@ -69,3 +69,5 @@ $Global:csv=@() # Specify the path where the log file will be published $Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv ``` +

+Enjoy and please share feedback! From f3c9e51d29d3efd519b08669cbe55110278d52d9 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:50:46 +0200 Subject: [PATCH 171/312] Create RemoveSiteWFs.ps1 --- .../RemoveSiteWFs.ps1 | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 diff --git a/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 b/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 new file mode 100644 index 00000000..ab347748 --- /dev/null +++ b/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 @@ -0,0 +1,38 @@ +function Remove-Workflows{ + + $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $web = $context.Web + $context.Load($Web) + $context.ExecuteQuery() + + $context.Load($web.WorkflowAssociations) + $context.ExecuteQuery() + + Write-Host $web.WorkflowAssociations.count + + while ($web.WorkflowAssociations.count -gt 0) { + $SiteWorkflowAssociations = $web.WorkflowAssociations + $context.Load($SiteWorkflowAssociations) + $context.ExecuteQuery() + + $SiteWorkflowAssociations | ForEach-Object { + Write-Output $_ + $_.DeleteObject() + $context.ExecuteQuery() + } + } + +} + + # Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site collection and the path where the report should be saved. +$Username = "2190@tenant.onmicrosoft.com" +$AdminPassword = Read-Host -Prompt "Password" -AsSecureString +$Url = "https://tenant.sharepoint.com/sites/YOURSITE" + + +Remove-Workflows -Username $Username -AdminPassword $AdminPassword -Url $Url From b4e83f82e718c73886ac7806a954147a31eeaba0 Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:53:23 +0200 Subject: [PATCH 172/312] Update RemoveSiteWFs.ps1 --- .../Remove workflow site associations/RemoveSiteWFs.ps1 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 b/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 index ab347748..87173b45 100644 --- a/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 +++ b/Workflows/Remove workflow site associations/RemoveSiteWFs.ps1 @@ -1,5 +1,12 @@ function Remove-Workflows{ - + param( + [Parameter(Mandatory = $true, Position = 1)] + [string]$Username, + [Parameter(Mandatory = $true, Position = 2)] + $AdminPassword, + [Parameter(Mandatory = $true, Position = 3)] + [string]$Url + ) $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url) $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) $web = $context.Web From 0e4f6134d7a1abb39f2a0d7a11df70109f57c6cd Mon Sep 17 00:00:00 2001 From: Anaida-debug <71360032+Anaida-debug@users.noreply.github.com> Date: Wed, 16 Sep 2020 03:53:47 +0200 Subject: [PATCH 173/312] Create RemoveListWFs.ps1 --- .../RemoveListWFs.ps1 | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Workflows/Remove list workflow associations/RemoveListWFs.ps1 diff --git a/Workflows/Remove list workflow associations/RemoveListWFs.ps1 b/Workflows/Remove list workflow associations/RemoveListWFs.ps1 new file mode 100644 index 00000000..9cd515d6 --- /dev/null +++ b/Workflows/Remove list workflow associations/RemoveListWFs.ps1 @@ -0,0 +1,57 @@ +function Remove-Workflows{ + param( + [Parameter(Mandatory = $true, Position = 1)] + [string]$Username, + [Parameter(Mandatory = $true, Position = 2)] + $AdminPassword, + [Parameter(Mandatory = $true, Position = 3)] + [string]$Url + ) + + $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $web = $context.Web + $context.Load($Web) + $context.ExecuteQuery() + + $context.Load($web.Lists) + $context.ExecuteQuery() + + $web.Lists | ForEach-Object { + + $list = $_ + + <# to limit it to one list + if($list.Title -ne "Nintex_List"){ + return; + }#> + + $context.Load($list) + $context.ExecuteQuery() + $wfassociations = $list.WorkflowAssociations + $context.Load($wfassociations) + $context.ExecuteQuery() + + foreach ($wf in $wfassociations) { + + Write-Output $wf + $wf.DeleteObject() + $context.ExecuteQuery() + Write-Host "Found Nintex workflow on site... $($list.Title).Removed!" -ForegroundColor Green + } + + } + +} + + # Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site collection and the path where the report should be saved. +$Username = "2190@tenant.onmicrosoft.com" +$AdminPassword = Read-Host -Prompt "Password" -AsSecureString +$Url = "https://tenant.sharepoint.com/sites/YOURSITE" + + +Remove-Workflows -Username $Username -AdminPassword $AdminPassword -Url $Url From b1964510e5278db5631ab25999c8ca595d941e51 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 22 Sep 2020 17:43:42 +0300 Subject: [PATCH 174/312] Create README.md --- .../Records Management/Declare files as records/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Records Management/Declare files as records/README.md diff --git a/File Management/Records Management/Declare files as records/README.md b/File Management/Records Management/Declare files as records/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Records Management/Declare files as records/README.md @@ -0,0 +1 @@ +. From b005de5b63f7f42dfbc154d6aab7d4676d182593 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 24 Sep 2020 14:20:36 +0300 Subject: [PATCH 175/312] Create README.md --- .../Break role inheritance for a single list/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Permissions/Powershell/Break role inheritance for a single list/README.md diff --git a/Permissions/Powershell/Break role inheritance for a single list/README.md b/Permissions/Powershell/Break role inheritance for a single list/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Permissions/Powershell/Break role inheritance for a single list/README.md @@ -0,0 +1 @@ +. From d0fcfc7c8d7964d289ae72d627d0ddb7a0e7dcd8 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 25 Sep 2020 21:26:11 +0300 Subject: [PATCH 176/312] Create README.md --- File Management/Module for easy file management/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Module for easy file management/README.md diff --git a/File Management/Module for easy file management/README.md b/File Management/Module for easy file management/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Module for easy file management/README.md @@ -0,0 +1 @@ +. From 517ba25d27856ff26076e7e117031cb4d121bb72 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 13:12:26 +0300 Subject: [PATCH 177/312] Create README.md --- .../Column Management/Add a geolocation column/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Add a geolocation column/README.md diff --git a/Lists and Libraries Management/Column Management/Add a geolocation column/README.md b/Lists and Libraries Management/Column Management/Add a geolocation column/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Add a geolocation column/README.md @@ -0,0 +1 @@ +. From 021de2252510f95fcec61d6e10eb468057f4a779 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:29:47 +0300 Subject: [PATCH 178/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md diff --git a/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md b/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md @@ -0,0 +1 @@ +. From b7f925e21ea6ac9cfbe560e3519c2c9d7b03c979 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:30:06 +0300 Subject: [PATCH 179/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md diff --git a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md @@ -0,0 +1 @@ +. From 827ea6c87cfd100f701c6070fdf6d1b9543f8785 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:30:31 +0300 Subject: [PATCH 180/312] Update README.md --- .../README.md | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md index 9c558e35..9d4247de 100644 --- a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md +++ b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online sites/README.md @@ -1 +1,59 @@ -. +A script to copy folder structure from a library in one site collection/subsite to a library in a different site collection/subsite. + + + +### *How to use?* + +1. Download the script and open the file (you can use Powershell ISE or e.g. NotePad). + +2. Edit the following lines, entering your values (# means comment, changing these lines won't bring any effect): + + + +```PowerShell +# Enter the username of a user who has enough permissions to run the operation for both site collections +$admin="t@trial890.onmicrosoft.com" + +# Where you want to copy the folder structure FROM +$Sourcesite="https://trial890.sharepoint.com/sites/TeamsitewithLibraries" +$sourceLibrary="tescik2" + +# Where you want to copy the folder structure TO +$destinationSite="https://trial890.sharepoint.com/sites/teamsitewithlists" +$destLibr="docLib3" +``` +$admin - user
+$Sourcesite - url of the site where the source library is; it's the url of the site where you want to copy FROM
+$destinationSite - url of the site where the target library is; it's the url of the site where you want to copy TO
+ +

+ +$sourceLibrary - title of the original library where you want to copy the structure FROM
+$destLibr - title of the destination library where you want to copy the structure TO
+ +For all the data please stick to the formats as in the example. + +3. Save and run the script. During execution it will ask you for a password and later on display relative urls of all the newly created folders. + + + +
+ +## Technicalities + +The scripts works with libraries, not lists. + +I tested it with several scenarios and it worked. However, testing went only as far as my imagination and limited time resources would go, so if you encounter a scenario where the script does not work or throws errors, please let me know in the Q&A section, and I will fix it. + +
+ +## Error handling + +Upper/lower case shouldn't cause any issues. That means whether you enter "DocLibrary" or "docliBRARY" they should be treated the same. If you notice otherwise, please report. + +Folders keep their casing. That means that "Big InvestMent" will remain "Big InvestMent" in the new library. + + + +

+Enjoy and please share feedback! From 787eb4970cec72719ccea9868970c6fb21aaaa39 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:30:48 +0300 Subject: [PATCH 181/312] Create README.md --- .../Get all event receivers on your lists in a site/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Get all event receivers on your lists in a site/README.md diff --git a/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md b/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md @@ -0,0 +1 @@ +. From a69e9e3a06c25a24d683f3ed3d10384cf796b715 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:31:04 +0300 Subject: [PATCH 182/312] Update README.md --- .../README.md | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md b/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md index 9c558e35..5730c886 100644 --- a/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md +++ b/Lists and Libraries Management/Get all event receivers on your lists in a site/README.md @@ -1 +1,48 @@ -. +A short solution to find event receivers on your SPO lists. + + + +1. Install [SharePoint Online SDK](http://www.microsoft.com/en-us/download/details.aspx?id=42038) + +2. Download the file and open (e.g. in NotePad) + +3. Scroll down to these lines + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the admin site +$Username="admin@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Url="https://tenant.sharepoint.com/sites/teamsitewithlibraries" + + +Get-SPOListEventreceivers -Username $Username -AdminPassword $AdminPassword -Url $Url +``` +4. Check if the 2 libraries are in the same location on your computer. If yes, proceed on. If no, change the paths in the file. Usually you will be required to change folder name "15" into "16". + +5. Instead of admin@tenant.onmicrosoft.com, enter the name of your site collection admin. + +6. Instead of https://tenant.sharepint.com/sites/teamsitewithlibraries enter name of the site where the unwanted app is located + +7. Run the script in any Powershell module. + +It should ask you for your admin password + + + +If you want to export the event-receivers' data to a .csv file, use PathToTheScript | export-csv c:\users\MyUsers\Desktop\CSVReport.csv + + + +### Sample Report + +ReceiverAssembly | ReceiverClass | ReceiverId | ReceiverName | SequenceNumber | Synchronization | EventType | ReceiverUrl | Context | Tag | Path | ObjectVersion | ServerObjectIsNull | TypedObject +---|---|---|---|---|---|---|---|---|---|---|---|---|--- +Microsoft.SharePoint.Portal, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c | Microsoft.SharePoint.Portal.CommunityEventReceiver | f13fb801-b306-42ea-bb1e-2f4c1e4a8e81 | | 10000 | Synchronous | ItemAdding | Microsoft.SharePoint.Client.ClientContext | Microsoft.SharePoint.Client.ObjectPathIdentity | False | Microsoft.SharePoint.Client.EventReceiverDefinition +Microsoft.SharePoint.Portal, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c | Microsoft.SharePoint.Portal.CommunityEventReceiver | cebe300c-50ac-4d88-8a4b-a63b9d6da400 | | 10000 | Synchronous | ItemUpdating | Microsoft.SharePoint.Client.ClientContext | Microsoft.SharePoint.Client.ObjectPathIdentity | False | Microsoft.SharePoint.Client.EventReceiverDefinition +Microsoft.SharePoint.Portal, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c | Microsoft.SharePoint.Portal.CommunityEventReceiver | bfc4ca11-32d6-4248-923c-fe16bcf8145d | | 10000 | Synchronous | ItemDeleting | Microsoft.SharePoint.Client.ClientContext | Microsoft.SharePoint.Client.ObjectPathIdentity | False | Microsoft.SharePoint.Client.EventReceiverDefinition +Microsoft.SharePoint.Portal, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c | Microsoft.SharePoint.Portal.CommunityEventReceiver | 6f2b105a-4834-40df-a450-c480c5c94ef0 | | 10000 | Asynchronous | ItemAdded | Microsoft.SharePoint.Client.ClientContext | Microsoft.SharePoint.Client.ObjectPathIdentity | False | Microsoft.SharePoint.Client.EventReceiverDefinition + From b49088a1bec2c2aec272c8b9a1f2ccbf67a9a687 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:31:21 +0300 Subject: [PATCH 183/312] Create README.md --- .../Get all lists not used since/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Get all lists not used since/README.md diff --git a/Lists and Libraries Management/Get all lists not used since/README.md b/Lists and Libraries Management/Get all lists not used since/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Get all lists not used since/README.md @@ -0,0 +1 @@ +. From 2a3d8d3e99220059706c36b2c9aa591932b168b7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:31:37 +0300 Subject: [PATCH 184/312] Update README.md --- .../Get all lists not used since/README.md | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get all lists not used since/README.md b/Lists and Libraries Management/Get all lists not used since/README.md index 9c558e35..16b26809 100644 --- a/Lists and Libraries Management/Get all lists not used since/README.md +++ b/Lists and Libraries Management/Get all lists not used since/README.md @@ -1 +1,21 @@ -. +A short script that retrieves all lists from a site that haven't been modified for a while. + +Please mind the difference between used and modified. A list of countries or client contacts that serve as lookup for other lists may not be changed often but is still widely used. + +You need SharePoint Online SDK to run it. + +Please do NOT enter your password in the file! You will be asked for it during script execution. + +Please adjust the following parameters before execution: + +```PowerShell +#Paths to SDK +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" + +#Enter the data +$username="ana@etr56.onmicrosoft.com" +$Url="https://etr56.sharepoint.com/sites/demigtest11-2" +\$olderThan = "2019-09-30" +``` +Sample results From 2bc911fcf8a36dc1dfe56708cd307eacb5e999a0 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:33:06 +0300 Subject: [PATCH 185/312] Update README.md --- Workflows/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workflows/README.md b/Workflows/README.md index c4f3c476..c5f0d028 100644 --- a/Workflows/README.md +++ b/Workflows/README.md @@ -1 +1 @@ -Scripts dealing with SharePoint workflows +Scripts dealing with SharePoint and Nintex workflows From af529f994680a417e005924e0923a4f2e221592b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:34:14 +0300 Subject: [PATCH 186/312] Create README.md --- .../Get large SharePoint Online lists v2/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Get large SharePoint Online lists v2/README.md diff --git a/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md b/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md @@ -0,0 +1 @@ +. From 4409d5216ec4d5f0f9c75277a9e1dea803b63fab Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:34:43 +0300 Subject: [PATCH 187/312] Update README.md --- .../README.md | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md b/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md index 9c558e35..cca9e8ab 100644 --- a/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md +++ b/Lists and Libraries Management/Get large SharePoint Online lists v2/README.md @@ -1 +1,37 @@ -. +The script loops through all site collections, all their subsites and finds lists with more than x items. You can define x. + +It generates a report to csv file. + + + + + + + +In order to use the script, modify the following lines. DO NOT enter password in the file: + + + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +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" + +# Insert the credentials and the name of the admin site +$Username="ana@etr56.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Url="https://etr56.sharepoint.com" + +# reporting parameters + # where should the report be saved +$csvPath = "C:\Users\Public\largelists.csv" +$itemThreshold = 20000 +``` + + + +Another variation of the script creates a fuller report, with more properties of exported lists. Check it out here: + +https://gallery.technet.microsoft.com/office/Get-large-SharePoint-0906ff8f From da0e051cb178051b536becf3dd47083072381b02 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:34:51 +0300 Subject: [PATCH 188/312] Update description.md --- .../Get large SharePoint Online lists v2/description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Get large SharePoint Online lists v2/description.md b/Lists and Libraries Management/Get large SharePoint Online lists v2/description.md index f1e9eae5..cca9e8ab 100644 --- a/Lists and Libraries Management/Get large SharePoint Online lists v2/description.md +++ b/Lists and Libraries Management/Get large SharePoint Online lists v2/description.md @@ -14,7 +14,7 @@ In order to use the script, modify the following lines. DO NOT enter password in -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -28,7 +28,7 @@ $Url="https://etr56.sharepoint.com" # where should the report be saved $csvPath = "C:\Users\Public\largelists.csv" $itemThreshold = 20000 - +``` From 10bc4547018ab6676490232b21df3cbbac475c49 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:35:20 +0300 Subject: [PATCH 189/312] Create README.md --- .../Get the number of files and folders in library/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Get the number of files and folders in library/README.md diff --git a/Lists and Libraries Management/Get the number of files and folders in library/README.md b/Lists and Libraries Management/Get the number of files and folders in library/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Get the number of files and folders in library/README.md @@ -0,0 +1 @@ +. From bd0beea234d402deb12afa4a700eb02d75370ba8 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:35:51 +0300 Subject: [PATCH 190/312] Update README.md --- .../README.md | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get the number of files and folders in library/README.md b/Lists and Libraries Management/Get the number of files and folders in library/README.md index 9c558e35..8901618a 100644 --- a/Lists and Libraries Management/Get the number of files and folders in library/README.md +++ b/Lists and Libraries Management/Get the number of files and folders in library/README.md @@ -1 +1,57 @@ -. +Powershell script for getting the number of items, folders and files in a given SharePoint Online library. + + + +The script requires SharePoint Online SDK. + + + +In order to use it, download, open and edit the file: + + + +```PowerShell +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" + + + + $Username="test@tenant.onmicrosoft.com" + $Url = "https://tenant.sharepoint.com/sites/test" + $ListTitle = "noci" + $Password = Read-Host -Prompt "Enter password" -AsSecureString +``` + + +If you want to see a division between files and folders, uncomment the following part of the code: + + + +```PowerShell + +<# Uncomment if you want to see the split between files and folders + + $NoOfFiles=0 + $NoOfFolders=0 + + foreach($item in $listItems) + { + if($item.FileSystemObjectType -eq "File") + { + $NoOfFiles++; + } + if($item.FileSystemObjectType -eq "Folder") + { + $NoOfFolders++; + } + } + + Write-Host "Total number of items: " $list.ItemCount + Write-Host "Number of files:" $NoOfFiles + Write-Host "Number of folders:" $NoOfFolders + + #> +``` +Expected results will display the total number of items, number of files, and number of folders: + + From e061ea65ae71c308e9b091ece8636440048986eb Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:36:13 +0300 Subject: [PATCH 191/312] Update description.md --- .../description.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Lists and Libraries Management/Get the number of files and folders in library/description.md b/Lists and Libraries Management/Get the number of files and folders in library/description.md index 38846a59..8901618a 100644 --- a/Lists and Libraries Management/Get the number of files and folders in library/description.md +++ b/Lists and Libraries Management/Get the number of files and folders in library/description.md @@ -10,7 +10,7 @@ In order to use it, download, open and edit the file: -PowerShell +```PowerShell 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" @@ -20,14 +20,14 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens $Url = "https://tenant.sharepoint.com/sites/test" $ListTitle = "noci" $Password = Read-Host -Prompt "Enter password" -AsSecureString - +``` If you want to see a division between files and folders, uncomment the following part of the code: -PowerShell +```PowerShell <# Uncomment if you want to see the split between files and folders @@ -51,7 +51,7 @@ PowerShell Write-Host "Number of folders:" $NoOfFolders #> - +``` Expected results will display the total number of items, number of files, and number of folders: From 72aa2b658ee5fb8368af1bb3c4bffd07808dd222 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:39:01 +0300 Subject: [PATCH 192/312] Update README.md --- .../Get the number of files and folders in library/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get the number of files and folders in library/README.md b/Lists and Libraries Management/Get the number of files and folders in library/README.md index 8901618a..e52a606c 100644 --- a/Lists and Libraries Management/Get the number of files and folders in library/README.md +++ b/Lists and Libraries Management/Get the number of files and folders in library/README.md @@ -54,4 +54,4 @@ If you want to see a division between files and folders, uncomment the following ``` Expected results will display the total number of items, number of files, and number of folders: - + From f2b7fb2e36981b1ecd286c68a2ba199ea276f3ed Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:39:18 +0300 Subject: [PATCH 193/312] Update description.md --- .../description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get the number of files and folders in library/description.md b/Lists and Libraries Management/Get the number of files and folders in library/description.md index 8901618a..e52a606c 100644 --- a/Lists and Libraries Management/Get the number of files and folders in library/description.md +++ b/Lists and Libraries Management/Get the number of files and folders in library/description.md @@ -54,4 +54,4 @@ If you want to see a division between files and folders, uncomment the following ``` Expected results will display the total number of items, number of files, and number of folders: - + From e1d434f33b8032d4b8493fdecdd76f21400f4237 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:39:31 +0300 Subject: [PATCH 194/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md diff --git a/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md b/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md @@ -0,0 +1 @@ +. From c92f003f3161c8487e7080ecf69ad03aeeda2785 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:54:39 +0300 Subject: [PATCH 195/312] Update README.md --- .../README.md | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md b/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md index 9c558e35..a8d82a66 100644 --- a/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md +++ b/Lists and Libraries Management/Get-SPOListTemplates to retrieve list templates on a SharePoint Online site/README.md @@ -1 +1,37 @@ -. +A short script to retrieve default list templates from a given site. It does NOT retrieve custom list templates. + +
+ +## **How to use?** + +1. The script requires SharePoint Online SDK. Make sure you have those libraries on your machine: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +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" +``` +2. Download the file and open it (in NotePad or ISE). + +3. Verify the paths to SDK. + +4. Enter the admin's login and url of the site: + +```PowerShell +$adminLogin="admin@tenant.onmicrosoft.com" +$url="https://tenant.sharepoint.com/sites/invoices" +``` +5. Run the script in ANY Powershell. It will ask you for password. + + + + + +## *Expected results* + + + + + +

+Enjoy and please share feedback! From 823f43cec757960a2424d48af4df76804f7003a5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:55:16 +0300 Subject: [PATCH 196/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md diff --git a/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md b/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md @@ -0,0 +1 @@ +. From f5a15f55bc46b0a730a2afaffe2f139f46be4d9a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:55:24 +0300 Subject: [PATCH 197/312] Update README.md --- .../README.md | 133 +++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md b/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md index 9c558e35..950a9981 100644 --- a/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md +++ b/Lists and Libraries Management/GetSPOList Module to view and filter SPO list properties/README.md @@ -1 +1,132 @@ -. +New SharePoint Online Powershell cmdlet Get-SPOAllList which allows you to view and filter SPO list properties. + + + +There is no equivalent in Graphic User Interface (GUI) of this cmdlet + + + +## *Parameters* + + + +The cmdlet is using the following parameters: +``` + [string]$Username + ``` +The string specifies admin of the site +``` +[string]$Url +``` +Specifies the url of a site where you have the list +``` +[string]$AdminPassword, +``` +Admin's password +``` +[bool]$IncludeSubsites=$false +``` +Specifies whether the cmdlet should check for lists in the subsites as well, by default it is set to $false +``` +[bool]$IncludeAllProperties=$false +``` +Specifies whether you should view all the available properties or just the Title, Url and Created Date. By the default it is set to $false. + +
+ +## *Requirements* + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + +```powershell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` +
+ +## *Examples* + + + ++ Get a list of all lists and libraries in a site +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection/subsite -AdminPassword Pass +``` + + +
+ ++ Get a list of all lists and libraries in a site collection and its subsites +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection/subsite -AdminPassword Pass -IncludeSubsites $true +``` + + ++ Export to CSV a list of all lists and libraries in a site collection and its subsites +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection/subsite -AdminPassword Pass -IncludeSubsites $true | export-CSV -path c:\csv.csv +``` + + ++ Get a list of all lists and libraries with all their properties +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass -IncludeAllProperties $true +``` + + + ++ Get a specific list +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass -IncludeAllProperties $true | where {$_.Title -eq "ccc"} +``` + + + + + + + + ++ Get lists based on criteria +```powershell +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass -IncludeAllProperties $true | where {$_.Hidden -eq $true} | select Title, Created +``` + + + + ++ Get all document libraries + +The property that defines the type of list/library is called **BaseTemplate**. For all the ids check the [MSDN List Template Types](https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wssts/8bf797af-288c-4a1d-a14b-cf5394e636cf?redirectedfrom=MSDN) + +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass -IncludeAllProperties $true | where {$_.BaseTemplate -eq 101} | select Title, Created + + + ++ Get all lists and their corresponding types + +The property that defines the type of list/library is called **BaseTemplate**. For all the ids check the [MSDN List Template Types](https://docs.microsoft.com/en-us/openspecs/sharepoint_protocols/ms-wssts/8bf797af-288c-4a1d-a14b-cf5394e636cf?redirectedfrom=MSDN) + +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass -IncludeAllProperties $true | where {$_.BaseTemplate -eq 101} | select Title, Created + + + + + +
+ +# **How not to use the cmdlet:** + +Get-SPOList -Username user@domain.com -Url https://domain.sharepoint.com -AdminPassword Pass | where {$_.Hidden -eq $false} + + + +If you don't load the properties, you cannot search by them! + + + +

+Enjoy and please share feedback! + From d48aba1c013e366148936d2ed17ffb759ef9c3d5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:56:37 +0300 Subject: [PATCH 198/312] Update README.md --- Lists and Libraries Management/README.md | 77 +++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/README.md b/Lists and Libraries Management/README.md index 9c558e35..e0431292 100644 --- a/Lists and Libraries Management/README.md +++ b/Lists and Libraries Management/README.md @@ -1 +1,76 @@ -. +
+Lists and Libraries Management + +
+ + * Allow list to be deleted + * Allow or disallow list items to appear in search + * Allow or disallow users to create folders + * Break inheritance for all SPO lists in a site + * Change search setting for all lists in a site + * Checkout + * Powershell + * Find all checked out files in SharePoint library and check them in + * Find all checked out files in SharePoint Online library and check them in + * Find all files in library checked out by a specific user and check them in + * Force checkout on a list + * Force document checkout on the whole tenant + * Force your users to checkout documents using Powershell + * Get the number of checked out files per list + * How many checked out files per user in a library + * SPServer + * Find all checked out files in SharePoint library and check them in + * Column Management + * Add a geolocation column + * Add a library column with file extension + * Add a library column with file name and extension + * Create a new choice column + * Create a new column in list + * Create new column with properties + * Get all columns associated to a SINGLE content type in a list + * Module for list column management + * Remove list column + * Create SPO list with a Powershell cmdlet + * Delete unique permissions for all lists in a site collection + * Delete unique permissions in all items in a large list (5000+ items) + * FolderStructure + * Copy folder structure across SharePoint Online sites + * Copy folder structure across SharePoint Online tenants + * Copy folder structure from one library to another + * Copy folder structure from one library to another (SharePoint Online) 2 + * Get all event receivers on your lists in a site + * Get all lists not used since + * Get large SharePoint Online lists + * Get large SharePoint Online lists v2 + * Get the number of files and folders in library + * Get-SPOListTemplates to retrieve list templates on a SharePoint Online site + * GetSPOList Module to view and filter SPO list properties + * GetSPOListCount cmdlet + * Modern or Classic + * Set all lists to New or Classic Experience + * Set single list to New or Classic Experience + * Verify which lists have the new UI + * Verify which lists have the new UI using Powershell and REST + * MultipleListsC# + * Powershell Module for Managing SPO Lists + * Set the direction of the reading order + * For a single list + * For All Lists + * Set the major version limit for all the lists and libraries (data loss involved) + * Versioning + * Create a report on all file versions in the library + * Create a report on file versions in library or folder + * Delete all previous file versions in a library + * Enable minor and major versions for all lists in one site + * Enable minor versions using Powershell and CSOM + * Enable versioning for all lists in one site + * Enable versioning for one list + * Get versioning settings for all lists + * Views + * Get all list view properties using view GUID + * Get all list view properties using view name + * Get all views from a single list and their properties + * Remove view from SharePoint Online list + +
+
From 90c259abfa725817be3a97ff7f043ca15b6a3098 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:57:05 +0300 Subject: [PATCH 199/312] Update README.md --- Lists and Libraries Management/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/README.md b/Lists and Libraries Management/README.md index e0431292..8f3fa82a 100644 --- a/Lists and Libraries Management/README.md +++ b/Lists and Libraries Management/README.md @@ -1,4 +1,4 @@ -
+ Lists and Libraries Management
@@ -73,4 +73,4 @@ * Remove view from SharePoint Online list
-
+ From 1db01cc3301d5819f990596cec0b9743d1583c0d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:57:21 +0300 Subject: [PATCH 200/312] Update README.md --- Lists and Libraries Management/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lists and Libraries Management/README.md b/Lists and Libraries Management/README.md index 8f3fa82a..ce51d899 100644 --- a/Lists and Libraries Management/README.md +++ b/Lists and Libraries Management/README.md @@ -1,5 +1,5 @@ -Lists and Libraries Management +Lists and Libraries Management Inventory
From 2ada33896485d5447b769d182aa16a0e19e30497 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:58:04 +0300 Subject: [PATCH 201/312] Create README.md --- Lists and Libraries Management/GetSPOListCount cmdlet/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/GetSPOListCount cmdlet/README.md diff --git a/Lists and Libraries Management/GetSPOListCount cmdlet/README.md b/Lists and Libraries Management/GetSPOListCount cmdlet/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/GetSPOListCount cmdlet/README.md @@ -0,0 +1 @@ +. From 2f9c97ed14d82ee79c9256b1d53f695fe95e9ebd Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:58:13 +0300 Subject: [PATCH 202/312] Update README.md --- .../GetSPOListCount cmdlet/README.md | 93 ++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/GetSPOListCount cmdlet/README.md b/Lists and Libraries Management/GetSPOListCount cmdlet/README.md index 9c558e35..8a148960 100644 --- a/Lists and Libraries Management/GetSPOListCount cmdlet/README.md +++ b/Lists and Libraries Management/GetSPOListCount cmdlet/README.md @@ -1 +1,92 @@ -. +New SharePoint Online Powershell cmdlet Get-SPOListCount which allows you to get the number of SPO lists and libraries. In order to use the cmdlet, you have to import the module using [Import-Module](https://docs.microsoft.com/pl-pl/powershell/module/Microsoft.PowerShell.Core/Import-Module?view=powershell-5.1) cmdlet. + + + +There is no equivalent in Graphic User Interface (GUI) of this cmdlet + +### *Parameters* + + + +The cmdlet is using the following parameters: +``` + [string]$Username + ``` +The string specifies admin of the site +``` +[string]$Url +``` +Specifies the url of a site where you have the list +``` +[string]$AdminPassword, +``` +Admin's password +``` +[bool]$IncludeSubsites=$false +``` +Specifies whether the cmdlet should check for lists in the subsites as well, by default it is set to $false + +
+ +

Requirements

+ + + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + +```powershell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` +
+ +

Examples

+ + + ++ Get a count of lists and libraries in a site +```powershell +Get-SPOListCount -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection/subsite -AdminPassword Pass +``` + + ++ Get a count of lists and libraries across a site collection and its subsites +```powershell +Get-SPOListCount -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection -AdminPassword Pass -IncludeSubsites $true +``` + + + ++ Get a count of lists and libraries across a site collection and its subsites and export it to CSV file +```powershell +Get-SPOListCount -Username user@domain.com -Url https://domain.sharepoint.com/sites/sitecollection -AdminPassword Pass -IncludeSubsites $true | export-CSV C:\listcount.csv +``` + + + + + ++ Get a count of lists and libraries across whole tenant +```powershell +$colls=Get-SPOSite + +for($i=0;$i -lt $colls.Count ;$i++) {Get-SPOListCount -Username user@domain.com -Url $colls[$i].Url -AdminPassword Pass -IncludeSubsites $true } +``` + + + + +You get the count for all sites and subsite + the error for public site. + + +

+Enjoy and please share feedback! + + + +### ***For other list management cmdlets:*** + +[Set-List and 8 others](https://gallery.technet.microsoft.com/scriptcenter/Powershell-Module-for-b88bc2d9) + +[Get-SPOList to view and filter list properties](https://gallery.technet.microsoft.com/scriptcenter/GetSPOList-Module-to-view-cc4d3e9e) From 8b953156d990058a27c301496137657151f3a63f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:59:26 +0300 Subject: [PATCH 203/312] Create README.md --- .../Set all lists to New or Classic Experience/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md @@ -0,0 +1 @@ +. From b96c6af043efd4fc41e3cfe2e8fd0136bd708fe3 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:59:38 +0300 Subject: [PATCH 204/312] Update README.md --- .../README.md | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md index 9c558e35..45d9ed0f 100644 --- a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/README.md @@ -1 +1,27 @@ -. +Short Powershell that sets all lists to a chosen look: ClassicExperience (old UI), NewExperience (modern look) or Auto Setting. + + + +Old UI (ClassicExperience): + + + +Modern UI (NewExperience): + + + +In order to run the script, download, open the file and edit the 2 lines below: + +```PowerShell +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" +``` +Choose the experience you want to set for your lists:
+NewExperience - modern UI
+ClassicExperience - old UI
+Auto
+```PowerShell +Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperience + ``` +The script loops through ALL existing lists on the site and updates ALL of them (including default and hidden lists). + From 469eba6123c14f79304bf6c605d88858695d5519 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 16:59:54 +0300 Subject: [PATCH 205/312] Create README.md --- .../Set single list to New or Classic Experience/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md diff --git a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md @@ -0,0 +1 @@ +. From 0099776151726bde99c3b30f2c58fb4c9619f09f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:00:09 +0300 Subject: [PATCH 206/312] Update README.md --- .../README.md | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md index 9c558e35..1bc595a0 100644 --- a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md +++ b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md @@ -1 +1,44 @@ -. +Short Powershell that sets a single SharePoint Online list to a chosen look: ClassicExperience (old UI), NewExperience (modern look) or Auto Setting. + + + +Old UI (ClassicExperience): + + + +Modern UI (NewExperience): + + + + + + + + + +In order to run the script, download, open the file and edit the 2 lines below: + + + +PowerShell +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" + + + +Choose the experience you want to set for your lists: +NewExperience - modern UI +ClassicExperience - old UI +Auto +PowerShell +Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperience + + + + + +The script and several of its variations are also available on GitHub: https://github.com/PowershellScripts/SharePoint-Online-Modern-or-Classic-Experience + + + +Don't hesitate to report issues or request new features/scenarios! From 8c082d2c834cfb40c580d56f8208957e69002540 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:00:44 +0300 Subject: [PATCH 207/312] Update description.md --- .../description.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/description.md b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/description.md index 1bc595a0..7406db86 100644 --- a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/description.md +++ b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/description.md @@ -4,14 +4,11 @@ Short Powershell that sets a single SharePoint Online list to a chosen look: Cla Old UI (ClassicExperience): - + Modern UI (NewExperience): - - - - + From 272245ad4613269ca72f528791f78468dc5857f4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:00:55 +0300 Subject: [PATCH 208/312] Update README.md --- .../README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md index 1bc595a0..df526277 100644 --- a/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md +++ b/Lists and Libraries Management/Modern or Classic/Set single list to New or Classic Experience/README.md @@ -1,17 +1,13 @@ Short Powershell that sets a single SharePoint Online list to a chosen look: ClassicExperience (old UI), NewExperience (modern look) or Auto Setting. - Old UI (ClassicExperience): - + Modern UI (NewExperience): - - - - + From 67d765a2162a6750e46b20d6b46aa5eb45989b2d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:01:21 +0300 Subject: [PATCH 209/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md diff --git a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md @@ -0,0 +1 @@ +. From 87f08a36fa8d94d5d56f2f4effab08daa51908ad Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:01:49 +0300 Subject: [PATCH 210/312] Update README.md --- .../README.md | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md index 9c558e35..b32385d9 100644 --- a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md +++ b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI using Powershell and REST/README.md @@ -1 +1,42 @@ -. +Short Powershell that checks which SharePoint Online list has what experience setting. + + + +Old UI (ClassicExperience): + + + +Modern UI (NewExperience): + + + +In order to run the script, download, open the file and edit the 2 lines below: + + + +```PowerShell +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" +``` +The script loops through ALL existing lists on the site (including default and hidden lists). + + +Expected results: + + + + 1 - NewExperience + +2 - Classic Experience + +0 - Auto + + + +You can also export the results to a .csv file: + + + +```PowerShell +E:\technet\ListExperiences\GetExperienceWithREST.ps1 | export-csv c:\ListExperiences.csv + ``` From 6fb503492689d550ddf6ce14253ec2d989d803c7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:02:08 +0300 Subject: [PATCH 211/312] Create README.md --- .../Verify which lists have the new UI/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md diff --git a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md @@ -0,0 +1 @@ +. From 0da6be1310c627c90c7a5f12909ce07d31d98309 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:02:24 +0300 Subject: [PATCH 212/312] Update README.md --- .../README.md | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md index 9c558e35..5ccfe001 100644 --- a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md +++ b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/README.md @@ -1 +1,47 @@ -. +Short Powershell that checks which SharePoint Online list has what experience setting. + + + +## Old UI (ClassicExperience): + + + +## Modern UI (NewExperience): + + + +## In order to run the script, download, open the file and edit the 2 lines below: + +```PowerShell +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" +``` +The script loops through ALL existing lists on the site (including default and hidden lists). + + +## Expected results: + + + +## You can also export the results to a .csv file: + + + +```PowerShell +E:\technet\ListExperiences\GetExperience.ps1 | export-csv c:\ListExperiences.csv + ``` + + + + + + + + + + + + + + + From 437831ce207b8979076c27e85e7e84b83ef6fef4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 26 Sep 2020 17:02:33 +0300 Subject: [PATCH 213/312] Update description.md --- .../description.md | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/description.md b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/description.md index 5ccfe001..64c33cad 100644 --- a/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/description.md +++ b/Lists and Libraries Management/Modern or Classic/Verify which lists have the new UI/description.md @@ -32,16 +32,3 @@ E:\technet\ListExperiences\GetExperience.ps1 | export-csv c:\ListExperiences.cs ``` - - - - - - - - - - - - - From ae35ad6771968b465d6277142f5ab96b80ca0bb9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 27 Sep 2020 13:05:39 +0300 Subject: [PATCH 214/312] Update description.md --- .../description.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Permissions/Powershell/Break role inheritance for a single list/description.md b/Permissions/Powershell/Break role inheritance for a single list/description.md index 4a7b3011..a4449c6d 100644 --- a/Permissions/Powershell/Break role inheritance for a single list/description.md +++ b/Permissions/Powershell/Break role inheritance for a single list/description.md @@ -15,15 +15,17 @@ How to use? -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" - +``` 3. Enter the data to your tenant. Do not enter your password: -PowerShell +```PowerShell $username = "anaida@etr546.onmicrosoft.com" $siteurl = "https://etr546.sharepoint.com/sites/testflow" $listTitle = "Customers" +``` 4. Do not enter your password. You will be prompted for it during the script execution. 5. Run the script. + From 333fcf7e887778df00372ec2746383bde915f16f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 27 Sep 2020 13:05:47 +0300 Subject: [PATCH 215/312] Update README.md --- .../README.md | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Permissions/Powershell/Break role inheritance for a single list/README.md b/Permissions/Powershell/Break role inheritance for a single list/README.md index 9c558e35..a4449c6d 100644 --- a/Permissions/Powershell/Break role inheritance for a single list/README.md +++ b/Permissions/Powershell/Break role inheritance for a single list/README.md @@ -1 +1,31 @@ -. +Powershell script to set unique permissions on a single SharePoint Online list. + +It breaks role inheritance for one specified list. + + + + + +How to use? + + +1. Download and open the file. + +2. Enter the paths to appropriate SDKs: + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +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" +``` + 3. Enter the data to your tenant. Do not enter your password: +```PowerShell +$username = "anaida@etr546.onmicrosoft.com" +$siteurl = "https://etr546.sharepoint.com/sites/testflow" +$listTitle = "Customers" +``` + 4. Do not enter your password. You will be prompted for it during the script execution. + 5. Run the script. + From 0e8b6cc91feb570771f25bbd310ccd0a535e8da6 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 29 Sep 2020 19:19:58 +0300 Subject: [PATCH 216/312] Update README.md --- Managed Metadata/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Managed Metadata/README.md b/Managed Metadata/README.md index ac860a31..bd812ad1 100644 --- a/Managed Metadata/README.md +++ b/Managed Metadata/README.md @@ -1,2 +1,3 @@ . . +. From b9b442cd4ff96dfb4362aa6f96d0dbf3a5bac24f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 2 Oct 2020 16:54:30 +0300 Subject: [PATCH 217/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md diff --git a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md @@ -0,0 +1 @@ +. From 319d51bfc95f7dfe4335efb0e5abac4bef7b1b76 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 3 Oct 2020 14:48:11 +0300 Subject: [PATCH 218/312] Create README.md --- .../Remove permissions from SharePoint Online items/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Items Management/Remove permissions from SharePoint Online items/README.md diff --git a/Items Management/Remove permissions from SharePoint Online items/README.md b/Items Management/Remove permissions from SharePoint Online items/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Items Management/Remove permissions from SharePoint Online items/README.md @@ -0,0 +1 @@ +. From 3b99b3dd3323f2f2c8f0a5396d292e09679cba70 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 4 Oct 2020 21:25:15 +0300 Subject: [PATCH 219/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md diff --git a/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md b/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md @@ -0,0 +1 @@ +. From 687a45485afc810831fd3d1e8670444fc276c533 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 6 Oct 2020 22:18:07 +0300 Subject: [PATCH 220/312] Update description.md --- .../Audit Sharepoint folder structure to XML/description.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md index d38127c4..9e03fe35 100644 --- a/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md +++ b/File Management/Audit folder structure/Audit Sharepoint folder structure to XML/description.md @@ -9,9 +9,6 @@ The audit may come in handy during migration, upgrades or company restructuring. This Powershell script allows you to investigate into your folder structure in a single library and creates an XML file as a report. - - - In order to use the script you need to modify the following lines: From ce4e515223f514ebffa5f7adee456c7be8077133 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 12 Oct 2020 19:08:39 +0300 Subject: [PATCH 221/312] Create README.md --- File Management/Audit folder structure/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Audit folder structure/README.md diff --git a/File Management/Audit folder structure/README.md b/File Management/Audit folder structure/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Audit folder structure/README.md @@ -0,0 +1 @@ +. From 834cf8a5c82844b3723a1c30a39d1305cf0e155c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 14 Oct 2020 21:15:31 +0300 Subject: [PATCH 222/312] Update TaxonomyModule.psm1 --- .../TaxonomyModule.psm1 | 1 - 1 file changed, 1 deletion(-) diff --git a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 index 3e56a41d..c1ca53ae 100644 --- a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 +++ b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 @@ -28,7 +28,6 @@ $term=$set.CreateTerm($Term, $TermLanguage,$guid) $termstore.CommitAll() - $ctx.ExecuteQuery() } From e06bfddb59fe2d5cdf540bf89269f62ea8fed74d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 16 Oct 2020 16:55:28 +0300 Subject: [PATCH 223/312] Update NewSPOListItem.psm1 --- .../Create new list item using Powershell/NewSPOListItem.psm1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 b/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 index fc64496c..b57130e4 100644 --- a/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 +++ b/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 @@ -16,7 +16,7 @@ function New-SPOListItem{ [string]$AdditionalValue="" ) - $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) $ctx.Load($ctx.Web) From c3debcc10ed6e86a046176373acba8a131c7e2be Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 31 Oct 2020 14:17:44 +0200 Subject: [PATCH 224/312] Update README.md --- Managed Metadata/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Managed Metadata/README.md b/Managed Metadata/README.md index bd812ad1..e84f5917 100644 --- a/Managed Metadata/README.md +++ b/Managed Metadata/README.md @@ -1,3 +1 @@ -. -. -. +Cmdlets and scripts related to taxonomy. From 8786a1cc2aeaa9beb9f026a585cd94bcedf0ba4c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 1 Nov 2020 14:17:03 +0200 Subject: [PATCH 225/312] Create README.md --- .../Create a new SharePoint Online taxonomy term/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Managed Metadata/Create a new SharePoint Online taxonomy term/README.md diff --git a/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md @@ -0,0 +1 @@ +. From 98d3154d88bcd716083d4fa641cbf88fb344c9a1 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 1 Nov 2020 14:17:27 +0200 Subject: [PATCH 226/312] Update README.md --- .../README.md | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md index 9c558e35..a777c65a 100644 --- a/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md +++ b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md @@ -1 +1,31 @@ -. +A short script to create a single term in a specific term set of the default taxonomy store. The script applies to SharePoint Online tenants. + + + +You need to open the file and specify the following data: + + + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="trial@trial.onmicrosoft.com" +$Url="https://trial-admin.sharepoint.com" +$TermSetGuid="ee09533d-4ea4-49b2-b328-fcfb72126568" +$Term="POwershellTermmik2" +$TermLanguage=1033 +``` + + +The script requires SharePoint Online SDK. Open the file and refer the appropriate libraries here: + + + +```PowerShell + #Paths to SDK +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll" +``` +The script can be adapted to create multiple terms for test purposes. + From 8d74111f81e74592893e8a571419da27f174a72b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 3 Nov 2020 16:09:35 +0200 Subject: [PATCH 227/312] Update TaxonomyModule.psm1 --- .../TaxonomyModule.psm1 | 1 - 1 file changed, 1 deletion(-) diff --git a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 index c1ca53ae..f25b0e44 100644 --- a/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 +++ b/Managed Metadata/Taxonomy cmdlets module to manage your term store in SharePoint Online/TaxonomyModule.psm1 @@ -43,7 +43,6 @@ function Get-SPOTermGroups{ $groups=$termstore.Groups $ctx.Load($groups) - $ctx.ExecuteQuery() foreach($group in $groups){ From 15ae04fea07ca2d6a5999a56220f3ddd4f3ec817 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 4 Nov 2020 20:47:17 +0200 Subject: [PATCH 228/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 OTHER/Uninstall unwanted app from your site using Powershell/README.md diff --git a/OTHER/Uninstall unwanted app from your site using Powershell/README.md b/OTHER/Uninstall unwanted app from your site using Powershell/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/OTHER/Uninstall unwanted app from your site using Powershell/README.md @@ -0,0 +1 @@ +. From e200c25ead15301d7e440762dc4fa9748387fc0c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 5 Nov 2020 20:44:52 +0200 Subject: [PATCH 229/312] Update README.md --- .../README.md | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md b/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md index 9c558e35..1c594634 100644 --- a/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md +++ b/Managed Metadata/Pull all groups, termsets, terms from your default SharePoint Online termstore/README.md @@ -1 +1,31 @@ -. +A short script for SharePoint Online tenants to retrieve all terms from the termstore. + +The script iterates through Groups, TermSets and Terms, loading properties of each and displaying them. + +Before running the script, open the file and enter your tenant's data: + +```PowerShell +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@trial456.onmicrosoft.com" +$Url="https://trial456-admin.sharepoint.com" + ``` + + +The script requires SharePoint Online SDK. Download and install the libraries and refer them in the script. In the most common scenario all that is required is changing **15\ISAPI** value to **16\ISAPI**: + + + +```PowerShell + #Paths to SDK +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Taxonomy.dll" + ``` + + + +Expected results: + + + From db0547cec7223cf53542a26201f76440f7d7aca6 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 7 Nov 2020 20:22:39 +0200 Subject: [PATCH 230/312] Update README.md --- .../Create a new SharePoint Online taxonomy term/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md index a777c65a..a58ae050 100644 --- a/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md +++ b/Managed Metadata/Create a new SharePoint Online taxonomy term/README.md @@ -17,7 +17,7 @@ $TermLanguage=1033 ``` -The script requires SharePoint Online SDK. Open the file and refer the appropriate libraries here: +You need SharePoint Online SDK torun the script. Open the file and refer the appropriate libraries here: From 13a466dcf6e2d449bb4e2f32176d9d2d442e792c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 8 Nov 2020 13:33:51 +0200 Subject: [PATCH 231/312] Update README.md --- .../README.md | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md b/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md index 9c558e35..9e5d06b5 100644 --- a/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md +++ b/Lists and Libraries Management/Break inheritance for all SPO lists in a site/README.md @@ -1 +1,35 @@ -. +Powershell script to break inherited permissions for all lists in a site collection. + +**Before you run it, you have to modify the last line of the script!** + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + + +Set-SPOListBreakRoleInheritance -Username "trial@trialtrial123.onmicrosoft.com" -Url "https://trialtrial123.sharepoint.com" -AdminPassword "Pass" -IncludeSubsites $false + ``` + ++ Enter your credentials and the site where you want to modify the inheritance. ++ Set -IncludeSubsites $true if you want to break inheritance also in the subsites ++ Set -IncludeSubsites $false if you want to break inheritance only in the main/root site ++ Verify if the [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) is installed in the same location on your computer + + + +## **Related scripts:** + +[Restore inheritance for all lists](https://gallery.technet.microsoft.com/scriptcenter/Delete-Unique-Permissions-91be8246) + +[Modify inherited permissions for a SharePoint Online site (module)](https://gallery.technet.microsoft.com/scriptcenter/Modify-Web-Inherited-125aaa54) + +[Modify list permissions with Powershell cmdlets (module)](https://gallery.technet.microsoft.com/scriptcenter/Powershell-Module-for-b88bc2d9) + +[Delete unique permissions (C# program)](https://gallery.technet.microsoft.com/scriptcenter/ResetRoleInhertienace-04f5c544) + +[Get lists with unique permissions (C# program)](https://gallery.technet.microsoft.com/scriptcenter/Get-Lists-with-Unique-90c4321b) + +

+Enjoy and please share your comments and questions! From 72e1777af5d6e2fc343345dbaf5a5a4c3fa33dfc Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 11 Nov 2020 19:24:29 +0200 Subject: [PATCH 232/312] Update AllowListDeletion.ps1 --- .../Allow list to be deleted/AllowListDeletion.ps1 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Lists and Libraries Management/Allow list to be deleted/AllowListDeletion.ps1 b/Lists and Libraries Management/Allow list to be deleted/AllowListDeletion.ps1 index 18adcd8b..973f7e0e 100644 --- a/Lists and Libraries Management/Allow list to be deleted/AllowListDeletion.ps1 +++ b/Lists and Libraries Management/Allow list to be deleted/AllowListDeletion.ps1 @@ -26,11 +26,11 @@ param ( } $ctx.Load($ctx.Site) - $lista=$ctx.Web.Lists.GetByTitle($ListTitle) - $ctx.Load($lista) + $list=$ctx.Web.Lists.GetByTitle($ListTitle) + $ctx.Load($list) $ctx.ExecuteQuery() - $lista.AllowDeletion = $false - $lista.Update() + $list.AllowDeletion = $false + $list.Update() $ctx.ExecuteQuery() @@ -48,4 +48,4 @@ $Url="https://etr56.sharepoint.com/sites/testflow" $ListTitle="Customers" -Allow-SPOListDeletion -Username $Username -AdminPassword $AdminPassword -Url $Url -ListTitle $ListTitle \ No newline at end of file +Allow-SPOListDeletion -Username $Username -AdminPassword $AdminPassword -Url $Url -ListTitle $ListTitle From 501d8558c43bc18aaee16ada699509f84ca03a12 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 13 Nov 2020 18:39:20 +0200 Subject: [PATCH 233/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 OneDrive for Business/Globally set OneDrive for Business Access Requests and Members Can Share/README.md diff --git a/OneDrive for Business/Globally set OneDrive for Business Access Requests and Members Can Share/README.md b/OneDrive for Business/Globally set OneDrive for Business Access Requests and Members Can Share/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/OneDrive for Business/Globally set OneDrive for Business Access Requests and Members Can Share/README.md @@ -0,0 +1 @@ +. From 70a164125755103ef4b0a3d08d2c0c607387850f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Nov 2020 19:27:39 +0200 Subject: [PATCH 234/312] Update SharingAllowedDomainList.ps1 --- .../SharingAllowedDomainList.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tenant Settings/Allow external sharing only with specific domains/SharingAllowedDomainList.ps1 b/Tenant Settings/Allow external sharing only with specific domains/SharingAllowedDomainList.ps1 index 6d2520cc..00c97313 100644 --- a/Tenant Settings/Allow external sharing only with specific domains/SharingAllowedDomainList.ps1 +++ b/Tenant Settings/Allow external sharing only with specific domains/SharingAllowedDomainList.ps1 @@ -1,4 +1,4 @@ -function Set-SiteColl{ +function Set-TenantSharing{ param ( [Parameter(Mandatory=$true,Position=1)] [string]$Username, @@ -35,4 +35,4 @@ $username="admin@TENANT.onmicrosoft.com" $Url="https://TENANT-admin.sharepoint.com" $AllowDomainList="test.com madeup.com" -Set-SiteColl -Username $username -Url $Url -password $AdminPassword -AllowDomainList $AllowDomainList +Set-TenantSharing -Username $username -Url $Url -password $AdminPassword -AllowDomainList $AllowDomainList From 6372b528fb8d22e4dbe5199e183fdb148ab13f8a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 15 Nov 2020 10:18:52 +0200 Subject: [PATCH 235/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tenant Settings/Set default link type for SharePoint Online tenant sharing settings/README.md diff --git a/Tenant Settings/Set default link type for SharePoint Online tenant sharing settings/README.md b/Tenant Settings/Set default link type for SharePoint Online tenant sharing settings/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Tenant Settings/Set default link type for SharePoint Online tenant sharing settings/README.md @@ -0,0 +1 @@ +. From 656eff27f554b3e9e78d254f955f4358d88e0744 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 16 Nov 2020 23:00:04 +0200 Subject: [PATCH 236/312] Create README.md --- .../Delete all web parts from a single page/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Pages/ClassicWebparts/Delete all web parts from a single page/README.md diff --git a/Pages/ClassicWebparts/Delete all web parts from a single page/README.md b/Pages/ClassicWebparts/Delete all web parts from a single page/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Pages/ClassicWebparts/Delete all web parts from a single page/README.md @@ -0,0 +1 @@ +. From 94a680a97a9f4223c102390f4ca99750cae61ab9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 18 Nov 2020 23:02:38 +0200 Subject: [PATCH 237/312] Create README.md --- OTHER/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 OTHER/README.md diff --git a/OTHER/README.md b/OTHER/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/OTHER/README.md @@ -0,0 +1 @@ +. From 2116984f90e9a582b0740458d89e02cad3f8bd66 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 19 Nov 2020 23:16:28 +0200 Subject: [PATCH 238/312] Update readme.md --- Licensing/Check User Licenses using plan type/readme.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Licensing/Check User Licenses using plan type/readme.md b/Licensing/Check User Licenses using plan type/readme.md index 122e9903..a36717b8 100644 --- a/Licensing/Check User Licenses using plan type/readme.md +++ b/Licensing/Check User Licenses using plan type/readme.md @@ -20,7 +20,6 @@ If you have multiple subscriptions in your tenant and would like to check a part 3. In the first lines you see: - ```PowerShell $PlanToCheck="Exchange" From da361b3f7a36ad7c8c5ee8d7286359079a8ebb79 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 20 Nov 2020 21:21:40 +0200 Subject: [PATCH 239/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md diff --git a/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md b/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md @@ -0,0 +1 @@ +. From 91c0d53b9bb0b8a4c9d0ae883ee956cdeb9249a0 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 20 Nov 2020 21:22:09 +0200 Subject: [PATCH 240/312] Update README.md --- .../README.md | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md b/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md index 9c558e35..a4152221 100644 --- a/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md +++ b/OneDrive for Business/Add BCC to all sharing invitations in OneDrive for Business/README.md @@ -1 +1,29 @@ -. +Short Powershell script to send bcc copies to all sharing invitations send from users' OneDrives for Business. The script uses CSOM with December 2015 update. + +## How to use? + +- Download and open the .ps1 file. +- Add correct SharePoint Online SDK libraries: + + +```PowerShell +#Paths to SDK +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\SharePoint Client Components\16.0\Assemblies\Microsoft.Online.SharePoint.Client.Tenant.dll" +``` +- Enter the correct url, and admin login. Under InvitationsList, enter the email addresses that you want to add in BCC to every sharing invitation in your users' OneDrive for Business. You will be additionally prompted for the password. Do not enter it in the file: +```PowerShell + $spoTenant.BccExternalSharingInvitationsList={arleta.wanat@SomeFakeAdresse.com} + + + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="admin@TENANT.onmicrosoft.com" +$Url="https://TENANT-admin.sharepoint.com" + ``` +- Run the script + +After the setting takes place, the BCC emails will start receiving copies of the sharing invitations with Invited person's email in the "TO" field and inviter's in "CC": + + From a08563f652bc40fb89bee3bb8693c773d0a33ac4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 21 Nov 2020 20:08:13 +0200 Subject: [PATCH 241/312] Update README.md --- .../Declare files as records/README.md | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/File Management/Records Management/Declare files as records/README.md b/File Management/Records Management/Declare files as records/README.md index 9c558e35..8cb80003 100644 --- a/File Management/Records Management/Declare files as records/README.md +++ b/File Management/Records Management/Declare files as records/README.md @@ -1 +1,38 @@ -. +A short script to declare all items from a list as records. + + + +The script retrieves all items from the list, verifies whether they are not declared as records, and if yes, declares them. + +While executing, it displays the Name and Server Relative Url of the files. + + + + + +The script requires the newest libraries. The required libraries can be downloaded from + +https://www.microsoft.com/en-us/download/details.aspx?id=42038 + + + + + +You need to enter your tenant's data before running the script and paths to SDK. + + + +```PowerShell +#Paths to SDK +Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" +Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.Runtime.dll" +Add-Type -Path "H:\Libraries\Microsoft.Office.Client.Policy.dll" + + + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@testova365.onmicrosoft.com" +$Url="https://testova365.sharepoint.com/sites/STS" +$ListTitle="VersionTest" +``` From e98e6783a96cf2b6456cd55a4783d3a0ac599c6b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 22 Nov 2020 17:52:24 +0200 Subject: [PATCH 242/312] Update EnableVersioningForAllODBListsForSelectedUsers.ps1 --- .../EnableVersioningForAllODBListsForSelectedUsers.ps1 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/EnableVersioningForAllODBListsForSelectedUsers.ps1 b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/EnableVersioningForAllODBListsForSelectedUsers.ps1 index ca969413..f967bf10 100644 --- a/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/EnableVersioningForAllODBListsForSelectedUsers.ps1 +++ b/OneDrive for Business/Enable versioning for all lists in selected OneDrive sites/EnableVersioningForAllODBListsForSelectedUsers.ps1 @@ -71,7 +71,6 @@ $Global:csv=@() foreach($user in $users) { - if($user.Username.Contains('@')) { $persweb=$user.Username.Replace(".","_").Replace("@","_") @@ -82,9 +81,9 @@ foreach($user in $users) #Add the following line if you want to assign yourself, administrator or another user access to other users' personal sites #Set-SPOUser -Site $AdminUrl -IsSiteCollectionAdmin $true -LoginName t@trial765.onmicrosoft.com - Set-SPOListVersioning -EnableVersioning $EnableVersioning -Urelek $AdminUrl + Set-SPOListVersioning -EnableVersioning $EnableVersioning -Urelek $AdminUrl } } # Specify the path where the log file will be published -$Global:csv | Export-Csv -Path C:\Users\Public\Versioning.csv \ No newline at end of file +$Global:csv | Export-Csv -Path C:\Users\Public\Versioning.csv From 6341410e84b50171e4f9ca54bdd762669349d154 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 24 Nov 2020 21:42:30 +0200 Subject: [PATCH 243/312] Create README.md --- .../Update locale id for all personal sites/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 OneDrive for Business/Update locale id for all personal sites/README.md diff --git a/OneDrive for Business/Update locale id for all personal sites/README.md b/OneDrive for Business/Update locale id for all personal sites/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/OneDrive for Business/Update locale id for all personal sites/README.md @@ -0,0 +1 @@ +. From 3746a95e2cb18a68804bf8aaba12669dda3f7cb5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 24 Nov 2020 21:42:47 +0200 Subject: [PATCH 244/312] Update README.md --- .../README.md | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/OneDrive for Business/Update locale id for all personal sites/README.md b/OneDrive for Business/Update locale id for all personal sites/README.md index 9c558e35..e4c321ed 100644 --- a/OneDrive for Business/Update locale id for all personal sites/README.md +++ b/OneDrive for Business/Update locale id for all personal sites/README.md @@ -1 +1,57 @@ -. +## Acknowledegement +The script uses [Vadim Gremyachev's](https://sharepoint.stackexchange.com/users/10610/vadim-gremyachev) Invoke-LoadMethod published [here](https://sharepoint.stackexchange.com/questions/126221/spo-retrieve-hasuniqueroleassignements-property-using-powershell) + + + + + +## Description +The script updates locale id in regional settings of all personal sites to which you have access. The locale id can later be verified by going to Site Settings>Regional Settings. + + + +The script requires the following libraries: + + + +```PowerShell + # Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" +``` + + + + + + +Enter the correct data and specify the locale id you'd like to set: + + + +```PowerShell +# Insert the credentials and the name of the admin site +$Username="admin@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +Connect-SPOService https://tenant-admin.sharepoint.com -Credential $Username +$myhost="https://tenant-my.sharepoint.com" +$LocaleID=1033 +``` + + + + + + +If you are not currently an Administrator of the user's personal site, you can gain access using: + +```PowerShell +Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true +``` + + +In order to use the cmdlet, you can either modify the ```.ps1``` file or write a separate script. + + + + From 6c2f49c257e0f2c90096976adf9c79240bffc9f1 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 24 Nov 2020 21:43:01 +0200 Subject: [PATCH 245/312] Update description.md --- .../description.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/OneDrive for Business/Update locale id for all personal sites/description.md b/OneDrive for Business/Update locale id for all personal sites/description.md index e4c321ed..9178d50a 100644 --- a/OneDrive for Business/Update locale id for all personal sites/description.md +++ b/OneDrive for Business/Update locale id for all personal sites/description.md @@ -21,14 +21,8 @@ Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint. ``` - - - - Enter the correct data and specify the locale id you'd like to set: - - ```PowerShell # Insert the credentials and the name of the admin site $Username="admin@tenant.onmicrosoft.com" @@ -39,9 +33,6 @@ $LocaleID=1033 ``` - - - If you are not currently an Administrator of the user's personal site, you can gain access using: @@ -53,5 +44,3 @@ Set-SPOUser -Site $urelek -LoginName $username -IsSiteCollectionAdmin $true In order to use the cmdlet, you can either modify the ```.ps1``` file or write a separate script. - - From d7d6e74da8eeba70747a8fbf57305e1180da8d27 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 25 Nov 2020 23:31:28 +0200 Subject: [PATCH 246/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Powershell cmdlet for getting the number of files in a folder/README.md diff --git a/File Management/Powershell cmdlet for getting the number of files in a folder/README.md b/File Management/Powershell cmdlet for getting the number of files in a folder/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Powershell cmdlet for getting the number of files in a folder/README.md @@ -0,0 +1 @@ +. From d7a29139f475b46114cda3489a064d32387ee584 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 29 Nov 2020 13:54:10 +0200 Subject: [PATCH 247/312] Create README.md --- .../Allow or disallow list items to appear in search/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Allow or disallow list items to appear in search/README.md diff --git a/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md b/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md @@ -0,0 +1 @@ +. From 90d8022baf098ac2e08f59cd7d3cdbd1f67a30b9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 30 Nov 2020 20:38:09 +0200 Subject: [PATCH 248/312] Update README.md --- .../README.md | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md b/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md index 9c558e35..cb651248 100644 --- a/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md +++ b/Lists and Libraries Management/Allow or disallow list items to appear in search/README.md @@ -1 +1,28 @@ -. +A short Powershell script to allow or disallow crawling on a SharePoint Online list. + + It corresponds to the Search setting available under **List**>**List Settings**>**Advanced in the User Interface**: + + + +It requires installed [SharePoint Online SDK](http://www.microsoft.com/en-us/download/details.aspx?id=42038) + +You have to enter the list information before running the script: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and list +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$ListName="Announcements list" +$NoCrawl=$true +``` + + +

+Enjoy and please share your comments and questions! + + From 570225caeac7bfba4821f339df38d4200763b433 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 1 Dec 2020 20:09:57 +0200 Subject: [PATCH 249/312] Create README.md --- .../Allow or disallow users to create folders/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Allow or disallow users to create folders/README.md diff --git a/Lists and Libraries Management/Allow or disallow users to create folders/README.md b/Lists and Libraries Management/Allow or disallow users to create folders/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Allow or disallow users to create folders/README.md @@ -0,0 +1 @@ +. From 72fb5392e580558bb171091665075ac9a2a2d4b7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 3 Dec 2020 21:30:00 +0200 Subject: [PATCH 250/312] Update README.md --- .../Allow list to be deleted/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Allow list to be deleted/README.md b/Lists and Libraries Management/Allow list to be deleted/README.md index 9ff309d7..7a87b8a4 100644 --- a/Lists and Libraries Management/Allow list to be deleted/README.md +++ b/Lists and Libraries Management/Allow list to be deleted/README.md @@ -8,7 +8,7 @@ Please beware that the button is missing for a reason. Do not execute the script The script does not delete the list itself. - + ### How to use the script? From 34da9081c3ae3c89ef03517c7e3f8a6608baa6c7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 5 Dec 2020 16:08:07 +0200 Subject: [PATCH 251/312] Create README.md --- .../For All Lists/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md diff --git a/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md b/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md @@ -0,0 +1 @@ +. From ed193110f3bb42b1c9a14bb3a7b332595662a4a4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 5 Dec 2020 20:19:46 +0200 Subject: [PATCH 252/312] Update README.md --- .../For All Lists/README.md | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md b/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md index 9c558e35..eaeab6a4 100644 --- a/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md +++ b/Lists and Libraries Management/Set the direction of the reading order/For All Lists/README.md @@ -1 +1,52 @@ -. +A short Powershell script to set the direction of the reading order for all lists in a site + + + +You can choose between: + +ltr - left to right + +rtl - right to left + +none + + + + + + + +It requires installed [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) + +You have to enter the list information before running the script: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and the desired reading order: rtl, ltr, none +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$Direction="rtl" +``` + +Results: + + + + + + +

+Enjoy and please share feedback! + +## **Related scripts** +[Set direction of the reading order for a single list](https://gallery.technet.microsoft.com/office/Set-the-direction-of-the-f17ca66a) + +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + +[Change permission property in lists (article)](https://social.technet.microsoft.com/wiki/contents/articles/29556.sharepoint-online-delete-unique-permissions-in-multiple-lists-using-csom.aspx) + +[Other list-related scripts](https://gallery.technet.microsoft.com/office/site/search?query=list&f%5B1%5D.Value=list&f%5B1%5D.Type=SearchText&f%5B0%5D.Value=Arleta%20Wanat&f%5B0%5D.Type=User&ac=4) From 279cafa6c969a98c7f8e67c310ed4bd6429dcd8d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 6 Dec 2020 20:07:44 +0200 Subject: [PATCH 253/312] Update README.md --- .../README.md | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Pages/ClassicWebparts/Delete all web parts from a single page/README.md b/Pages/ClassicWebparts/Delete all web parts from a single page/README.md index 9c558e35..81f6f8e3 100644 --- a/Pages/ClassicWebparts/Delete all web parts from a single page/README.md +++ b/Pages/ClassicWebparts/Delete all web parts from a single page/README.md @@ -1 +1,29 @@ -. +Powershell script to delete ALL web parts from a single page. If you need to delete only one web part you can find its ID using [GetAllWebParts script](https://gallery.technet.microsoft.com/office/Get-all-web-parts-and-449f1d47) and remove it using [DeleteSingleWebPart script.](https://gallery.technet.microsoft.com/Delete-single-web-part-6404fced) + + + +The script requires the following SharePoint Online SDK libraries. Please confirm that the files are in the same location on your PC. + + + +```PowerShell + # Paths to SDK. Please verify location on your computer. +Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll" +Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll" +``` + + +You need to enter your credentials and the page relative url: + + + +```PowerShell +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="t@trial567.onmicrosoft.com" +$Url="https://trial567.sharepoint.com/sites/powie64" + + +Remove-SPOWebParts -Username $username -Url $Url -password $AdminPassword -pageUrl "/sites/powie64/SitePages/pgie.aspx" +``` + + From 5caab36c0ed674317b2460cc8a1d7e155312e749 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 8 Dec 2020 13:11:20 +0200 Subject: [PATCH 254/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 File Management/Restore previous versions in selected files the entire library/README.md diff --git a/File Management/Restore previous versions in selected files the entire library/README.md b/File Management/Restore previous versions in selected files the entire library/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/File Management/Restore previous versions in selected files the entire library/README.md @@ -0,0 +1 @@ +. From d03a5cd15a2c5438b8b4675b69d5826190509685 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 9 Dec 2020 21:55:06 +0200 Subject: [PATCH 255/312] Update README.md --- .../README.md | 54 ++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/Licensing/Remove SharePoint Online licenses for all users/README.md b/Licensing/Remove SharePoint Online licenses for all users/README.md index 9c558e35..fd1c9252 100644 --- a/Licensing/Remove SharePoint Online licenses for all users/README.md +++ b/Licensing/Remove SharePoint Online licenses for all users/README.md @@ -1 +1,53 @@ -. +A short script to remove SharePoint Online license from all the users. + + + +The result for all users should be similar to: + + + +The script will ask you for admin credentials. + +The script has no error handling - feel free to improve it: + + + + + +```PowerShell +Connect-MsolService + +$disabledPlans= @() +$disabledPlans +="SHAREPOINTENTERPRISE" +$disabledPlans +="SHAREPOINTWAC" + + + +$Users = Get-MsolUser -All + +$Plan=(Get-MsolAccountSku).AccountSkuID.Trim() + +$noSPO = New-MsolLicenseOptions -AccountSkuId $Plan -DisabledPlans $disabledPlans + +Write-Host $Plan + +foreach($user in $Users) + { + Set-MsolUser -UserPrincipalName $user.UserPrincipalName -UsageLocation "US" + Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -RemoveLicenses $Plan + Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses $Plan -LicenseOptions $noSPO + Write-Host "Done for user " $user.UserPrincipalName + } +``` + + + + +Though a different scenario and on a different occassions, I have been using this [article](http://blogs.technet.com/b/treycarlee/archive/2013/11/01/list-of-powershell-licensing-sku-s-for-office-365.aspx) by [Trey Carlee](https://social.technet.microsoft.com/profile/Trey%20Carlee) for a long time and the script above would not exist without Trey's initial help. I do recommend his insights for all who struggle with user licensing. + + + + + +

+Enjoy and please share your comments and questions! From 6082c1958ce3e4813fa4ff7eec01f9d66486c61b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 10 Dec 2020 20:34:59 +0200 Subject: [PATCH 256/312] Create README.md --- .../For a single list/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md diff --git a/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md b/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md @@ -0,0 +1 @@ +. From efb2f13896b9d7cf6c6f270fd9883fa0a989d002 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 10 Dec 2020 20:35:18 +0200 Subject: [PATCH 257/312] Update README.md --- .../For a single list/README.md | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md b/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md index 9c558e35..157c378b 100644 --- a/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md +++ b/Lists and Libraries Management/Set the direction of the reading order/For a single list/README.md @@ -1 +1,43 @@ -. +A short Powershell script to set the direction of the reading order for the list. + +You can choose between: + +ltr - left to right + +rtl - right to left + +none + +It requires installed [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) + +You have to enter the list information before running the script: + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and list +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$ListName="Generic List" +$Direction ="none" +$Direction paramater specifies the reading order. Enter "ltr", "rtl" or "none" +``` + + + + + +

+Enjoy and please share feedback! + + +## **Related scripts** +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + +[Change permission property in lists (article)](https://social.technet.microsoft.com/wiki/contents/articles/29556.sharepoint-online-delete-unique-permissions-in-multiple-lists-using-csom.aspx) + +[Other list-related scripts](https://gallery.technet.microsoft.com/office/site/search?query=list&f%5B1%5D.Value=list&f%5B1%5D.Type=SearchText&f%5B0%5D.Value=Arleta%20Wanat&f%5B0%5D.Type=User&ac=4) From 7c08de0fd8a495830ce233c51f8a0842c7a4f982 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 10 Dec 2020 20:35:44 +0200 Subject: [PATCH 258/312] Update description.md --- .../For a single list/description.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Lists and Libraries Management/Set the direction of the reading order/For a single list/description.md b/Lists and Libraries Management/Set the direction of the reading order/For a single list/description.md index 157c378b..e9c0eeb2 100644 --- a/Lists and Libraries Management/Set the direction of the reading order/For a single list/description.md +++ b/Lists and Libraries Management/Set the direction of the reading order/For a single list/description.md @@ -3,9 +3,7 @@ A short Powershell script to set the direction of the reading order for the list You can choose between: ltr - left to right - rtl - right to left - none It requires installed [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) @@ -27,10 +25,6 @@ $Direction ="none" $Direction paramater specifies the reading order. Enter "ltr", "rtl" or "none" ``` - - - -

Enjoy and please share feedback! From 7128df73122345d297bd8ca1d92711169a7c81bd Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:45:26 +0200 Subject: [PATCH 259/312] Update README.md --- .../README.md | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Allow or disallow users to create folders/README.md b/Lists and Libraries Management/Allow or disallow users to create folders/README.md index 9c558e35..ceab566d 100644 --- a/Lists and Libraries Management/Allow or disallow users to create folders/README.md +++ b/Lists and Libraries Management/Allow or disallow users to create folders/README.md @@ -1 +1,36 @@ -. +A short Powershell script to set the EnableFolderCreation property for all lists in a site. The property is responsible for the folder icon under Files tab (see screenshot). The button allows you to create folders in a given lists. + +If you disable the button, you and your users will not be able to create folders. + +Applies to lists and libraries + +It requires installed [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) + +You have to enter the list information before running the script: + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Insert the credentials and the name of the site and the desired reading order: rtl, ltr, none +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$EnableFolderCreation=$false + ``` + +## **Results** + + + +### Related scripts +[Set direction of the reading order for a single list](https://gallery.technet.microsoft.com/office/Set-the-direction-of-the-f17ca66a) + +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + + +

+Enjoy and please share your comments and questions! From 2b0610ffa59a5b912cfc8f31bbe7a91636590a9f Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:46:30 +0200 Subject: [PATCH 260/312] Update README.md --- .../Add a geolocation column/README.md | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Add a geolocation column/README.md b/Lists and Libraries Management/Column Management/Add a geolocation column/README.md index 9c558e35..b6a0e9bd 100644 --- a/Lists and Libraries Management/Column Management/Add a geolocation column/README.md +++ b/Lists and Libraries Management/Column Management/Add a geolocation column/README.md @@ -1 +1,44 @@ -. +Short Powershell script to create a geolocation field in SharePoint Online list. + + + +The script uses the following resources: + +https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-add-a-geolocation-column-to-a-list-programmatically-in-sharepoint + +https://docs.microsoft.com/en-us/sharepoint/dev/general-development/create-a-map-view-for-the-geolocation-field-in-sharepoint + +https://docs.microsoft.com/en-us/sharepoint/dev/general-development/how-to-set-the-bing-maps-key-at-the-web-and-farm-level-in-sharepoint + +https://docs.microsoft.com/en-us/sharepoint/dev/general-development/create-a-map-view-for-the-geolocation-field-in-sharepoint + + + + + +```PowerShell + $list = $web.Lists.GetByTitle($ListTitle) + $ctx.Load($list) + $ctx.ExecuteQuery() + + $geolocationfield=$list.Fields.AddFieldAsXml("", $true, [Microsoft.SharePoint.Client.AddFieldOptions]::AddToAllContentTypes) + $list.Update() + $ctx.ExecuteQuery() + ``` + + +In order to use it, open the file and enter correct values: + +```PowerShell +#Paths to SDK +Add-Type -Path "C:\Program Files (x86)\Common Files\microsoft shared\Web Server Extensions\16\Microsoft.SharePoint.Client.dll" +Add-Type -Path "C:\Program Files (x86)\Common Files\microsoft shared\Web Server Extensions\16\Microsoft.SharePoint.Client.Runtime.dll" + + + +#Enter the data +$Password=Read-Host -Prompt "Enter password" -AsSecureString +$Username="me@testtenant.onmicrosoft.com" +$Url="https://tenant.sharepoint.com" +$ListTitle="test2" +``` From 40214ddd6a91e2a04008ce71c82bd103e7a22c56 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:46:55 +0200 Subject: [PATCH 261/312] Update description.md --- .../Add a geolocation column/description.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Add a geolocation column/description.md b/Lists and Libraries Management/Column Management/Add a geolocation column/description.md index b78bc892..b6a0e9bd 100644 --- a/Lists and Libraries Management/Column Management/Add a geolocation column/description.md +++ b/Lists and Libraries Management/Column Management/Add a geolocation column/description.md @@ -16,7 +16,7 @@ https://docs.microsoft.com/en-us/sharepoint/dev/general-development/create-a-map -PowerShell +```PowerShell $list = $web.Lists.GetByTitle($ListTitle) $ctx.Load($list) $ctx.ExecuteQuery() @@ -24,12 +24,12 @@ PowerShell $geolocationfield=$list.Fields.AddFieldAsXml("", $true, [Microsoft.SharePoint.Client.AddFieldOptions]::AddToAllContentTypes) $list.Update() $ctx.ExecuteQuery() - + ``` In order to use it, open the file and enter correct values: -PowerShell +```PowerShell #Paths to SDK Add-Type -Path "C:\Program Files (x86)\Common Files\microsoft shared\Web Server Extensions\16\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files (x86)\Common Files\microsoft shared\Web Server Extensions\16\Microsoft.SharePoint.Client.Runtime.dll" @@ -41,3 +41,4 @@ $Password=Read-Host -Prompt "Enter password" -AsSecureString $Username="me@testtenant.onmicrosoft.com" $Url="https://tenant.sharepoint.com" $ListTitle="test2" +``` From 6a8bb14a498392ded8d92fb950bd768e5f32546c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:47:19 +0200 Subject: [PATCH 262/312] Create README.md --- .../Add a library column with file extension/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Add a library column with file extension/README.md diff --git a/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md b/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md @@ -0,0 +1 @@ +. From 29aa82ca4979ed6b9b1b717cb2bc174d50f96422 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:47:40 +0200 Subject: [PATCH 263/312] Update README.md --- .../README.md | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md b/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md index 9c558e35..e5688e7d 100644 --- a/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md +++ b/Lists and Libraries Management/Column Management/Add a library column with file extension/README.md @@ -1 +1,38 @@ -. +A short script to add a column with file extensions to a SharePoint Online library: + + + +The script is not an event receiver, so if you add a new item, it may need to be re-applied. + +The script is not optimized. Please rewrite before applying to large or multiple lists. + + + +Every time it runs, the script creates a new list field (column) through this line: + + + +```PowerShell +New-SPOListColumn -ListTitle $listTitle -FieldDisplayName $newColumnName -FieldType Text -StaticName "FileNameWithExtension" -Name "FileNameWithExtension" -AddToDefaultView $true -AddToView "" +``` +If you do not want to add another column to your list, comment the line out using #. + + +The script will not run without editing. Remember to enter the correct data: +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" + +$pasworde = Read-Host -Prompt "Password " -AsSecureString +$uss="2190@tenant.onmicrosoft.com" +$listTitle="ext3" +$listID="1979CC10-3E5D-4D99-9BE6-8BE6229E4E13" +$newColumnName="Extension" + +Connect-SPOCSOM -Username $uss -AdminPassword $pasworde -Url "https://tenant.sharepoint.com/sites/powie3" +``` + + +

+Enjoy and please share feedback! From 165d404fb122bb48b316b764ce161f2bf8c7715b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:47:50 +0200 Subject: [PATCH 264/312] Create README.md --- .../Add a library column with file name and extension/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md diff --git a/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md @@ -0,0 +1 @@ +. From 5797dd7d0b65270376cb6f1d2125762955c8354b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:48:16 +0200 Subject: [PATCH 265/312] Update README.md --- .../README.md | 86 ++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md index 9c558e35..b7ceff91 100644 --- a/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md +++ b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/README.md @@ -1 +1,85 @@ -. +The script is another variation of [Add a library column with file extension (SharePoint Online).](https://gallery.technet.microsoft.com/Add-a-library-column-with-04796e65) + + + +It adds a column with file extensions to a SharePoint Online library: + + + + + + + +The script is not an event receiver, so if you add a new item, it may need to be re-applied. + +The script is not optimized. Please rewrite before applying to large or multiple lists. + + + +Every time it runs, the script creates a new list field (column) through this line: + +```PowerShell +New-SPOListColumn -ListTitle $listTitle -FieldDisplayName $newColumnName -FieldType Text -StaticName "FileNameWithExtension" -Name "FileNameWithExtension" -AddToDefaultView $true -AddToView "" +``` +If you do not want to add another column to your list, comment the line out using #. + + +The script will not run without editing. Remember to enter the correct data: +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" + +$pasword = Read-Host -Prompt "Password " -AsSecureString +$uss="2190@tenant.onmicrosoft.com" +$listTitle="ext3" +$listID="1979CC10-3E5D-4D99-9BE6-8BE6229E4E13" +$newColumnName="Extension" + +Connect-SPOCSOM -Username $uss -AdminPassword $pasword -Url "https://tenant.sharepoint.com/sites/powie3" +``` + +

+Enjoy and please share feedback!The script is another variation of [Add a library column with file extension (SharePoint Online).](https://gallery.technet.microsoft.com/Add-a-library-column-with-04796e65) + + + +It adds a column with file extensions to a SharePoint Online library: + + + + + + + +The script is not an event receiver, so if you add a new item, it may need to be re-applied. + +The script is not optimized. Please rewrite before applying to large or multiple lists. + + + +Every time it runs, the script creates a new list field (column) through this line: + +```PowerShell +New-SPOListColumn -ListTitle $listTitle -FieldDisplayName $newColumnName -FieldType Text -StaticName "FileNameWithExtension" -Name "FileNameWithExtension" -AddToDefaultView $true -AddToView "" +``` +If you do not want to add another column to your list, comment the line out using #. + + +The script will not run without editing. Remember to enter the correct data: +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SharePoint.Client.Runtime\v4.0_16.0.0.0__71e9bce111e9429c\Microsoft.SharePoint.Client.Runtime.dll" + +$pasword = Read-Host -Prompt "Password " -AsSecureString +$uss="2190@tenant.onmicrosoft.com" +$listTitle="ext3" +$listID="1979CC10-3E5D-4D99-9BE6-8BE6229E4E13" +$newColumnName="Extension" + +Connect-SPOCSOM -Username $uss -AdminPassword $pasword -Url "https://tenant.sharepoint.com/sites/powie3" +``` + +

+Enjoy and please share feedback! From 0603097df397eda5fb08dae3f6dc0c65af6e22f1 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:48:27 +0200 Subject: [PATCH 266/312] Update description.md --- .../description.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Add a library column with file name and extension/description.md b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/description.md index b7ceff91..bd647c95 100644 --- a/Lists and Libraries Management/Column Management/Add a library column with file name and extension/description.md +++ b/Lists and Libraries Management/Column Management/Add a library column with file name and extension/description.md @@ -6,10 +6,6 @@ It adds a column with file extensions to a SharePoint Online library: - - - - The script is not an event receiver, so if you add a new item, it may need to be re-applied. The script is not optimized. Please rewrite before applying to large or multiple lists. From 248584dd94bc30c6dbd8b39683a633117922079a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:48:42 +0200 Subject: [PATCH 267/312] Create README.md --- .../Column Management/Create a new choice column/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Create a new choice column/README.md diff --git a/Lists and Libraries Management/Column Management/Create a new choice column/README.md b/Lists and Libraries Management/Column Management/Create a new choice column/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Create a new choice column/README.md @@ -0,0 +1 @@ +. From 0743b8884de5654211f999cd4bd2fd52fa3b71f5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:49:34 +0200 Subject: [PATCH 268/312] Update README.md --- .../Create a new choice column/README.md | 86 ++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Create a new choice column/README.md b/Lists and Libraries Management/Column Management/Create a new choice column/README.md index 9c558e35..a7006053 100644 --- a/Lists and Libraries Management/Column Management/Create a new choice column/README.md +++ b/Lists and Libraries Management/Column Management/Create a new choice column/README.md @@ -1 +1,85 @@ -. +Powershell module with a new cmdlet + +```New-SPOListChoiceColumn``` + + + +Import the module to make the cmdlet available. + + + +## Parameters + +The cmdlet is using the following parameters: +
``` [string]$Username``` + +The string specifies admin of the site +
```[string]$Url``` + +Specifies the url of a site where you have the list +
```[string]$AdminPassword``` + +Admin's password +
```[string]$ListTitle``` + +Specifies the title of the list where you want to change the settings. +
```[string]$FieldDisplayName``` + +Mandatory +
```[String[]] $ChoiceNames``` + +Choices that you want to add as options for users to choose. Add each choice after a comma - you can add as many as you like. + +e.g. -ChoiceNames choice1, choice2, option3, option5, option100 +
```[string]$Description=""``` + +Optional. +
```[string]$Required="false"``` + +Optional. Specifies whether the field is required. +
```[ValidateSet('Dropdown','Radiobuttons', 'Checkboxes')] [string]$Format="Dropdown"``` + +Optional. Specifies the format of the field. By default set to "dropdown" +
```[string]$Group=""``` + +Optional. +
```[string]$StaticName``` + +Mandatory +
```[string]$Name``` + +Mandatory +
```[string]$Version="1"``` + +Optional. + + +## Examples + +```PowerShell +New-SPOListChoiceColumn -Username -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -FieldDisplayName elp -Description "desdes"-Required true -ChoiceNames bio, ewe, ewe, ewewe +``` + + + +Results: + + + + + +## Requirements + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + + +

+Enjoy and please share feedback! From 27fb7134a7c0b9b098c4658d66afd3af0cce38ec Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 11 Dec 2020 19:49:41 +0200 Subject: [PATCH 269/312] Update description.md --- .../Create a new choice column/description.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Create a new choice column/description.md b/Lists and Libraries Management/Column Management/Create a new choice column/description.md index 6be80102..3de732c5 100644 --- a/Lists and Libraries Management/Column Management/Create a new choice column/description.md +++ b/Lists and Libraries Management/Column Management/Create a new choice column/description.md @@ -6,9 +6,6 @@ Powershell module with a new cmdlet Import the module to make the cmdlet available. - - - ## Parameters From eb0375daa22d611bde055d5293c67fcfe9919476 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:49:36 +0200 Subject: [PATCH 270/312] Create README.md --- .../Column Management/Create a new column in list/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Create a new column in list/README.md diff --git a/Lists and Libraries Management/Column Management/Create a new column in list/README.md b/Lists and Libraries Management/Column Management/Create a new column in list/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Create a new column in list/README.md @@ -0,0 +1 @@ +. From 47faed896dc780e85545a7b07e874e6650db3382 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:50:17 +0200 Subject: [PATCH 271/312] Update README.md --- .../Create a new column in list/README.md | 75 ++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Create a new column in list/README.md b/Lists and Libraries Management/Column Management/Create a new column in list/README.md index 9c558e35..1bbb613c 100644 --- a/Lists and Libraries Management/Column Management/Create a new column in list/README.md +++ b/Lists and Libraries Management/Column Management/Create a new column in list/README.md @@ -1 +1,74 @@ -. +Powershell Module that allows you to add a new column to a SharePoint Online list, using the following cmdlet: + +**New-SPOListColumn** + +Import the module using import-module and use the cmdlet whenever you want! + + + +## Parameters + +The cmdlet is using the following parameters: +
```[string]$Username``` + +The string specifies admin of the site +
```[string]$Url``` + +Specifies the url of a site where you have the list +
```[string]$AdminPassword,``` + +Admin's password +
```[string]$ListTitle``` + +Specifies the title of the list where you want to change the settings. +
```[string]$FieldDisplayName``` + +Mandatory. Specifies the display name of the column +
```[System.String]$FieldType``` + +Mandatory. Specifies the type of the field. You can choose among: + + 'AllDayEvent','Attachments','Boolean', 'Calculate', 'Choice', 'Computed', 'ContenttypeID', 'Counter', 'CrossProjectLink', 'Currency', 'DateTime', 'Error', 'File', 'Geolocation', 'GridChoice', 'Guid', 'Integer', 'Invalid', 'Lookup', 'MaxItems', 'ModStat', 'MultiChoice', 'Note', 'Number', 'OutcomeChoice', 'PageSeparator', 'Recurrence', 'Text', 'ThreadIndex', 'Threading', 'Url','User', 'WorkflowEventType', 'WorkflowStatus' + + + +It corresponds to GUI: + + + +## Examples + + + + New-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://tenant.sharepoint.com -AdminPassword Pass -LisTitle "contacts list" -FieldDisplayName "Business Phone" -FieldType Number + + + + The properties will be populated later on + + + + + +## Requirements + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + + + +

+Enjoy and please share feedback! + + + + From 3e42819fb5cd08dc5654c61b9c20a529de563e98 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:50:29 +0200 Subject: [PATCH 272/312] Update description.md --- .../Create a new column in list/description.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Create a new column in list/description.md b/Lists and Libraries Management/Column Management/Create a new column in list/description.md index 5adc7879..29bb9a2c 100644 --- a/Lists and Libraries Management/Column Management/Create a new column in list/description.md +++ b/Lists and Libraries Management/Column Management/Create a new column in list/description.md @@ -36,7 +36,7 @@ It corresponds to GUI: -Examples +## Examples @@ -48,27 +48,18 @@ Examples - - ## Requirements The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! - - - - ```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" ``` -

Enjoy and please share feedback! - - From 042b8eeb1c3476ac2b281491c51bd46300d5a82c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:50:43 +0200 Subject: [PATCH 273/312] Create README.md --- .../Create new column with properties/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Create new column with properties/README.md diff --git a/Lists and Libraries Management/Column Management/Create new column with properties/README.md b/Lists and Libraries Management/Column Management/Create new column with properties/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Create new column with properties/README.md @@ -0,0 +1 @@ +. From 821d0ae5314ded4eb9c60f48350252977326da5c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:50:59 +0200 Subject: [PATCH 274/312] Update README.md --- .../README.md | 64 ++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Create new column with properties/README.md b/Lists and Libraries Management/Column Management/Create new column with properties/README.md index 9c558e35..d82f4d94 100644 --- a/Lists and Libraries Management/Column Management/Create new column with properties/README.md +++ b/Lists and Libraries Management/Column Management/Create new column with properties/README.md @@ -1 +1,63 @@ -. +A short one-cmdlet Powershell module that adds another cmdlet to your set of cmdlets. Import the module to make the cmdlet available. + +### New-SPOListColumnWithProperties + + +## Parameters + +The cmdlet is using the following parameters: +
```[string]$Username``` + +The string specifies admin of the site +
```[string]$Url``` + +Specifies the url of a site where you have the list +
```[string]$AdminPassword,``` + +Admin's password +
```[string]$ListTitle``` + +Specifies the title of the list where you want to change the settings. +
```[string]$FieldDisplayName``` + +Mandatory +
```[string]$Description=""``` + +Optional. +
```[string]$Required="false"``` + +Optional. Specifies whether the field is required. +
```[string]$Group=""``` + +Optional. +
```[string]$StaticName``` + +Mandatory +
```[string]$Name``` + +Mandatory +
```[string]$Version="1"``` + +Optional. + + + + +## Requirements + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + + + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + +

+Enjoy and please share feedback! + + From 4bf7e430188e691ea2add8cfa822cd999695d3d1 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:51:10 +0200 Subject: [PATCH 275/312] Update description.md --- .../Create new column with properties/description.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Create new column with properties/description.md b/Lists and Libraries Management/Column Management/Create new column with properties/description.md index d82f4d94..9265a7a2 100644 --- a/Lists and Libraries Management/Column Management/Create new column with properties/description.md +++ b/Lists and Libraries Management/Column Management/Create new column with properties/description.md @@ -47,10 +47,6 @@ Optional. The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! - - - - ```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" From c754a3f04d5964f4b0da70ca71f9a74d7074f948 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:51:37 +0200 Subject: [PATCH 276/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md @@ -0,0 +1 @@ +. From ad2c169e1a9a3d3c3b042e11c27aac74fef45dcb Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:52:05 +0200 Subject: [PATCH 277/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md index 1c334d44..4da0f11a 100644 --- a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md @@ -6,7 +6,7 @@ You can either display the column name or all of its properties. If you want to The script requires SharePoint Online SDK installed. Before running the script, enter the information: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -17,7 +17,7 @@ $AdminPassword=Read-Host -Prompt "Password" -AsSecureString $AdminUrl="https://etr56.sharepoint.com/sites/commsite" $ListTitle = "Site Pages" $CTName = "Repost Page" # name of the content type, e.g. Item, Folder, Site Page - +``` Results example: 1. Only names From c1b5a8fbc6826426bb868325c605a17c5a4f4445 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 13:55:27 +0200 Subject: [PATCH 278/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md index 4da0f11a..4ba5f4b8 100644 --- a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md @@ -23,13 +23,13 @@ Results example: 1. Only names - + 2. All properties of a fieldlink/column - + From b97bcebf085820b102849e7983b4437e57bb4d7c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 14:00:50 +0200 Subject: [PATCH 279/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md index 4ba5f4b8..87c35d11 100644 --- a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md @@ -23,13 +23,13 @@ Results example: 1. Only names - + 2. All properties of a fieldlink/column - + From a2e716f86a7c48e328a51b0ee5a3bfdce51a6672 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 14:01:12 +0200 Subject: [PATCH 280/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md index 87c35d11..378b9e92 100644 --- a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/description.md @@ -23,13 +23,13 @@ Results example: 1. Only names - + 2. All properties of a fieldlink/column - + From ab5c5e91e1fcf11b647a1dc0964ca458d21bc6d9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 13 Dec 2020 14:01:33 +0200 Subject: [PATCH 281/312] Update README.md --- .../README.md | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md index 9c558e35..378b9e92 100644 --- a/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md +++ b/Lists and Libraries Management/Column Management/Get all columns associated to a SINGLE content type in a list/README.md @@ -1 +1,35 @@ -. +The script gets all columns associated to a SINGLE content type in a list. + +You can either display the column name or all of its properties. If you want to display all proeprties, uncomment line: # Write-Output $fieldlink + + + +The script requires SharePoint Online SDK installed. Before running the script, enter the information: + +```PowerShell + # Paths to SDK. Please verify location on your computer. +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" + +# Insert the credentials and the name of the admin site +$Username="ana@etr56.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$AdminUrl="https://etr56.sharepoint.com/sites/commsite" +$ListTitle = "Site Pages" +$CTName = "Repost Page" # name of the content type, e.g. Item, Folder, Site Page +``` +Results example: + +1. Only names + + + + + +2. All properties of a fieldlink/column + + + + + + From 6274fab981c1ac1aaf111f9dd84377f036094e6b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Mon, 14 Dec 2020 21:33:13 +0200 Subject: [PATCH 282/312] Create README.md --- .../Module for list column management/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Module for list column management/README.md diff --git a/Lists and Libraries Management/Column Management/Module for list column management/README.md b/Lists and Libraries Management/Column Management/Module for list column management/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Module for list column management/README.md @@ -0,0 +1 @@ +. From a2d00fffcfba3346a75a02de0e8e23c6f66bc988 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:12:46 +0200 Subject: [PATCH 283/312] Update README.md --- .../README.md | 334 +++++++++++++++++- 1 file changed, 333 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Module for list column management/README.md b/Lists and Libraries Management/Column Management/Module for list column management/README.md index 9c558e35..2b8905e8 100644 --- a/Lists and Libraries Management/Column Management/Module for list column management/README.md +++ b/Lists and Libraries Management/Column Management/Module for list column management/README.md @@ -1 +1,333 @@ -. +SharePoint Online Powershell Module for list column management: + + ``` +New-SPOListColumn + +New-SPOListChoiceColumn + +Set-SPOListColumn + +Get-SPOListColumn + +Remove-SPOListColumn + +Get-SPOListColumnFieldIsObjectPropertyInstantiated + +Get-SPOListColumnFieldIsPropertyAvailable +``` + + +
+ +## **New-SPOListColumn** + +Creates a new columnin that list + +### *Parameters* + +The cmdlets share most of the parameters. Use tab to search through them all. +```powershell + [string]$Username +``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to add/change the column. +```powershell +[string]$FieldDisplayName +``` +Mandatory +```powershell +[string]$Description="" +``` +Optional. +```powershell +[string]$Required="false" +``` +Optional. Specifies whether the field is required. +```powershell +[string]$Group="" +``` +Optional. +```powershell +[string]$StaticName +``` +Optional. If not specified, will be set to FieldDisplayName +```powershell +[string]$Name +``` +Optional. If not specified, will be set to FieldDisplayName +```powershell +[string]$Version="1" +``` +Optional. + +
+ +## **New-SPOListChoiceColumn** + +### *Parameters* + +The cmdlet is using the following parameters: +```powershell + [string]$Username + ``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to change the settings. +```powershell +[string]$FieldDisplayName +``` +Mandatory +```powershell +[String[]] $ChoiceNames, +``` +Choices that you want to add as options for users to choose. Add each choice after a comma - you can add as many as you like. + +e.g. -ChoiceNames choice1, choice2, option3, option5, option100 +```powershell +[string]$Description="" +``` +Optional. +```powershell +[string]$Required="false" +``` +Optional. Specifies whether the field is required. +```powershell +[ValidateSet('Dropdown','Radiobuttons', 'Checkboxes')] [string]$Format="Dropdown", +``` +Optional. Specifies the format of the field. By default set to "dropdown" +```powershell +[string]$Group="" +``` +Optional. +```powershell +[string]$StaticName +``` +Mandatory +```powershell +[string]$Name +``` +Mandatory +```powershell +[string]$Version="1" +``` +Optional. + +
+ +## **Set-SPOListColumn** + +Sets properties of a column + +### *Parameters* + +The cmdlet is using the following parameters: +```powershell + [string]$Username + ``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to change the settings. +```powershell +[string]$FieldDisplayName +``` +Mandatory +```powershell +[string]$Description +``` +Optional. +```powershell +[string]$Direction +$EnforceUniqueValues +[string]$Group +[bool]$Hidden +[bool]$Indexed +[string]$JSLink +[bool]$ReadOnlyField +[bool]$Required +[string]$SchemaXML +[string]$StaticName +[string]$Tag +[string]$FieldTitle +``` +Exact descriptions can be found [here](https://docs.microsoft.com/en-us/sharepoint/dev/schema/field-element-field?redirectedfrom=MSDN) + +
+ +## **Get-SPOListColumn** + +Gets a column by title or id and displays all its properties + +### *Parameters* + +The cmdlets share most of the parameters. Use tab to search through them all. +```powershell + [string]$Username + ``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to add/change the column. +```powershell +[string]$FieldDisplayName +``` +Mandatory +```powershell +[string]$ID +``` +Optional. + + + +
+ +## **Remove-SPOListColumn** + +Removes a column + +### *Parameters* + +The cmdlets share most of the parameters. Use tab to search through them all. +```powershell + [string]$Username + ``` +The string specifies admin of the site +```powershell +[string]$Url +``` +Specifies the url of a site where you have the list +```powershell +[string]$AdminPassword, +``` +Admin's password +```powershell +[string]$ListTitle +``` +Specifies the title of the list where you want to add/change the column. +```powershell +[string]$FieldDisplayName +``` +Mandatory + +
+ +## Examples + + + ++ Get Column properties + +Get-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -FieldTitle extra_field + + +
+ ++ Get Column properties and export them to CSV file + +Get-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -FieldTitle extra_field | export-csv c:\csvfilepath.csv +
+ ++ Set Column properties to $ReadOnly + +Set-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pas +ListTitle "contacts list" -FieldTitle "Business Phone" -ReadOnly $true + + +
+ ++ Require unique values in the column + +Set-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass +ListTitle "contacts list" -Indexed $true -EnforceUniqueValues $true -FieldTitle "Business Phone" + + +
+ ++ Create a new list column - you can choose any type you want! + +New-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass +ListTitle "contacts list" -FieldDisplayName "Business Phone" -FieldType Number + + + +* the properties will be populated automatically +
+ ++ Set the direction of text in the column from right to left + +Set-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass +ListTitle "contacts list" -FieldTitle "Business Phone" -Direction RTL + + +
+ ++ Remove column + +Remove-SPOListColumn -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -FieldTitle extra_field + +
+ ++ Create a new choice column and set available choices + +New-SPOListChoiceColumn -Username -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -FieldDisplayName elp -Description "desdes"-Required true -ChoiceNames bio, ewe, ewe, ewewe + + + +Results: + + + + +## Requirements + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + +```PowerShell +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` + +Let me know about your experience in the Q&A section! + +EDITS: + +25/01/15 Fixed the checkboxes thanks to [this blog](http://svengillis.blogspot.com/2008/03/display-choices-using-checkboxes-allow.html) From f848bc10dcc4ccdd5e264c04f60fcd491044680b Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 16 Dec 2020 20:12:59 +0200 Subject: [PATCH 284/312] Create README.md --- .../Column Management/Remove list column/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Column Management/Remove list column/README.md diff --git a/Lists and Libraries Management/Column Management/Remove list column/README.md b/Lists and Libraries Management/Column Management/Remove list column/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Remove list column/README.md @@ -0,0 +1 @@ +. From 4da8f61747d347ef8712c07c18fdb6e30f760ad9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 17 Dec 2020 22:55:30 +0200 Subject: [PATCH 285/312] Update README.md --- .../Remove list column/README.md | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Column Management/Remove list column/README.md b/Lists and Libraries Management/Column Management/Remove list column/README.md index 9c558e35..9f1f619a 100644 --- a/Lists and Libraries Management/Column Management/Remove list column/README.md +++ b/Lists and Libraries Management/Column Management/Remove list column/README.md @@ -1 +1,35 @@ -. +Short Powershell script removes a column from a SharePoint Online list + +## *Requirements* + +Before running the script, you have to modify the last lines! + + +```PowerShell +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + + + + + Remove-SPOListColumn -Username user@domain.onmicrosoft.com -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "contacts list" -FieldTitle "ool" +``` + ++ Enter your credentials ++ FieldTitle means the name of the column that you want to delete ++ Verify if the [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) is installed in the same location on your computer + + +### **Related scripts** + +[Create a new column using Powershell cmdlet](https://gallery.technet.microsoft.com/scriptcenter/Create-a-new-column-for-a-501108c6) + +[Create a new choice column and define choices using Powershell cmdlet](https://gallery.technet.microsoft.com/scriptcenter/Create-a-new-choice-column-34d957d8) + + + + + +

+Enjoy and please share feedback! From 0fe4e8d042853ebaccf1141a0491b42cfd913d18 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 31 Dec 2020 17:11:04 +0200 Subject: [PATCH 286/312] Create README.md --- .../Create SPO list with a Powershell cmdlet/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md diff --git a/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md b/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md @@ -0,0 +1 @@ +. From 7ad89ce32c4dc13319b2cf69e4d639c3c0aed9f5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 31 Dec 2020 17:11:21 +0200 Subject: [PATCH 287/312] Update README.md --- .../README.md | 138 +++++++++++++++++- 1 file changed, 137 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md b/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md index 9c558e35..a27b5c85 100644 --- a/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md +++ b/Lists and Libraries Management/Create SPO list with a Powershell cmdlet/README.md @@ -1 +1,137 @@ -. +New SharePoint Online Powershell cmdlet to create list. + +The list can follow any of the below templates: + + GenericList | Custom list. Value = 100. | - + --- | --- | --- +_ | DocumentLibrary | Document library. Value = 101. +_ | Survey | Survey. Value = 102. +_ | Links | Links. Value = 103. +_ | Announcements | Announcements. Value = 104. +_ | Contacts | Contacts. Value = 105. +_ | Events | Calendar. Value = 106. +_ | Tasks | Tasks. Value = 107. +_ | DiscussionBoard | Discussion board. Value = 108. +_ | PictureLibrary | Picture library. Value = 109. +_ | DataSources | Data sources for a site. Value = 110. +_ | WebTemplateCatalog | Site template gallery. Value = 111. +_ | UserInformation | User Information. Value = 112. +_ | WebPartCatalog | Web Part gallery. Value = 113. +_ | ListTemplateCatalog | List Template gallery. Value = 114. +_ |XMLForm | XML Form library. Value = 115. + + + [Full list of template types](https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms413878(v=office.15)?redirectedfrom=MSDN) + +
+ +## **New-SPOList** + +Adds a list to an existing site + + + +### *Parameters* + +The cmdlet is using the following parameters: +``` + [string]$Username + ``` +The string specifies admin of the site +``` +[string]$Url +``` +Specifies the url of the site +``` +[string]$AdminPassword, +``` +Admin's password +``` +[string]$Title, +``` +Specifies the title of the list +``` +[int]$TemplateType=100, +``` +Optional. The template type defines whether the list will be a contact list, tasks, announcements, etc. The full list of template types can be found [here](https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms413878(v=office.15)?redirectedfrom=MSDN). By default it is set to "Custom list" (generic list). +``` +[string]$Description="", +``` +Optional. Sets the description of the list. +``` +[Int]$DocumentTemplateType, +``` +Optional. Sets the document template type +``` +[GUID]$TemplateFeatureID, +``` +Optional. Sets the template feature id +``` +[string]$ListUrl="" +``` +Optional. Sets the url of the list. If not specified, the url will be the same as the title. + +
+ +## **Examples** + + + ++ Create a custom list titled "fromps" (template type doesn't have to be specified) + +New-SPOList -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -Title "fromps" -TemplateType 100 -Description "desc" -Verbose + +List fromps has been added to https://trialtrial123.sharepoint.com + ++ Create a contacts list entitled "contacts" + +New-SPOList -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -Title "contacts" -TemplateType 105 -Description "desc" -Verbose + +List contacts has been added to https://trialtrial123.sharepoint.com + + + ++ Trying to create a list with the same name will throw an error: + +New-SPOList -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -Title "contacts" -TemplateType 107 -Description "desc" -Verbose + + + ++ Create a tasks list entitled "tasks" + +New-SPOList -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -Title "tasks" -TemplateType 107 -Description "desc" -Verbose + +List tasks has been added to https://trialtrial123.sharepoint.com/psweb2/psweb2 + ++ Trying to create a list with invalid template type will throw an error + +New-SPOList -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/psweb2/psweb2 -AdminPassword Pass -Title "tasks" -TemplateType 1110 -Description "desc" -Verbose + +Exception calling "ExecuteQuery" with "0" argument(s): "Modèle de liste non valide." + + + +Creating list with a url different from the title & more examples + + + +
+ +## *Requirements* + + + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +``` + + + + +

+Enjoy and please share feedback! From 9a75f08a7b729548a3f403ffd61ef1e91384d007 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 2 Jan 2021 15:13:27 +0200 Subject: [PATCH 288/312] Update README.md --- .../README.md | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md b/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md index 9c558e35..273b6d86 100644 --- a/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md +++ b/Lists and Libraries Management/Delete unique permissions for all lists in a site collection/README.md @@ -1 +1,40 @@ -. +Powershell script to restore inherited permissions for all lists in a site collection. + + + +Before you run it, you have to modify the last line of the script! + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + + +Set-SPOListResetRoleInheritance -Username "trial@trialtrial123.onmicrosoft.com" -Url "https://trialtrial123.sharepoint.com" -AdminPassword "Pass" -IncludeSubsites $true +``` + +Enter your credentials and the site where you want to modify the inheritance. +Set -IncludeSubsites $true if you want to restore inherited permissions also in the subsites +Set -IncludeSubsites $false if you want to restore inherited permissions only in the main/root site +Verify if the [SharePoint Online SDK](http://www.microsoft.com/en-us/download/details.aspx?id=30722) is installed in the same location on your computer + +
+ +## **Related scripts** + +[Break inheritance for all lists](https://gallery.technet.microsoft.com/scriptcenter/Break-inheritance-for-all-ded251fa) + +[Modify inherited permissions for a SharePoint Online site (module)](https://gallery.technet.microsoft.com/scriptcenter/Modify-Web-Inherited-125aaa54) + +[Modify list permissions with Powershell cmdlets (module)](https://gallery.technet.microsoft.com/scriptcenter/Powershell-Module-for-b88bc2d9) + +[Delete unique permissions (C# program)](https://gallery.technet.microsoft.com/scriptcenter/ResetRoleInhertienace-04f5c544) + +[Get lists with unique permissions (C# program)](https://gallery.technet.microsoft.com/scriptcenter/Get-Lists-with-Unique-90c4321b) + + + +

+Enjoy and please share feedback! From c1f9b197f52c2d2838fb07aaabdddcae0ad76c49 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 2 Jan 2021 15:13:55 +0200 Subject: [PATCH 289/312] Update README.md --- .../README.md | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md index 9c558e35..f301226c 100644 --- a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md +++ b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md @@ -1 +1,59 @@ -. +Powershell script to restore inherited permissions for all items in a SharePoint Online list. + + + +The script works with large (5000+) lists. + +In order to make it possible script uses a solution published here: http://www.sptrenches.com/2016/06/get-all-items-in-5000-large-list-with.html and commented by Sharath Aluri here: https://gallery.technet.microsoft.com/office/Delete-unique-permissions-c6ea2b57/view/Discussions#content. + + + +The script is a variation of Delete unique permissions in all items in one single list using Powershell script available on the Technet Gallery. + + + +Before you run it, you have to modify the last lines of the script! + + + + + +PowerShell +# Paths to SDK. Please verify location on your computer. +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" + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="arleta@TENANT.onmicrosoft.com" +$Url="https://TENANT.sharepoint.com/sites/testID1de" +$ListTitle="testitems" + + +Enter your credentials and the site where you want to modify the inheritance. +Verify if the SharePoint Online SDK is installed in the same location on your computer + + + + + + + + + + +Related scripts: + +Delete unique permissions in all items in one single list using Powershell + +Delete unique permissions for all lists + +Break inheritance for all lists + +Modify inherited permissions for a SharePoint Online site (module) + +Modify list permissions with Powershell cmdlets (module) + +Delete unique permissions (C# program) + +Get lists with unique permissions (C# program) From a89464210dcdfea27e562167d2ed6b4551c15986 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 2 Jan 2021 15:14:14 +0200 Subject: [PATCH 290/312] Update README.md --- .../README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md index f301226c..28d672ea 100644 --- a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md +++ b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/README.md @@ -18,7 +18,7 @@ Before you run it, you have to modify the last lines of the script! -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -28,7 +28,7 @@ $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="arleta@TENANT.onmicrosoft.com" $Url="https://TENANT.sharepoint.com/sites/testID1de" $ListTitle="testitems" - +``` Enter your credentials and the site where you want to modify the inheritance. Verify if the SharePoint Online SDK is installed in the same location on your computer @@ -54,6 +54,3 @@ Modify inherited permissions for a SharePoint Online site (module) Modify list permissions with Powershell cmdlets (module) -Delete unique permissions (C# program) - -Get lists with unique permissions (C# program) From b4f879b2fc4c7a1335602ecb9c4112a8169851f9 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 2 Jan 2021 15:15:31 +0200 Subject: [PATCH 291/312] Update description.md --- .../description.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/description.md b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/description.md index f301226c..42522240 100644 --- a/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/description.md +++ b/Lists and Libraries Management/Delete unique permissions in all items in a large list (5000+ items)/description.md @@ -18,7 +18,7 @@ Before you run it, you have to modify the last lines of the script! -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. 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" @@ -28,7 +28,7 @@ $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString $username="arleta@TENANT.onmicrosoft.com" $Url="https://TENANT.sharepoint.com/sites/testID1de" $ListTitle="testitems" - +``` Enter your credentials and the site where you want to modify the inheritance. Verify if the SharePoint Online SDK is installed in the same location on your computer @@ -53,7 +53,3 @@ Break inheritance for all lists Modify inherited permissions for a SharePoint Online site (module) Modify list permissions with Powershell cmdlets (module) - -Delete unique permissions (C# program) - -Get lists with unique permissions (C# program) From f8ec01aac8e667cce460fb7914bccf1c755c4cd5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 3 Jan 2021 12:45:15 +0200 Subject: [PATCH 292/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md diff --git a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md @@ -0,0 +1 @@ +. From b8e16e257c9598f0e595840f68f69d01b80abcb8 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 3 Jan 2021 12:45:32 +0200 Subject: [PATCH 293/312] Update README.md --- .../README.md | 66 ++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md index 9c558e35..7d890e64 100644 --- a/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md +++ b/Lists and Libraries Management/FolderStructure/Copy folder structure across SharePoint Online tenants/README.md @@ -1 +1,65 @@ -. +A script to copy folder structure from a library in one tenant to a library in a different SharePoint Online tenant. The script copies folders, not files inside. + +
+ +## How to use? + +1. Download the script and open the file (you can use Powershell ISE or e.g. NotePad). + +2. Edit the following lines, entering your values (# means comment, changing these lines won't bring any effect): + +```PowerShell +# Enter the username of a user who has enough permissions to read the source site +$admin1="t@trial890.onmicrosoft.com" + +# Where you want to copy the folder structure FROM +$Sourcesite="https://trial890.sharepoint.com/sites/TeamsitewithLibraries" +$sourceLibrary="tescik2" + +# Where you want to copy the folder structure TO +$destinationSite="https://trial900.sharepoint.com" +$destLibr="try1" + +# Enter the username of a user who has enough permissions to create folders in the target site +$admin2="t@trial900.onmicrosoft.com" +``` +```$admin1``` - user who has enough permissions to read the source site
+```$admin2``` - user who has enough permissions to create folders in the target site
+```$Sourcesite``` - url of the site where the source library is; it's the url of the site where you want to copy FROM
+```$destinationSite``` - url of the site where the target library is; it's the url of the site where you want to copy TO
+```$sourceLibrary``` - title of the original library where you want to copy the structure FROM
+ +```$destLibr``` - title of the destination library where you want to copy the structure TO
+ +**For all the data please stick to the formats as in the example.** + +3. Save and run the script. During execution it will ask you for a password and later on display relative urls of all the newly created folders. + +
+ +## Technicalities + +The scripts works with libraries, not lists. + +I tested it with several scenarios and it worked. However, testing went only as far as my imagination and limited time resources would go, so if you encounter a scenario where the script does not work or throws errors, please let me know in the Q&A section, and I will fix it. + +
+ +## Error handling + +Upper/lower case shouldn't cause any issues. That means whether you enter "DocLibrary" or "docliBRARY" they should be treated the same. If you notice otherwise, please report. + +Folders keep their casing. That means that "Big InvestMent" will remain "Big InvestMent" in the new library. + +
+ +## Other migration solutions + +[Copy folder structure across SharePoint Online sites](https://gallery.technet.microsoft.com/Copy-folder-structure-50a28b2b) + +[Copy folder structure from one library to another (SharePoint Online)](https://gallery.technet.microsoft.com/Copy-folder-structure-from-f6147ee6) + + + +

+Enjoy and please share feedback! From 1a4283e23737cceffc2aa85bbb5ed6afb3a3e799 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 7 Jan 2021 22:14:01 +0200 Subject: [PATCH 294/312] Delete MultipleLists.rar --- .../MultipleListsC#/MultipleLists.rar | Bin 450875 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Lists and Libraries Management/MultipleListsC#/MultipleLists.rar diff --git a/Lists and Libraries Management/MultipleListsC#/MultipleLists.rar b/Lists and Libraries Management/MultipleListsC#/MultipleLists.rar deleted file mode 100644 index fbc71c695d1f4cf3c94f20264e1b2ca79540c630..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 450875 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Ẋn=R)$w6_k=jLoZLj_#4OXFi=K_PyR26<<`^U8N+Bl zdI_i#P^L4qZteh)ly-4xv3y!Xpy)o6Adc6~xjxW8DES)Y+?Lx<=Q5OO4|l&cPs^$CQkjgedf(`=M5Irvq+=BSCV#8o z-$){-iI`1>Fgm9m{5i_}3PTf=WJpHCL*`*ZK}Jc-ZX{-vmzr#{_Nx*NTo71@ScTn? z0!G#{zDh$GJi$r&lvj6I9ed((29>{*AL-$d51d#hz%=0^Z-Pi@uhbf)YP;+@7e(VhlfAs|dKJAxW6}D` zNqyItS~S&^cDlI%Z81k-9+K23VjI?S9YNO4u1PZ1PP&ErMjG9YMl__nlQJ*3zTqrj zlww?MVTv*fX{0z}QVxyeD#(zqhWw209f&9hp0DCN)?(h%L39Svdv{jv>;AI@eTud= zQEZdTX6s}IKLxtQ8nhOgoDpgT_HLh8Xuh7bs(O^&D8-1X)xd%gpTrG#CA_@4scH=+ zMr3?(iBsW80P!9(OaqLgmwYC|Jg4I$#G3v^b?RTL&5XQ%T{{s1*U{HPA{J!ydDrtu zksEajjdv~U&jzsTKI5mDU}o;JOWZ-vH=Y)d;-Fo%&%rB~5{Nq-!k_I7H1>=-$uWgN z=1aY|GATu(h~Sjb0<7Mq9~2yiUI=2)m<;4 zi#?MOeu$6675y@Afp&M`U$lG)dfPqdD%4R;)R&Md-<DH=D5c7mVWx-yu$ zl1CFhV2uLYVI#E`jB#>ecj>-*JTdoQ-x6|cu`>aG?c(P(vQ@~at~F{RsC}+pR1THx zBs!DF2zHo8je(T6Yo zYNtzWt7K`l`s?WK$~jY%AXwa^NwJ8i6H;MA-IZtn;&DzQ+$ zV%pPRF!3IGcdiV5`D<#M)n==#to>l-E47F$?K$gG5%~~S4RqkNyudEUDFlgwSJh}$ z`3ibjvk|mH!X&HaKvQXMWzYhY_;0ACPb@%Ne#^cJVdpHdFcH)!3S-D$C3@78wteY1 z4-qfA8XGGL-ubEfT=hs2BHGAKjttYH%))}(2anN`#K?gXS|S*RQwt5ATf>r?bg*#< zb2cGLN=81him2p%9p|cUG7&b;Mxt!Se?gE%1Vc+5QZgcSK{WCY6?ex3GkWw8n?mX7 z{HPpL&2~F3=@RKiYtESt4c4qQ^4Zz6uZ0eG^Tt9N_1+PMrV)DxhL%Yk8`s}~R|2DW zdrZfp5PDHI7Wc@@UXDQ9V(W?sV^-Hd+1H!-EC$j*PfOFVG99cY_G6@H?7r+S9v?TD zn04^1NN$G?VXZ}v0ts-Nzo&%*t%tQ{^K(>D+?p8HF!%W6r(-fiKm;^S>vRy$ibd=! z0+LmE59%e97q~g4rRJqp>tYKl21f1AF{o3Ax!(#y-C2MQU`)SI7bnlCuokjrt^in^Kl_K3?18>xV4JXuQv%!aV@h?S#7Pf)2t}i z8)#xyQg`;-*t8>;O(qZ90_TuJkc#M>l;`^*8^UUVYdC@(*y+XIPpA`$lKjyg3uHi% zcO`8cymQ?Xq^elqN#pJl{a%_eR@Z^_b1=SUey~4szS+V>-g`c#p?>OqIv@7m0EeSL zRX;Nx2w`th?Azopx+|S#=o3lWjb4k^I>tIW*1k794H;7mXU>|lNy8Glg0Iuoi(x-i z7%Z2jQ-3)QMDFWj!wzeHDJGk1XuNWM&9mmY-Il48{@L@gMMTa@A^g|w#ZRPIxm!MT zqU2cWBW;t_@9Bx)TOpTmM>&FDLX7q-VA!xWEH2t}?!x31zIEtfz3Cb&@DOh-TE~l; z=IwfpR#~VgG17!pr3dDB^m=uwiAA{xVuP>ntAk(ldcXyH5ij({t*C7DG&34wNC`_f zj)jh(IQFbvnc>j(PyGo*oT%`1I1OMG4_d8owJg+srk#;8xj;O z9Q?Zt`c<|v$9>&N-OLuzDxuUjE!ldRe$dKpn1EdKt>OAnau8@xLyIN8m)?}h;W z0Y@J-#^O!9SUFv7-7*5RrdJn>9zS4<_Z+1))mRBXmvT}v7ZxFPx>7RwKCBV-ElMG# z2p<RVPm5U_v8{Yawskc-DMNGjBeLN_cmlRiSnyV8gfgQZFi zu{UOuI34xF`}Mmtv58C2(s~}MSbfIH;e?Sm$WoUw%fF!dn&k<(t7SQ<-HrXR(7SW<#Rt$ zVYrSN!z|ZDrRRk?lUlO41|6v3s#{-_wMk%lcOSBi#!MOeYJpAKy18ICHpA~h(d4H~ z%%-aK(A)PJhz=|Gjv&9#ZTf9H0yhV4TKXwx`n5)--2OwmYRC{o|0mN^LLGt!`?U7g zk$q@+jLt64s-yK^Mi#kKyiR>22x`0;LJEfloz#nvp{u~c8m?8+j!X^PaQBzh(0x`N zwxqGI74+AoPK_(8>)to*bCEG6e%fa=&D$)pkOZ>M-WJ-TemImO;p^;M9hL_qGT=^g z1$92`TJvgIiUYQmcfCB)Z=fDUY@)tU_i0U5pxGLHiZZxdovSjjv_1{LIk$Tn?OAQk zerQ%O4~{d@jx^(|j&YT%8I*_2tV-+Ir0qG2XsR|`B5L7kc#8L&V)^51arEB$@awem z{w9<1HVW8dQ&PAGuX$-2UDgRqvl5JUZ%IAL(1rbZm|9nlUhxFEn(@;<{f$b;`{5qk zrE(xX-hr{;Y`*zcDOmzUvj)bo8F_&)*E>JhR($MbY#k&gznx_p=y`_A6V9cR&7oY& zfp+}64aXpko}H|>(OYJ=MnlCGmTuJm#&iG4b@7VU@|j)h=_Gz1Ibvvfh34tzw}(L! z0s?yr!#S-^yp9M}-In7mcu-pIe zTsSm^EVn{1;!x+UU7^{m=;#=JW&3mkZ(!OBRi}3>j+n2*U~|?_BWM=+Fv#eeUS_f_ zEVP;zbug-pRMA51)xd^4b2cpI`WTG=>Z?(&jnXR6Z#wWVwu@c=lr-OPRnOi?UW}H7 zZ6T%V^Egb-vD~7&?fbZ$mBG=1-L-xecS zpIe0}Oez;?(Ose{1(}N#+|&gAVe-_Ov@wMQ=`+Dum&Z!0mb2kOSLGt#+?+~X4`v-M zJ{w1CzOQui_(6Yc$pvhpx)?{hZu>o6vaMpF5>qdqaaL$^iG-*hF2R?N)?pS zi0k{rNv9=N=1dmOh86VOmh1BOz!Vnkzy0wmg1KPcL)seIBo*{S)oTY7Cf==o=F4Ub5}Afp6P)eJ|8_5fz4>R5BHBB`Qm(EVjfVVhc8=Zlob^ zA)ap=`ViL?#Y&pr@|rPsHj`8$j=o7svQ955Dvw@Betwn)e$N8AV2BU zJD_{{fuEpX=GZquy+1Hi9s8mMOKyGe^$S(qQjD}T&=FNQjJukJ!eP>S#rv`VAM#JGL)Sf*gFBZ4a6E5#31 z7ZZ+LRJIhwi`^M6BD!+f+_FA$QvIDc#qVKZ2k93jn`mK4EgH)a4o4??K%>cjugs&ORawZ#kI+kY*Y zeOLAV8S44vzF7%QPujqz8BuRBkEq49-;8%%$UF6F+3GZ;&vkHlBUVfNE8G1;8c(RV z7nW#qn}d=rQ>0}ZeL2`=41G_VT5`~I4zCJvd9!#s%3frO8CgdposO`c)nQq?V1$as#5WoCi%b&=an;WC26UuDdhJ`<$~u>;=F6s zBt3C&-}$F_(O#w^T#j1pR?U}%XLV+mL~=YvBH>iE_gqo|X|=&(=p?+C1N9oP%L?Pa zcBV!N>LHNjrvA+WOOL{%73A;zXNf+O3{6_}&#ktCEtn1X&(6T=x+ChAuzHQ0vn}+O zBu@Sns$bg1;kJ$fTT-2pE4|PC+;M}9z9~$Nr8Df}-A`4W<@-7^4g^NxBemNP_CA&Z zIAn!Vaz~Co1!mlj0vd^NpA4^UFokJ9)wfSkd(Et1-^gq$OJ5&U#$mfya(E;^@cTbQ zzDf@)2{zQf1Ozvt6>)l3TLKWPCE9mptCtWBXX{3P{Mfb0pqIuZj<4R)HWxv!8*s>F z&MHeH&DKsK=NNIroeXE4xvwm~o>wY5@N`OQoGm3HxTuU^rbA)_mT3rfZ2jtO47o2b zs6WQfTMKJrE;iP_vmGUN>m~QKn=)6h8Q66ZPkUFsyqkR+7~Mku*>`xpKumqwdk*~x z-ij-}z3XiM^t{K3H0CC_w_PLnx6+pE`UUfqu+m*t&TrcllwD^fa5^As$MALsF#zOu zaV>b7A<m8^Djj$c^$mW3LlIlgs1Z9y9_I|3^4Xj7pLA5QA|o@Ra_u16Vl$7w>-` z7j(<-h_K&Q+%GYvV^kO3Rh1m@D=kYawFU2<5vytUqO}){^nxET_8Yf%1G8{T@nWp; z7493##6d(zK?N@^k>%$BChg_dgxa+K5cb|Wx+{xS4O{=R3rng~k^R}Pqva<9aw@$! z-D)tNY27Riu`Q`XoHQGI8pFw4H9N_TFa?{{1-c?vk8(=-KB;$FsiPK{-A=ocoia2Y zhX7ilR5MF64BEWNVh$6tl56cNcQ@3 z`J7O2P18=v$V2GN%9S(mR0b(6?pG$jc^9cyg0gDnW8yx|eU`cW47JfI|lPW9k zr=R+`P)I+?V6@1&k7W1sykWfy+;h*eeq-RG|JgNQr`KipODnPlee5o+^@?2qG{fJ( z7z0S(tX^{&+cy^_S16??!oJwd(98UE~< zMe8z|?*jSJ{nNGPG9Gg!>7&KL+{=`v%PjLNUGM`hgAW%GFVe>|g{wa0&-~kby59=f zP4YaMDgluuK$)&pQSgD&T4q;Do3k1n?k)mdE=H9YSUUTjp$|0AAkGPngx1RvyP}osTpqc~TSgaHx zr&iU25PhnLQM`s!T=v?}nsN99tA69|Fa?@uDj zFExTImR%&M8>J8BC$lC~HPfm#)EBH$IN9CkWb*nSdUMrgi&Z7 z1Oa|1VMvbgF>T1EqIz%mryy>ayM7(Le)stop7vzb*eo@mfoPde{OtkF9XFY&$+YIR z(S-F#4nTD%%{biMy(p(O-rhS>GJfZJ@WTp>8CSSg>4l}M*_&(5?a$H*-y zYCe_Uf2taFahX!;%D%+)b<40Tq;urrgsD zlkrFgvN|QA9f*HKokck|hy|Q#J{1NDpzqPdZSHJu8!}s?IXD6*_v>NwE1?a^sL)*B z<|-k}9D2fdhX)b^^!VocZho$14(Y1sb-1;pD{1>>VD4ucOv;O>|Y;2xshq38T@Z zTI88bjp3}S0!GH;td9)Ysm0x4?T^>NrZwN$WfKp1_dYy*XAh;0-8t4dL)jsZAA?6B zL)Frn&j?jQ*?%72y;6t=sF~{=X86jjUr47?hRtjnRrxdc8A@KbOxNyxxU&{m;3e;w z6cCz3Ue}Im*B?x+x*gH1( zq&;D%dq$`j=_GLJjuD*fgi0;L*7pZE0?M$5o+P2hYj0a46X-dYD30?>CHUKEW9cf` z-!^s7)|liHa_k7aNj!zh7tx?ynafu*Uh{=b`-ZRT)Z_S2l)t+~V=#umIS}8zBl4)HJ zQ&1$fjn8xNIv*T;JCgb1KGSpZLm%(m%=r26d&pl;yb3pS-4?+owc87Eac?a+%n|$g zu-09Ndt>k5eGz~-3HL;z5d)8vIqq_X@xj*a5y)WD-=$4p!UR&8a!W^lbe&r7n_??XM#g&pp(^57@f)0l-rS)M?|@Q z-AERKmdV__fzUP@e;#kI>@H}SiE{Ub32%}S)!Rnp6iLQWDWC6<1z=g4Kx0mV`++7d}gUPVO6}G8$ zi0H2EDgF=v$#BPww7E4%vK#m(_W?PSOwSjLt@Fpc#uVg3HhmJ_}8UT zVK#4yFQVz+SCF2)aNcg6QnHd3K}1jy#w82Izr}*DHiv1}M1FJ&xuxJ6fz0Yg6%G)K zJKk~4=7EgRHEoG#i{;E%yCb3%<1g>uD@9q>+OCD)KJBV$+;S1Tap_=uECeH2&?8Rw zClPB*;}&P&7UKe)4uqeY#G;n((+TXqQiDEW3l0R zCFkhMulRh&QCyNRNubbU0z<)Bq=zHYVr8rZgBe&6{N68{qu%4zj@SL0rmld zd|P|a@=8@BMjM^XNuEe0FbPT2oA&W##qD|LZMi3?`?|FMDK5#(zU1Z$0zu<+&e+En zBfH!UT1NTK+9O?0qKWpk@Wv_b8DcYC-wcC7 zEIzJ)DU=%Xhys@$Na>4XNagcyyg${gjMY7it_U6W1KiaJ({(uJuGO8+P$_yLlX0Yz zi-zf=vm;@t2F&6mlvqyiIk1fLxg&S)-Wg(GpjS{bAd&=No;ty3rp(P#5MN*V;=i^UQL*XTz zr9}#q@u=g^Rl_t28Oud#l`&0-*2)l;B#l(V>p90|+Q|77s8CW%vI7Wx$Brevdm z=QBBZ#^fYJ){&z5q?7oJoKL%prW5jVDy&*hf}Yzk&!*poL4~gx&P4^KQk5gpPhvfP zprca_`DTt6Q;4&(_vQXHJWZ|Zo7Xqzt)fV1#&coZ*{#rLEXJx9y$xFUUx;X1>72pR z6eMLnu>`f6ZwX)NR^I0DGzW-OdAyj&lrTZRje7AaDX><*6QdQCrvKaY;;`rM(D{%K z1G;+Xgao--Pt1nin7|5h?GJ;wib5dTpvV2wvWoFyzT4Y@AyOIDe0)d+c1117rEV2- zszQIYNobnYh>;+B(GtiEzcGstv9X9%;7T8tu7YE!+en!{Vv{k+%6 zy;>O5l1?nOu?JVsa*pL@WoAvqe&zd%|0)TVy&$^CD!i9xICS}D9(JHBrv;M^TuQ!leP71gEe_HBx}X*H7Vk!wVftG`Uw3@1myMtf0erK4+92zm z6fwx{Rf-;M#}`+m-S$ug^Tr+N`{oz|qKt%@O#}<<<{6UuW(Yxd+nB4w@ggnD4GyPc z>Q+VcW<7eY<27%-;~jXh;}EpcZ7vjT=K!H^=Nyiu%?`!%W~5vG$@|K>b7yC3AJA5p zT{xlh&D5@PU!>BRqCtJ^!hL7=0-i6{-6K=I%VWe>qU?S$1{#&J##bZIZ=--o;AW{JK*rB8CW;nUULnje|V)4 zu*F>kM)t0eKHjq!na+v$B648}HwK3h?D>(%&$zW|Jd-(1eGb-mG1o zP_&xvyS`30`$kx^9>zA#eAe|J><%VvR@`X0UVL$|;`CmEhfozJ<#o`%b&p>J(Dn3j z!?M@4j1$OU|Uc*N>+aD+te@A`s&L$s-2@$zYz*1?9Dj@>2!JWtLB|r%8ZWEUEsDVY|d1UE}pZ z1mobH9^Z>9#iL@f)RE>vH^69d;bUDVDSuK#y_|g#=5zY!A8cp+LM>qL7HlRNi;^HC#dT?_F8u=@(b!7K$e{Ag#3CTx5@ za`K@blp^m~{J*iI1Tq&7YUKI*vtZPwPQcX^Z%Wwx;k_OVhD7$KzugSk9-NQIaAG!4 z-z@{#ZbP8QbUXt5iEKa!pksy+zFXfgZ%Rbb=U6I6HfD6xWUfK_LQ9Z92^WCja}EzI^Cd8632=L^20hJJbyN5Y5vp#7fZ@XGD~ z?Y;C_s}i;Zam(K~a0ZkR=Z_m;7ma&&YA=nb(-#E0$~JnjcG8_iF#z%C@rs+Za2xK= zZ}<-{2*~nY!^OxDylyol&~T`wH6&jhDp_^`9x!F+{I{=xNH5cqJ*E&RvTxm^=HG^3z%Z&patwm0$Z5FMUMh*&moH}R)$v}cVc!)|t>8CQM>~E5! zp7E#;)&uK@c_geqYw&Bv?tHK>6iM6iyH=LbaH!+bbB-nmm9_!DQ`TPtmU*NO8646) z7r_HR@vnLzMx)!<89%fS>}?Z4VW}(#_E)?bnZZ(ldPulx8_`G~LqBJA4Hue-0eJUj zWF2GRikKDHK$K7gKqbw{rhQ{D?8Ac2$)sP@xU(IViGM{jDXq-PU&&rYAaz>GOJ#u~ zhhFi^>neV!g;PsEq7$i@VgMc-nA9uU?fD`t{_K#K?%nPAqx(JmiwG8R^f3Xrs53Kv zj!AfB~jf0U(y}v=kAHq)lc-%N2IP zJRv#+?ydnVW0D%7cyL@%KtFa*OqvEc?lF2O72e~qdW3<)rEvZ%jr|l=BVM58 zhwK7C!ghom;E}lXX-+_JaaN})Q4k0xNQ^>S+M4z?vR%* zgL}a>48eQg_WKz3w9rmzg^O0tL4T#_TiibFh@uYM1s(Gh3IEP^7dpMMFi3Su(DJ+! zC-9uEK_Ntkx)OH@|A%m@>3yE!R0~j4B)r;%e8)^= zfKDW5i-EckJJ$jRkWj^SHvnVvB@nIL+r1iX-ra~R0K+uajW?X;Gj|(h5|_-W*t8B9 zm5ebke2a4k|2qTei;p}ZoD#H(2<#4hQI5b%J&+4W(vL2&sbT*?I1tVvYWvD0PW*KZ z@V3XH-Y;2!mlusr_?D3cE~>sIH?^15 zO7teM3qq6@PGo(q4mo|7p0brd9}2=6muEGyD#(#XYztcaI@75Q|Eqyy0;@@I&0~lf73uGTBTv2Zj!L|#qJN>o?H!`;;yPJPM z@(<8F4N7in45J^7Bp{=}Eb88kioserM-7hV*Kz?I<;Y`t$iq^o;)osiOt)_VpjrPX z9ej~01wJM)#F+mUkm0ZS^xuK5LSgtLXUP#e5R}@_3k)d4=oqBG%CeR8B!(DB#Jj?A z+s<|%0HTqloVUGzm;xdb0ABLH$iOLu`(nH7Ye3OoCPQ5>C=N=;_PQM|Qe7ffKNGs# zS{7o0xk)Hi9_$W4Mbs z`N08&wmh&=5C13I!Io=~W73FM1J2{KUbJrvGDz4?#vK3}r`1GJ{TTR6IE9L_h;fk* z1N&+K7m&DAfda)hz67A4Bdqv;@&;y{-7S;#XnW)(KRAafdOs#seU`ktedvK=j-&;Qi9`d6KV;D0hY9(cHr zD-ZEy9BOvQsy@hn{PK(UC~~+LEHg_0xe=2^A!WE9QH!4~&@k2%*Nf|}3I!GIKm*fz zWO%57_?rA0r&U4s{rX>Rsb#|qlp`!atu_bYSOZsBMWcirgg*CVNX9`rd+v!R^a;OAJ|AUrxA=1R0(J4`(sr2v>mTEh`lD{Bjn5J0*DfD zJpQ+sk--2IT0kfqr&@@;QAn3vf_oZJEq>%1X0x@cQH#PqX~Nq9Rt4SHfv=r^im5;q zaM-j&;f~$E0}Vq5G9zb)h-wrk25ZHPko1(Rb05l(V!SZrc93SmYevgM|C1)+#Ivyg zS^K8LxDilj04h`Sh*Y`;h>}Pgdt(E@`~WDa5B-<|ZU_Jdh!QPFL`ra5uS6KQKoBW; zau1zSf~Lo0{Li?vXUoBU-2UEyD9;@3IVQ=gmg!EJU*!Zy%{KXeMJS`$UcHeGzisFK zt0rN~N+TfgFMTlNnWyHN3*@;cQP-GRhWoel>si|{M!bM&fi^YLN#zpTBT@SQ3m8b zxM`yBe|T*-AjD{wGQ0Z0zXg^eRM~;FGmtA~36}y4*uquaAf-g{F=a@sUn2qbHmi~Y zX-=H0k)yPV;UE}(`z4$X4wdXP7jqQf73Rc2#g@5q4 zu(q2x zMrjM?jX*2=)DkD{sT zb5L-_$YTibfywO&(J<(*W$e>J>(j#ms)IITpcP~&F(5=F?gm$eeGTHIq(M>(an}e@ zaHr>oRz)+^K+Dr3f+b`N7uwEBWV@vftfT>Hr0E|N(uVEWySwOtJq@;cU1hB1eA+WY z;|E?={0*+525$bJSei^ve(?n;E?HWrRAKDwcXwU4Hm?CiP_JJ9X)7o0SP#k2fv+Zkw6A6?#)* zL}2*0ntyd0`$;@tln3b1C%0%*!MP{!xG;R9kI`IKo+%dpY&(h_hKxp~Ustu2$_-q) z2;p{AHlKGS1SQPFf8kn!qSxd}=`v}z-VKp)MA&Qc zE#B1B&X^kVkkaz2Pab-&%kK}d=W`%1q^7pb?rPf~dY>@((YUo(;^1#za7-K%ehRpX z)ct8{CoJov^U_6|M_f&B0S>lX)*D``sbUMRSL`zIGD`8gvf3?cxBEIF)z8yY{H)*- zgiRBo08HtQ#76SKiC;a><9~-3{0~~y{~xpf6V+rf>{9CfS{h+MtV>q863YKC#Hbw) z#LJOvZ2@h008r>3q;`TTfH732ZbS>vLi-Qe#wnMC;p!vn{s*^XMe%Z&+De!?a7n$$ zA#iyMRLlRsT@8vV)v!Vy&wgnyp7WUq!ulKvYNcSs8~gqLf)mrA3TC$k&R-)KYcLr# zAEAq|8~l+v@EgrANJsoxDAgR3nIn@7QWH3>JMsC?` zRGcv2e1tQBFaR%way}KPpDKw5{z9O_G)`LahAI3Xq0xyT!mobS2zkSv{s#Y~9z-*O zM>B$B1QZPQkcdgpO^!zYBA^M-HE*kvR#w9-&=s{Hh(BOT*iGQ>|0(w`3dS*>u)F%g zr3`y&n2eP$v(-py;p1a^-sD3XObR** znxo@J_LbJ`1;H_@gWGly0l%<2n& z6S`bz@QXml!(5qf*|)wk4nqtGXHn=mLP7mm@q@z#j07P__!>Kg{f=?l7mhEa6GUi# z^Mf@C$ZORSRRNblGw^jd_h6QXo^PTtKA~IzH65gw4)!=q_i(cQ`rl4*>x8*|p_oGH zpvE9SP28iiJ`|4P-QmoL^MPSX6jJZ8y+S@4nc;nVwS77c7d`9LQ2Yax@IHVU&Hxyjf2Af1n;#&G|pSucO8B_7f2Y*2UsMyYS2Z`dH3{| zMNZ4}u(C@QA66)WB=IYr?IqCuV!D@i_bav!(@N0l)vy5J&kNM7cvd3g7*lB}qhTn_ z?kH~LHPJIJ+=DDqt5cy-zC^Z*zYYh+U_@j-T&glRxIGlWsR zJLHqmCTJncFmD5@=Gr2WkR6jIh!9CLWF(Iv&kqjMFtC*wKD<2=`!=_y3AE0S%*ct&?X)H)oxdRsp>vkJUnfa7`c zNC5NOkn?vhAnP!9FN!YCN7SJY=m*7A2m2Ulb6&un^MnC;!&**1b;Qbn&sDz~#5coN zOka8YpYVGo%u0!-h}nHLBNxonXq9aGy{P{EFKfLZj2olJ)z(ZMJ$e}ok*JkF?3`np ze|Sw1aY}|iIk!SNj)$v;Z|*uftxEFmPM^DDaprd3d4I$|VsGnaT5l-ujt_dKc`#xh z>(=31lkjf;Bp>v^x&Gie`%Md69_bZ7Doai$%=o+OHMX!go0Dl#7%q=oV7veGAzW2pf z08T=%qbL}=a`f6v|I9{NKJeT|Q2t21y`NdLW1;(YT)nLCY^h70G3okj9$8)c_{BfW zLI0BaCpB}@GkYc^?a9fH-^n2}ak}H=TJxpy$1BHgrh2CL!#&PHzpeSj=xb9gZh7v5 z|EKTf3;*Le)|)A+VIZ3F291=(f(&!xGgDbAv=f3#bwvjU;YWc2TNZ|yR>nO>PxRa`omiv z_CKwkFBm)3Bo|vg-UQVb?YAvby{Ta1j|hTIC{><;ld!wcKb1DzL15s74*_Nna6vwT zJRndAyHiLR>)@4{M9uy7VOP1kft!fC=(i354v@4MgigKp&_J$W(|X5nAXd4IW7W9> z#g{^na%-Tt>DO?cX0;|Ldcc>(mwg#>9w38Tc|`Y*h#@SyY-cqF>*QB`t#WD%?{Zt9 zcXE3{o*9D>Zyb?`b8MfuV5>mBWu5-w#T9O$8RL+@I8qU)4MvI|`o`sgA=%i`YR+nV zPss;Cq}Ulz&T@LkSfMDBXn;@-+Z{c7RVkh-@D%=4it+10<*=xqdk)w_KPR=Y>rL_h#VCBYcP)D&yk0o(+oo6s?N+FQ49q!#49+oyT>KGa zr239GSQu23&#{FQ_8Db?{+VTwdJ&wa_%WEF_z=obcmdr|cm;vyzr{xVm=&hj0o_t~ z2bIk6g=cozU8abJ9L#xv7!$aKPj{cSLAeupq&Nt&%!!8z{_M3`cnD}$AVloqjTd0O z_ur#P1GDrfpI(>-5#s|QU8skY;)5bnSpc!&L+oJURd6yi+>cs`Yo1F(fh-|>5CSf#{6v7ae|@*Y>^QIKB=^Dv1u7U^?M7#Nu^_K1rD7f?_hmm_L?07D3X9qpX}9VWH4y z=s+3?pabee(C)E4olNvz7mEyl9wd_M=#&d3*a_9Y4FJ4;tX(%dX**?WGfXUD>QJDB zWa^Nei{Nxr_t4`q z_QU+s^E;Ynd)!->nYvv#e_ivCAc|X3+v}zqPREi@In74r zPyM>*&F_w9T=-|RQ@%={i<7P$ndcfmj>SRthQmzgjs-Ubrw;v<&!44^ofp288UeN8 zPo0yHdp5lcpYFJT3CNGqk}B{v|{uoJ$EFG0!bl#aVkTY=F@pqrwX18n10%v!jft+<+Cpotwf56e3c zuj4^Z{iP2ieY=cLO$LE&$C(A+tsldE4?T7LZ@-;`n+_gpwGKInrP>{fuWX7Iy_~B< z9$&ww-$__f1P340z9%2SBqJ`qmqxVGppdP&^xPkn-!)3f_q;oY(|gk#MbNLLPTHlO zk6_tnzP;}n{>+FH6s6C&_(b#9dhaA3J*NU}T`Qh1&qwT-DUbp|-9>!188^<|5_|O^ z-7g~D<33T;x%z%^x_UW@Pp7F=Q)y=o;B5yGc7Fd408T)$zimg|{QZXStD@ia<3IIX z|2gzGepea6SMd4~upR%2{0%VUAG8O{(}^1KW>X3tKTXCbP2v^k!-3G$2d8SEq>_19 zhdDZao>0F@Iv7wJaCpSJsmQ-<&k$|^dUsuO@lL5=KAi8yWOw{$7*O~UJ`Wr|o!mU# z7&77^#X#^l%!dF&hu{c2Y+0MHZ@jk)f05s0_tiar{P|~f<=ub99^0-wegO7fSq;GS zydBzqXCH^=Q*(!RCIfI^@kYlBb^@DZ_N&YHPfe~_9UZw9H2Q0AjtMdUr^eTI9+TjD zKkMqc&a(g5-TSXg*XwidfA7C2dY%^s34klsAf@l{U7z-`pgObuJhe` zPl4#Z7kaPRoci7W1IgfTyqUhI#fyUHI3&+XcNzXLzuavv_wao~RMAII^$A9H`n z>pusN;qLs_-^Jc;f8WFLu`B*r|7k1F_#Ne5{9Ufs$^71TZNA&}9}_v-Zg*R+ABT9n zH^lxMUFO>tZ>8uzZj~IRx6bEzPv7HieE(~h{MpZ``*%BC*M-0S`wwM% z+Z+RZm$dmq<#_u-%M&riuyZx>&T~F}x-do7S{Z{A5@q9m(H*dJt z?zY@RZIImfzAug7_}T9w*Wvh|f0*RBR)1gZZT=_K?IrEK?yqxIUBAdj?C#9JiDTSQ z-_Cd$j|1QO&jaX>?C#pA?l^8|$o*U0{5${uQYtgTqHpLvck*(XUmKGAV#CgObZ?g0 zhwWJp)4uZCw2o(cqHM>E(I+*N;tdSx?AueM4Q79bHT$=N;F1gc%F>dK zo|kRhd4_sH+&VEo3qkmJ%BFp0TsS(e-^ND30w?$*_YDskk1=G_|A;*O5ADW>w|kb+ zceQ8gdn!|cpV{b7eCMcd6Or3;KPQNNj}bcINiTKU|C8E>vNdMA|2Iu{-ESfc{jNi= z1TQxoZcdBsd7%CG1EaO$lqcI?QlE&veh;&uJsjZ~zV?_{KGWxU$_x6b9_EqpeW%g@ zKPG|o{jCUaohxa28WUUXy3S65yY|#%`e(fM;mkk%8e&7!hV|{ak&J2D-}?Ww5#`ty z$-4U=?4vT;94`y|G+9J}rD*D?>)^qwfKQJxWe?)~K{#(Um73*L+~{Qmc*v~T) z?_iJD#!esgU3Ca_ckR0GSDH;P(YIaKay0YyI^mCgcfSxay_X!Re|2L*eR2=od-@Z; zCVo9I=I<+=qYj{Z@(^hzXFWOl#k|q2m1uA z&=4O%Ot&wX_H-r%1N?pm?B!@LxkUT~KkhHrKKcH={{TFj5D10J}5K%{{&rsX?*y2TZ|)#c`UE6<>}*;_+ts@ zX`L^_r#gBkQSi#LWY4Skf7%1~f7~K>1@q~DxMO)l&(qR9eiy;`f*-T^gkR~OgA4Z4 zHuzj`#iuSPpVRSIKKV|EW6V%mE_(Kh^OMUwuK52d zgZ;lB==p@&x2n+cFdn!ajR?q}X`ndY-Fdn=_yh;@*bTD&_hYmVpF``$AN)l7{oRjh zs87J`Xix9?9hWyjf2YX#^xxsod$1q&mR+i>YyQ6=Kj&C4$?`w5B$Filj-%s)KiE%Q z-^f{^P1nr!UZc;Zcb!yd+k^6GOrOfa%a_kFh0^??iu#|FGPl$a9=e(Ju)h`;Q?jKz zG8xErV$YJM9hCKSjfZF2(atTugOH_;^Rv`wC@%-Ix2D-UO^?f2hI((8C>?zd%bKA* z%@Eo9@0mh>aeVxrneKSncslw1E4mY!`Lt$x=C0cQ;F$DVS2kGH? zf2bmUZ|W|s{HN6LIvNX_`kpl=bUXXIA7@RO4fY>b;00-Y>3sHoR*e08c(eJW2kL!T zgluv7?Mc`1(LaV3-igM2VHxvZSZ7XZna<&KUs$F8))75vGuYu@VPDfdNeuP4UjC8& z)X$@Z`gu*CML~V9t?FsM+@fCciQi##p5=FI^#2dw@u@Z0-Mi6!emRTSMVmDHm1535 z4ri6hB@90Fp1j}K8W-Lb^m)&*{@o=7q11=`|G}+$*72#WDbhb_s9lqO&S&I$0lm#| z&)54ukG8P|1Y*N z?$*RPuYS|0_*o>=kNbVPQ}unZDL>Ps8jA0T4^mcB^IHG)rugrvyGxsS? zDSZBYeF@9vxho0^C)^sS>bh7_e5sr?wslE ztiXTntrouP?u@hjrSrJLsUM&O|F5+ce-@ZyIp4iTYA6O=&dPqTyO%i(iH^PC_iKlA>Q&(3o#lT`nu zFzgHQKcDH+eYbG9tmizvpd54t`_(qjc(ektMeC zaAzMQ-O`&5U2y(us2h5n_35a7OrK*C|MJK~<(QzlcIkVvshL5&Zg=2oLS^@V+#ff; zjdAJU@9PK;xBPvq3Qaqre@Elwc*Nho`@b6EUl5t@3F}VXZ!MmBRTSh;&-~OU<)m+aH^Jjl>&Jd^XUP71 z&bcuy-oRiVLHX#*b@_l~^EZc;s zStMzx^H`tl$Lrt4!Tr;muW1upPTZ<5@(ddD5u3V3F@7qhs2{p_$PHo@77kt&i2&5K zuKqDHiJg8TQ_Z5Z-?amxk1HF!Xj5IV?7g9oC!2^+|8rVOTdo;Yq=sAGf$ds~AnJ!W zO*Ce{O+hV_=L8Av6>P<9K@|91q*|QsEAt@D9Z~M1GXEXDcV(k^u-#3%r{!Q0I&wfAV@O|Fj^KiQ!7q9gZ`wwNb`Z~Y6(Q#WOJA9tokKK8XAI-hH-1)usOL2eM_)lcKUVHTAyjQua zZ*7py_c=|zN@un6Ilsxr<(~iFeqmu@VPR1FI8SzT*8u&YBX{Jzy5H~kJRS!R4`K`t z-;#Z!1AXtFVUF98pk&qG++;f~hhylzH>CKRABPvPy7%2zwAyhI#6(!;%KdNlsun|~-oce~ybx<((y=}Ura;nP!7 zZ^~%6Fz$*qhC?aeeGWhcFYgrxRb%w{7+w&+ zda_v662oRcJCqhMhPaSP4c0?|a%`Y4DKXCOn`!^QT^6-O2rSsxAenE_;l5n~E>$88 zVzkvP8g32JwqgDGJvawGN=)z#*M7l0SKz@r<L4q<@Fs_d1@3 z&wb6;ed66k(S1#}quG5<>yQ5rah2Zut``fe%HZuXr>dpddz9g>_Ba?_ANf#y*TviS z*{p{Px8tt96~E8@|Cg=W`#qnu>U#g`{anZR>SfOFJl}cLew>ugozV8bUe94;^m4t= zDf{w1Uvb7|2Mw1o`t!SPN4fJMc&GFJZbx~>y(6y3RXSVW4|kB@RIe+4$YwlkuJCh$=s%|EH24^zqOCn<;2*Wqu`5}hJ%dg;MHvU^P zbMB?~o%Z`9lH1MspTia2GnCwUK33WPZRPkf{vO+m+18n+m7eSgYd3P1S%EOL%<>W{H9xT0LJOqnY%r6qPbg*D*^;M2u$fpB5P zjmPXWb5uIS->o>naD^c2gRuV_mbJg-E@|erAx}zw24mVk^m7ljJRFQL9ja?%@lCPW zCe;3}mip00$7r$)e+Hwqnt9;U(bO3fu+;c|4~95vIli~J?mxaa`F%f2H}!kI@8$W| zwf#@e{TvV3=)GU!^Z#qwb=Ll~)=J}eUA~R)m90)1EvK)eifJr&Trbt|^_x8=_gVBi z?AJBkdM>wN%lTcF|Bm#Z8`At=UFyA$S-bHxUKj1H(wrKl{AN|GUYb|N2<@dKn0d+ZAg_O&PCjra%V}IE$wW^TUhZp{5tZ=qEuMK z@2-AC*Sd)^HhPX9DmxAW4efl3s!C+tmE5VDI|tvH8cb4j)ya)EW*)npoVdMS01 zmn*b8PQxd0BYi0!>d#$t*-3skKcYv&@um!bTq$Ee7HM@re$NzGxxkonV&X1r_|vD= zsZyHaebe}llYTOutdjx6CB=+*)GV-$q>f~_<;KNoCl%z>iY{Ej z0OWX#ShiJ>D{HQ(B`a>HJyG=AlBfFE)&vqrA%Sh+6k&TZJ*LntQY5h!OLP^?tEnMZ z33l;jgI4INx(MU)OppC$+*@dQ!iyghK_t0vpwpd4wMEcmJP&XR1%d0$qGz(1|n6?0AEF4J2e_Z%T z&?pmY=H*cP%B8rG#Lz?ifelmynot=#ty2yblWI)cFf&}4RiO3v<;2PJM2tWTGL4Xk zyo>U`GTE;2}#f?&SV2bde zwW`GmJfOST;IhUgqs21yWqVPt6ZG6}VC*FT7FoFzVoW3j6pFyZ0_FiL4>HZzq^S%t zbR~*Nm$q6t7Sz-^_w2KBC@9b{$;gnQuS;50%)A%s40=GWB+g97G%=9PWVDkLTPHBM z-J45SB0`zkn86T{8)YV1BOqsOJv3V|EU~C6r5Fj9*Wp!LqC}rsbuFz@THGAnc*Ci-<=Ibub|_MM$q~fzNHF+aKO*K$@zkk_SlD@>aai)OS$CTj?srio^i1Lg(swJt zQCSY$(yR(GH>)BpCsRXL7&7Bt)vpn~V~0bR2uaofsYrQ?x^(~qQlv-Qa{U1qmFNPw zQ*js`4;`o+T4;d*l;cm71@b%=_2I&}2#`}Z9atgjBq(T8-9s{U8Gg`u1`!vxx z;n*U6hl1r5Voa5iNrWS0=hLRwLaO5H!4fR@fW>p>U&Tn`yZlI!ZY6Zpk zz95U#76n{iZa|#GMBxSYfQ!)3BM>fS zfQMpNi($higwbhWD&X4kCpE$a&bfnb394Qeks6eORm2Obs=Ob=A&PY&J8q&Ba-6+6-Z;oS2F@duszB~ z;#(7#5^o8c44Z~l9mytJuCNSAU316ZtV?(f4hliR!-)_pVZ|;D$2E~rH@$h&i{NK7 zzzfu{OEEao1tB7#YQ`TFwMD{K^WVK?LmCty4gB@DC=iWkUCgenj_; znN0>obeqXzaI^;1(Wg<%LM)IP!-Zx9T6&e&I1vSZ1(=ADPb`PAAr5264vxg8jt^AT z^3G-?Mrt6#Nu^5aujCCBk}RcG$ngR|nijhjIDz|uBI0885Bl_tP~#7C z#e8JFVKJz_6{(Pb!;eKOFfty_MbW5FP18b*X+pO*poBQk`q;MujtKwhnJz+@J9c8A zX#~wW>#y%7#g9ZwGn+|jQZOZMq6Rtu1X1ZM(KqxfgzG2!qabD*xvYr?B?gueod9tP zu&@|jcYk10v-lzy=D-vV}KC@Btpcc z)Fo2@0nCB`%Y{j+i2+U4+d)UV_$-|qW9YRLicGqJs>ADwA=gL`h7=LK5ej(>j$DPa z1vn}|KhyTx=>Z(VsB&5EA%Vvp990UpLI63m!4?R-Tuafme*7g8EL5K+P_VnLFtHbeKMDXgDY@slAQ$B}hD@RXmN^3D~8SZACVET#j^La$un(W#L* z4y+=#L6Rc3JZ|dM8UXpoTN(06MhYZs7h#151QQW5ELB!J*Rz60Uc9TO#k`?}f(q)5@8df9GRq}cVhg63bSh7bcp-YfNCe~YZ3()SQTo~{ZVE<)rCTs0I;2EUi~`izW&jB* zD=MuO7$r3YB?T1936szn3HOY=)Apwud06TBEJMX^$^wl|=t zm_CC^Bs3eU7SE-Cfwc!0(e^FTn{_DYkJr+{_V@g$4*j z2sG4b7UF{zJaPFPym0%Byr?TlaoYeyxIr%_bQ;GjDCsn2#_VtHFR&z`^h)vph2X1R zPu{N>5XIg&VQdOLfDrJ_0C1QW!SyI|)TpcAQqM)pQjBnD3*AJ_qQUXeu7ehn;y8h@ zYKO!!?z~vi!O`k!lRz`)rCztG(qmwV2__tAOuA5;l8FO4pf8!L7B~NRXZCY3VE%s zsfvNOQK#L8a5{=8ezf98QW~eemI4G#p+uxng0D7-NTV26p!;o%@r76y*2u!0W1nG} z2ZdS3-35j=#Nc$`my31Jeb88Aa3R=E6lg_u-=)~@mukbW!vveEP0mVQ?AZ1AAOuB+ zHbTCNw37h>I2CA=gkA1H2kb~$*@gv@p;*PL{y40Qy1A8Eim2$Q(rOhBoE=h}IyrSi zj*I*P(9uCh)-&k5zztr!vSXkY8?wx9ITQw5rch=zR+cUJ4awXRVwDuL-_n@|u{J)e zxxjmk@=wDALa0-VEJb4C5sN6#I z*8(|2rFt<^9Z|lrM$Ocyavg#6%4Qo2sA0ww%Z%4iW7|uVcCJ%GsGuiLeH2hoX|BFW zD*Yu8#bYPQ^<8&2{LA#1m=J!BZ$o6d!67Us7;4{nnyyxAc><)csu<>>4ymo0S7MaW zN$8{mQHeYp&_e~)1;s^yWpcVs44NR4sF1oNr%8QW@WHVjjnL6d0W0&*@H=h_QNq+A z6tY=_ZBpd>Ef(TqDsW^Vn81%CuD`0THP$ok?&M7+T!W-%Ij5_OjRI4n94Y6WaGWyA z&dG!Tq!onu*Qml&P?j@x)dt4|qeTRW35{Q0CcMn)IGIF3E#bCtq+}NhM2OmL0RuA! zYl(}=*QjJU@5w=IZUGDe%v;vhV9Dkr-ZvdqFG<1HKrxr2%*f%a+c~L3DkJ7)tY|SVil5$M zqNDb&9(!wl+IubJcozW0C_<=BsI)Cg5w1Ha`kjl1ObV!W}Gxg;!QRnb!H@G+&YRu&>zBhR%he^C+K|z0_^3XC^KT9YoeHQe6j%$ zq1c~z;F417ed^^F)@U}oS}Vnpwpc60a~vk7N!TQKPHX&_Yl|LL&9@e9nEzLRBHg%cJO-Kl;Gs@Vl zdTjdAK|KZNw^p~@ak-c@A?mcL0{0Msg7Yv|UdpJ7>!2Z1u89UR#nd*X(87kDE{}kK z2B;_v4@~N`o<#B`fpb{3_+acn~`2-gkaEXG!t5&TKxdSFR;tYg6hFo3IAh) zlxu5RRzen1N`TZw)c7l5FsPL3crwMTD=FAC6G(do$O@kygaXo7*$C2TavX=)L#29f zQf(scC@zOXaIQ9X{IxAbf16jHib|j!?Pc?}Rfk2({j)lSK*U-SNq)X&vHa^QjamTew zMlXm)Y;eP5y6rFIp=65Mq0bpbE#{}CG4<`h6tuD!QyWIu{Mv$2I0-PVBr5j;?<_X{ zBrc|>4Z)fwdN9d~W+DXDYmU6Jpy^FCoFAdtlX9++M-tkpBz4o5=bomis|X;B>n2%Z z*|RzqOEXBddU`T-Yzpq$1&s~0O)TqXOq{~;Bfy}n<7l$X+-4$l#+O6b$RO0vG)_h~ zyW;w}tn=EW5WVK2m|jAA8i zfJkf;0|8g39nVRF1Pke4#nYg)GK_j1(yd)0(~Fyv6LLcqkH@YXc7N9g;)Z;NPl*8d z3q5sU?(ojK=;#hkNeJO^jpYE{&<)htwG7%0&6uNIuxJIDxn^93WF?sSW;$|XWthpy zi=7xoxM0{;^i8=NwsP&1)v=hi7CCF^cDjdaXm*^3Xd|=ns=$*~si<6Q5%9l!2?`n} zh7j1Qh>W>~wHGwpUX;Jks>8ce7j``)!W)$8iJrMrxtM6e0Vdn4A?1Qpz6RVtk}G;0{|8_qJ<5Lvs#WbMWiF* zkZ7_p-8V&rcFp#OyCP_Jwk)i~$ii3@TUV)t0@z+&O^|u4XFr+&1VsyG-*y=#L})1& zm@#lXNLU$=2DqDOT5=9~t(=Qi&rq*k!o8mjwh)NMu1~1<~>uBk$6!V{io+bxqOgB}H2)5!56r-p)Xq z5(avb6$&1z*lt%+4$syDqVAbfA`+F_pbL z22xS0xxE9D$B|C+CQ7=Bbb6L-2Zfh}ommoE5s}}cvRqn4@d^!EvLlNWv0_@?bKq9t zHK=a1kn0q>yfaorRaPBN*r`Mck~2~RsFPI=b52X92B~tlOA4fP(aNaRG)m@(RX}VP z{dCzc8U;eD9Q4Wtk3#{>k*&oG19g%JQ9FEa)HH?h__AUO*kXlh2aPa7z5dRq7^sZL zz>t)zMvzvvac>Jb0WEOu_>Ihni1kOo>Dm2r(B;Nv!5$3OTpKTS#SfDwmL*C~);b zfU4T>6iC6rH4dgqK%5Oh!^M+lai-njy}XagZl=tedx&cS35O zU|XKe&kEMwgx_pn7iCL}fWkVhy0iw(iZ!=6hox^YV_#FkB$=Mfg2x?QXB*sJ%p6bG z2;(kXQrN;sM=dRd%vDT@S!f_5+#2W^6Hi-MPI#HWs;E~_T@f@v5;`Ef8FA2Anw3z) z2lg#c!wTChpQ`E=GfK1$_O4eu!t(VKOOo zYcvqqZpu7~Q{4N2Xwi%gv5ffFcj?mDxm(hYG^~{!aT!Hvlv4~os0rpWcp^~CLgM?7 zf--hXoN~!|QYNrXSf%1V#i^8wf+QnKIPP&=**6X&WGP{nkcQi9!mq~qG43GR<)E-;h#@nc9vo3Z_kUvIAuNE|ad5R0&>s|`8txmmrSrqMSK^ttIw>`~FLt0=G^CCepd{Jy#dyBJ5KVdBqiG9O*$S=5 zP`z<7DQ})ogX0n7L_}pua%!t(5wckdGaZBAYJ70TR?k+ndZ04hNEXE$7Z?O4Oo*7J zp)W?GgXA#pF<5D^YLAKWE;Ilu%S~b*SVp12N$eL?rLrc1go?W;fk~RBF*Q)QnH>Vc z$w9`Ys%R91%QQy7#SfCaNtSAh39TH_2J$wB!McQC?3m$%R5uS~`jE`*vtfi#+Vton zr&WLqbnnV8Aq5U$@^)7d*G?#Adcf9czC?Hw+^`K(Y9JUC*np^}wi<#1;+OIOvrmZR z4o(wYJtd+=5l;wWkgBI+LAi!UAC~C0DRP?Y5aKLgy9u#i25Z>{x{cQQ6=_?ndg}VBwpVJA3Z^y=Dqd3g zR!v(~Ij1!BO&HSDqQ=ZNVRiZ)7S~RwdKqk^h;A!~A-Sp>gygxBsc^)lYfQq8th?+p zJ;Ix<3TvkgIv-HwEFrjJPGJ~Asgrf7E?f<=50=c;VX|}{DyK!YQ<^C0EYuv8D6;5~ z3K0o62vLA)7hvv;w`tw8^tcTVAsIuosiQ;<6g6$u8|@PE5J4GUzzz1>Cv-BJ8B<1f zoQQ`RZ>K6;hf|f()HgL!&0)#R9?dIO9al;9feOjtq0$sFHp+z`sfs7ZMx4n-(Cjxl zIELcI4MKEdhV@mJ(`2@+Z3e^4*eS((+*eY!TPRhTVzA1qtPUQ}RWbR{40hlXTr-mh z@G_3!2S*Lw%e)X~E}VqN+G>T3QWD~pYtnP-;?3DeokL^+)3+{R(i>A6w1$*72onLw zf+hSnDtCt9)VqZ30)ZfuC6fe_2B78Z{8VxV8#d}nFJK86F&Ag1us$9s`oM7?gVYWx zKs#|4onapC5Ne(Hh>6= zIDa32-CR3J>!BD(#xtP0bBTV<=J$;;nj3;4biGshU}_VhUDUs z-Q#G-g(11%$CaHQ=Nr%wibmIv;qv*buOJr z*m4c0Vc2zQ!!*2gVChrJJ$HiI28oqzO>Rotp9rXJ1B4hhBL|@z^t{yA*4ig&LU~JU zYX)CHGSGn@vtV?s!57QKE)DP`TX7;R++|CzsS$#Y2y&J2gT!2P@WUtwogAP!*ws=x zG<5^4J-De75f~3Oz**TxonvuvWGnv>CJ#u?hcnQ58oF9>!Pw3q@PCU0*MFi`QSshEgpG})`cRG>XT^ya3p zr*2g=>FqWHw2UqwlGF?F>qACT2Wz&2k0X+YCNo&=fCj&Cdtnvki5DX5mWaRAEuYxl zmVR6KnGPCVCdo^(pp<6ui*+;?hN$1Da5tsSHFY>9S~E1-lT1fM0Ts{B15n7dDkIMu zh_kqnei{l1lSJ2S4<97#M&h1$#=&>p{rY~@iwyR$p~FrIKPpiUQixyzR$hjM4i@F9 zC|IL!RT4Z9Du+WHHL}$tCzsw9mP?ACZL;&zRO?Gyk?iOnkeMbJb*|*?D3>lEstm0}KtEiWm-K z1#adaRU%dR=(FnQcp3Ke-9g$D+(gWDGTle$WdLyz6+Y4U*uI>x9xyNgYYU29H+wlZ zn7bXvA#(K0HDQDl6d3e^=)6NcYfyDOI^eMbSk((zbp1}T#MNAQjg+C#5FggN3tx3K zwl`GlVJxGGWuzhI_)7sZxv@&(q1`^>g)+S{o(Q@7aVB%NgsbGRaZg zCo?0^JEefl5~!O(?uP@5ErHxCJ#kK^MpFg4c*1lC%DIyu<`keeI`Y^}n->K<&X7FP zdg9cEAb9vw@a?PDq>!tGo8ir|S9C;;{|fQv1R}2H`S#lw`!j@E70Qzbh+S5YQBAQ# z0*a=mt6q%QQ`#{&bQVbrfmVUJ5V66rj~XO)oT+SNT17i6RK7AG+@D5{L_sf2+)_mJ z+NspSJ+7Aenbr#nYNAH+n4z8iI>r#=vLNRcB4fb}=zhHhID#utqUn^9E?o+;FjVy7 z0D$}$JopCI=}dc{$jRz!iwwx_A3v9%RYE^=nhE%Yn(ob~|J+iD7TLpb}V7+flm_nxg$+ zbi1N|VZhE@+ux}h0HaASmbFHn}3T1$_99SbZc1o#6Au$R`| zT|yPHAWccp-xw9rYWL+J{R0${E!l91=qmJ3-0r(Uv^iQD9N zOf+TK@HJu-TGel9h9{o^^Km}%@Vhc0a=&k;L0}58tJO;dJi#2)a)!W>YI-Wu$+fc- zo=#0Iigp}Eo0ABwAzxL4iTeFuI)~vAck50ld8nDc0lBMQa#3HcIF-DZEHA)rTV=|@ zbAGz$c|5JqllbU16c?_FpMc!9ywGUH_d!pB6e>x5hHM92E576+FsV09&(f*QGrOdg zXw}^dvp{vC#K{zgKA}vQQoGLMNWhtSuzkHB}@ZXfHX0#?bQjZ(%`6ckakE?PIeBNc5IO46BFPHhOcfA9Q#0$ zu`SR{`En@1vOykJ{yNbBY!DUL+ack1S?w_@TqWXYf2j;ap9vX zRB#iE9ldeV`c8$nRm5v*)0&Bjcejk?Eir6`@qk9ipDe~}h+BtYLnwlnfrFP4F969E zCyDTaqEzUPl=0%)EQXYtTj}o=4`}Kd<#lyYMx!Ka$QUee05o)09wPNDVpU0tI+vwt zXbV$1V8YvD4k#>zze{Pdwj-`ajWl^VsYtpyF3+je+M~dH)~D(iX8?l+W&Jfiuf%4e zwF-d=n+IsCjeM3w39_9AD^34p%uO!mK`*O9QLMz}o2AS01L7Odl;@<drUV!m@_r?@)Syc6Q$y6FY-sKxgZeQvB3=oGTI2465NcpCTeHj0=JDO9GZ>Lk#$ zjJk*A9umo?N8JHb7Tb~X@S?mH2Igc9!V6miX_ok9ZHdn8W&(a;j>HxWjuB_WmQO;H zOakc9hon4_com_GE$*5wH6V3JvUXwh(}h4mU?iTXFJig9sCa5cS!8V1J*%|TQbEQ= zC=G@vw^Cy*zf)@x=F(l@Zq1trhrvWe8d}c`w_xJ?!4&xh(&8@4Eu~a3l)kW)=t7%d zbqTDuP2I$|c}sZ7e{4hPR1slwLFDyKhz4B9h%{3K=j{U|eKXZNi&SECP6;&qqq!Uo zrhNEYGUE#hFntXZqfv!3(+fXOWhR`o(iROdi|#-#h51Jh5UA}<6%(8?)CkkXj+Nh8 zFy+|sWmX$FxFo<4)0jGJWpu+y>4XoZ<7=j6gVQjU^jutxiUSUt_(GEe1RDY{lF++A z1iqlKIPE+FkO^RtA{yTV`W`}z`TOGM-4f9}_!@vq3;jt7!uzuYnQ`W9#{H=BW?0Xi zI7#S95#S-m#FH57D9@}Tza<&)IJw(+L0_R^x_0T?92pBbAeV{0@np-H{7XyJPG@zs4YiQuu8SrB^UgElr6mr~Z z#A4K20x5$Mvk;05kRmmLIF)VCeCOMTfCLDD6n|hYm*%k-KIErAL(A|<`}8P&g)h+M z7*61eCAem&1)UgZgw9g|Cw#a&%#llBpb{0*?c0V(Xl67p1Uwp~wxC6g4G@xaNCcij za{?Gg$};bj48Z0v@P=C)(5@ivqK4Tk>p3hMfZv1!`MD&*@55~e5>?BXsrt)M+aj>MJ$u%cKpK7ot#t0WLgiQM0oA3vPD{)M$Z=80!U`X( z^QOg=AcZUGX2%^kYn0z~1-_<}6=}+e#|?Ct%dcwND*CkYMGwLPmB@Avu&J4#2@!=& zU=H9DmYl~^V2*t*;zA1f-C-y%q~cr51pJzYvtP(5Ht%dfj(WS=BaJX4!EI~ zC{?NvO#rr9)K*w1&65U*+!8M6iKjf=`@y%{Y%Z*GIc#${Hq+-{&t2E7Hevuv!G};f zJPlXC5NTN1ABD3&1OcqyzrRlvN@32x$!62VL#cH~CM3k=VY3X0K0@0Tj*C|o@SvGz z)mbT3O@rfJ!W(5*9kTjY6H}gtyYN6X(S^6`Fg-obsiJ@*OJ;|faaQG0HVJV52-UX1 z2?zrk6*hcEz52_7`ap(ipwJN$M~8|-8+PLAENn^J;BqiR&a>lTy}Fl;7&$ngA(BK1%{s4DX|Qacjp0FZ^aRvkTtYYm0e(dM?h4-Ta|MQjQ?T!F`LB0jAe={Nw0 zR}Ws?qhr#hg5n+m+z@E+9PlLr5;eHq1VE@gm@Kyd@?(Oph7zr83Pkmm2Z?=Bh7d%I zl1`8y_CcgvUW4L)766tSHYiSZ5`MgAcS1Y#gNN4!Kv*EZo!zYr9?R$ z3N>Oe17#P8G7^Y~)|o+teQc1R<@F`Nric*qEWg6zqwA_)X{y+x0s!$Bx0G1Q5m<>K z;*%f+7rUbE3mzpZKq_EF`%j5m>$SG8BgDGTmf#wzuf%!CfFY9nPc@E$05Cb69s)CF zKKb(RLs~%MPX!U9$hIC{ty+uoi^&y*V9rO3^U9TGjd7}6m9HvaiHV9B!IVQGNHc8< zSWKf1qUXXXEdV{cyX7t4WufClJp+2VSy%v?6;Xwo0@PrregqKP$ny?}!RE*l3q4>t zA-Xu5hcAhK55TpbAjV@ofyI&ozQZ~(U4rxNHAtE9?-C=IMGW$Fs$mriBzA|2R>L4W z7E|wj7`x)hz~lA6=N0&c}-mWYP#72RCvC2UA=(;;G2a4KU;F6HT8TO0NbSSEVqR4IT+N4VnS9T zR$&z2e=9^OfmUc;*3__Y7eBNFiCekE0b{IB75*jPbgyFH9ZA)GlT_zA3Z0lcIbcf7_hNuMX(2;am`j6DS7!G41fvb+t z->96Zw>Yk0Ne<$Xb;0CmrOOr|7%nS$qsQ%o!F*v$_YQ*jh8a``SaKJscb?EY$mn5K zHm)AwmgU4zv027z5dy9?%BNPUTg5d2u2T0D(UZCqtrt4MREAEOB*TY1xi@pTHdJXS z!E(T2ZY~UjAO*)W4~M$|Wc2-1bZe*r4K+%Qa*Lji#jM4+58olNn$f3p5b5)oY6Q918M*isiU#@mpd1a zAs@qL3Lb$GT2>T^jfmuf-XDss9edq>)sD)+0e1L2T|$T7 zX{l5dFZbDKcZ4{DpRBkp6;uf5T@@oC22iR7m$6@0Lc-T+fdL5Ob=5LF{16NdYM{d8 zV#ne39kCxgqqcd(mN|MxmcbqM4?2TkK`x+FKq$bFdaVZhWK28ls|jI|VhLKBeMOmV z7#I?9kB=%O1{IP#y`pU}t->o_8)kgkaMtO+4~`9{x?P!&X$REm?MZHexvCVnhMVp> zd7)Ku^vAWcICAk)XvoOm(gn9thsspjf=K4Ei^Rzi;#|#g`N;vC32aQ$u?b90nGAfh z``VbY=T0(M8#A>HZ|yG^+l2>%Tid91XDxGj0cfR z3L(4|a0zZ)(eP$BidZQKb_5*9aWD;x&7e*Jeca5kCDQt&Bf6O`IZVT{#6>!V1zr~6 zpHUVu_>v9nS>#2!9WeN5iY{?68)b%M%`8MTz?iXvLKjuhHy~Vl6IW?w1#ucJ@>BV% z!4vGj(5jAv+@T?p!_^w3o{x&NRgOZL$PQ=G_nFh~mJ3j#lhq{`AnFs&so}YYvBAF# zztm>Et8oDHd$%HQb5$jHKV6CR^I%yARB~$3medmX4;xk_w^@QAK#O?-gg3)cpf7M~ zib_c6o{0EM@^d2|tZDddo9ldS*?zwS0}s1+Q8G6`#k--GvTP`zpGP5*#|w2ngOSuB z^Bp#;%EO{Z$G?tB(t{$yU{&$Du$=WH1wslEBL)yeZ?{*D)zp?Lpc_LqJ_}F60Fk_t zh2xQ@(Azt3ta#=V(8}~OwCJl=ij$I^St(G;G$MstC)Kiat@+Ssoy$(bd8xpsx^jFC z!&MZgs^w}zjQOL_O)}{KIzYw0c{ixJjjeeBHMo<0dVtrU$Oa?Gal|;$QG#N|A)wV% zF4$z4yV}8}DMp^qXG6@qLnUN)GR(wPm9nM?4xGz0eV{6Cq$ewT4Na!US7Fq|xwO^X zFkAlNQ%{`4Tou1TAVF!bDV`QqU>d z!x}iKY(3WX%*$C9X+HkCBoJap8;{z}Al43u3ji@0UQ0*=UGS`$t9@Dh4`;f-$Y>A7 zP?=7-!?WLt6j;<&HHFXURLFS4xvcht;u;&wHcHJjIFM2*72RNuSSDu3CY{S7=!9U? z!@6_|a9u68O6}5|Do<{b;8HvqLt>BHqqsC~-5IKj+M>4ToG6W|A6*T@p>$B2iVtpr z)?T0&Wfv$#xDk_#T@g{JQ!fh_8&4kFNgAuP3cm%JywV9>*wTBgK~3h{6*hwf&e+;Z zyp*Sx*3MRN=O1R*j+c;`KBiR4u*y!#T`HtW&AECN&u_?{QM4W{C5#6`;W)xLKNd7mN_qBJYm>p#mjFmE z134od5es6#CL;Yju+?=3LQbAK{=t{3`MRxYV;GD+S{!6ykxYBCM=5WP2|?_a7W7aW z*JQx4$Zkq{!s?-x_HgIL-IGe-Y}a3^aD2yzN~WSL^wiTP zC%{Zb$|ID52F_z|BLk{2DZL0FjIrdBY&Q(3f#2z=AQf$;38^inJ8m)KpM&SB4DlX| zH2OR$b66c`(jsIVD_cHUsID#(!0dK?ULD1_sIn0xJjJzA$`VJFY$xpWNs<2)n>m~{d5?vV~XT1xRv_gFZ64#NuN{|rnWa%zwSP9xqJ7Z@9#ac8Mh{*rv7-2BNvC7h zmxhHcEW{+BIKnz=P-`;r0td%T6}c(N({N6y#V97uJ~k$L{H%m3ly!q&F;Gxynwy2I z5s~^fNS)1C zswFeJUdfzwFh~S33xh*EB6TOOe5qJEm^sL*Vxcoq1qKx^#gzk$gt&DLmfUEe)x$91 zQiM{`+!BZsu%s(S@=b?mNH~uLKQXQ0H!9YzqC{(=I~<^Jk{alW;0ND!83_w5CiOIe zv2^v2FabdoQpA`+2xM(KYd%oOis2ca#~BF4tPo|o-R>sFVbof&w>oER4#t@N+U^gR zBDf&Rp0FnLDT;|~%%WV7RDWBJ#>rs|r_1?u()LA%85{mJFeEsSeHK6%WQQ~dXc*e; zxSi{ZZ7z>Ho_kgY+r1S*q7a%2pi*iY^Aa!uBqFu_(ZwQQg8(6~5 z>=HPl>gp9Q}Hd+kyx(GeG=GI6{(LZ--hl&P6QfRABc;5LBTj5gh)2rihL=;PeBUkyAf49o^CCCmBEl)km$(v5?9K zl`{r}h*w%7$cN@DD*}u9j$2*CR z*hty*p;1B#kZxO1$ziLPjeZ}6>FmOn!<2$!SpTnp4f+(pZaPaMu*LfMog$3^bORhk z@o)SY++xA-g6oJcN8E%vhgI)0-(XX55+1O@Gy;aefs|ui80^AuQKWn zA!M41@l(xC1$xlU7UN4-Po+JRpxB{E2%e0r4qI)~wjpA8+H1Xv;gb zW*dG81ICRhdfqj)tiz2!7cEM-kB=>&g=3TMrzJlXLkkpQ zg~z?hqjYZRN&!GLs;(wykt&vu?L67?^Y!w+i|;GN z7>dxiX+szky<6BC&O@U54zok^ilZm^xMsHrwI`qAv1a?}I34tJJ@L!WveAx%ot}e@ z?kkx5Q70LZ3XR*y2V3PfUSQ)8yX?^vh9MC?J<@mVn&&YHuQhCW9QTsE)wLY>@%gS^ zaFJ`7eubiMy=^{ndB4}BtCgKqN1%DF!_yV!m$h+`vXEM{S*5~Shdi1Fp$)EKaU=nJ zh48$dA2QGtwfF^?mODj3Hsn7tnFMr9$12s(zOaVcGBsLd<|j$+sNZ zKJhU-P{@~O?(!=u$vNVkxO#OqEBIY61k0fym2<`&0;UVPh3WPg~?U`v=!r_JqR@W1xVBsz{v*- zwAU_4@BD?JG&l1DWi5&h68A_F~Q;0Xnf(iR<}%;^?GYG?>T z_8^z6bWtYIpQ(XDX*ylX6BN7_S=$#plAuElbnwG6GiM<%>Ya-{SY(- zk+tmGxWuw1Oj%+{%Pf5Yqd36gYKUbP?hZLMx2xE7z5)Jg1lppejySOxYYxP22$pE1 zOT{}A_NakFM%psd5rI&jEmekc52z)Pd?6xipQ)lPnQAI zqH8*;>o{@UVYI%KVG}7?bdstkM46W3oJzeLFLi14iQpBGjp*=D&Hxw;j;K>XXI(ta zWLv@{b|83R*Gi1uA zRrPT=F>5@NTxfo-yx%E+%khB8zZ~Z44NQqIjMQnnk2KV~PgbTpLLD-#7i3Zj_Lr~K z#8+IBw5Q%YDC}`-cjugl#|8~4hHs~dw2K|SW(zjiKJOwNPmUuN%-v237z8)RE`3sMl_e zE9Hht$Ao$D`61dK9~RcTZT9@FIWOos?*iI6DLW%=5auDYKKc6OFE^1nLk8N7&7~Yo z!37V)pxAu0>FXO8b;L*=JY6ijCc4vstDj?-CevGZj58k#en6&w$VkOBmnOTL`%9bQ`EfF&m8uCX5So*AiP#6X*`w z>kP0P%jlY=W+$NNx-9`%eb1L+D`py+IqA}gg~7zKq$*d#Ple%1%hKv59=t9YV3E5V z0pP8!L1=;uosw-O0sB&v0lI4@pbBLr^qX+JN;v*XTFyu?aMa zmGU$ZE?_z^8$BA{fhr`ZSdop0NnjG4F0fS*M?a!KMGgXN zq6ub1%+&EF>7dfbF@4B5&R>9+FBfTPUj>pm9EBu!tX|SC(b7F6Or<);5*d03Xl{*M z@a5PlX)gvFf%i(zUN`tNM=y#SmB`lsaseq&eV+U`1SeNUfvJQiK$XYjb&LbGxKdn@ ziYiZftekP%val?`VDv9KSRQyl>q`m~v#U+yxsQ*qJ=uq%*xp5INEk7(@g;`=Mli~- zn^RPy9KaP1ielSBV#K0Pqh+vi79^UgsKG*;cv##+(Uw}>)a$24)&h))m-`(_DT2IkHijYTvyrO+f(%8^p8rlNXW@cJgXklg{dYV77s z9As=XPnjZtt18PZwH6O4vRAtuyp`CiXBw~RdRn^x5zZr_;Mn93MSDk$U^mo7K^A_r z_)mwXTTMq-4hG8&d~@!gkkj5A&}vK`YWnF}k4POpgj&w(vFQCH=>UbFw1shLYA+*V zy$C4jyXm#!Xl0}V5Wii70a201%m*J>5{9*CVaR@-97_oG3NEdR*RwHCUEVwpD|T#v z;9E+;)klXzOrC}vJ#iBnuVnb8OAWN=*sO)()lC~B5p+U1-6yBe=`A!idQBFipR&iq^cSoYqXY|@XQj2L-y-G!wEBTIK@hsN~v z9%ua&)q#rxqrzlLw&}!iUZTu>EJX-ADj{EapiIje!o4Qo{EB4AIcQvuB7wtz)_{4u zRWOJhu`?deV&VucP}vZ6xE9-JGv(;^L!~;jGOS=#Emi4fF;Byzj6n)Pg7-$A;fXyh zz}aKz5~6-VB4~^t7JVJn2EGdD5mz~IiGGhzLtS5v!|u+M%<~IxDyxd^1R3<@Fjb7j z04R01g>dW%b*7;qYi!d45((;F!dyg2clhN@cVG%1Y1zHR&Utgg{3v=<0a7Oiw_I_23^ut zb}^HJ&~u60`O3)kJO|S}36ToNtV{xvZ7pro0=}Em%;jU$FWQU-r#d|h8p}t}P-v=X zI*S&2af6%%*Y=%kN6C!~m_M6>W#R-Wp5fG5FC8r%a?P)AicI+PAe*%vuHCp{PV~oJ z}C=5u4p975z0J7@B7Cz5t;LI%~W!Z2YXu+v-N3%zt!A%3Af|fABB~XJ& z<5d*i9+7nVnCe$T9r|N+%1;IusN+b3A#Sv^7)rtJ5XVZ#HRg7M5OA{R8B*%DW{jXg z1TP^_SOHTpp=Mjs6XTDBY}=7XfgU*qZ33aqcEcv8WcXJU}`FSzL1(ev?g52Z0=pr9mcb)92=7XWc+~=dd`f{h%sf9G(nn z3I`o2b}WI5O+|{xS4W|kDu(LbSCd7et0Ipb6jzc#BK*q$+sTw6E zG4a3Uyo4+pm{9{G9LeHiLr8D}cBs(Yo3b{8OPxit72tyG&$d~SqON9ZufiNr*$`vf z`ReL!r!{>+bKa}!e2dV*9?o$gDrLP1J!R5UU8^8;0J=R3eywCZ;!-)kOHAC zG?AmyLy~$uHWrRG)F667BUE|NNTEiHKZRF{G*n77X`#e=T>grU4kLXoEEK4^&f!Ln zg&r9f(`Rnz(VwSAn?;4D(&1^MxECa$gYzpH>5of#bJ8B#2g}+^P;XG;y(#N4@D2)= z8Hs@0GF*U9P!6D|Y#7}=J>b5f=^*38Ud`A&ejm(A$tUP$z?3f$5Zt;GlGcM7mmTeR zKypYs*<^#Z0X$CN)E`|U;p<1OL;Ga)%iOcs>?}xXfxfnrqN@2;tD0`d2u5wdJ|`{7 z-jdh{-%|IVd(Z?Wb%j-{;D|Zkd-HE=f>1{(I5Cw?l2W>GMwKs|0UnHnMkTPI_8|)E z0z>Qo9Y?mH|N3LNfKh~oTp*@m2F0k~8eT!}JioYw)KX&v!~xro{`v9_*%hLOH>o+| zfJBkqfmE0gk1P>LE){z?REa1iJ^)T!QTAXCn&LO0%rjAFw8|cgBs_3qh?LYYX;OGI z;qRa=_(FRWR4SSf<1WTa*wA{Am3qe#mX}ZC;sG!ce3dIZLGbzAaN&Pj7 zzPKcfsY%*P4%w3&hF8!~cR<|88`-0-1-VveYuQO(kwJ(Oz3j=l>&m|xicCt*xCZ!( z+;IryMwe>8G^cM5dy+b7njbdhCBh@j4SOovFslM^iXc8$5uu)bf*K3rRP#f>AweCC z3M=F;7$a|GE=kT%#5qHhBrD45N)ud@vnKIMzTo%ds<$kn^DQGZafKTZ-ce&|AcONZ zO1ITbupvH}AiA)=iQ>cWojANo41%kf(wWYFpsMQnD6GgxXBY)Ez=d^wo$UBj-#ta> zgZYXr+uZxv&|{?sdMiTqm>l$!T_qS9=qWr$-BWc>&XAbCXsfy})V+|@rYDk8O(oXM ziRhRPDO9$|q^z>3x@wj>4z&kEMd^xN z#Rr~_k#;}&pSYy2A+u4y0;N3T<@Y3tKN0H~uAP%-oXZJY8xM&1n%(T0tACT#1J4$l z+%u9B;cUuT;+v(S#zBcw($ab0W1tW1DU03RCrKRFyD5962}7a>IR!7qX2u6lmU$}x zZWUF^4Huk#_G=aU(x~{>rsN}CksqqijlTCT?bUV{dy`z>ADltpl-qkTW>s&HPBy_O z`lL|JUv&jZA)as(#95Vnc>%guL6J|&YDkjL2rceqZ1rVlx=8B}dRE^=)8}jAtjOBB z#4o$xV`>hgU;0ZDvkI%PWyXW>3W8TixUcI-<8jJC`5Z1dy<=` z6lQAfWp+M;^78g%i{$lE%orW+Zygat6V6%zArj+{NghrJ${-xN?9*yQZ)EfIM1>Zj zXECaX$hvE$3vHxt7M)>Ho;@Gs+ZRpU_T*wTq;W|`BrWfNFH#>MBcz58UQ-^5J1@*C z#l~pQV|i`D5M!dk^mzqIat6Y=W@-*sp!1sYlDM0@0Wmt6+4N`zOBUaK31f9(7|AJX z9IHk(ox?f;J4|Y3n69a(G$eUlEiy$biQY!z6Fj*8F39tA-dInjGZalmQg4%F3l+5p z+;11EPK>VK6Xl8hM(ViqZg&LfNc=QrnHD+G6~y$H4~k8~H^}q=WfQbM0ep<-l!^C% zy0?Wk;+JNL`X{N?5*fGeB#W86UdYu|?3Sc1A-Upln{(F{@B2cbk$^;^oh09&vdC31 zySU!Ku6Jn>yqLuzicMW@!XcvaKhOq)NKux!iPez!)i)Zn+@?2j%|;2J%xwuSXX_gJ z)Vbv$Mx$qUD9as{0@$3zJ+&JDG_e?nzfSp9zr`(Xru$Xkxp*^_raw7kQ)Y2MqJe0} zsYtb{_sBObZAu5cDRTBuT8$rt9p=+^I&RrCWLmdQU~1Z##?;-+2|enFg~3OUR#r=J zZ9XgY}%cMQ2Bce2>+(IdK#DgL8P{E7->X`Of zw-F$^;;RlFgGOhK8H!cPw@!F|+y(B6@bN)Z(|dpqDrrs4N(p&8GJ|kYcYWDfY-HHo zgU^Mk^d)Wne7?mU^G7E@^i(D%bVf_ghsdMmDCWhdIm1q!x~`n-)FTaAD%YMdn^G%s zP+HFTGd%g&?pY3%LwNzV9?eI^N+RNT8c1kfqw5+GvPK^ICogPO`Kld>RODhD60Vuk zUG+D9K~Cej$f5d5;)58Sm${=|`ZhzFDW$riWjPQjTpJ`ZTHrtd#om_bEYa-j;QV%dMLj$ND}gCANfunA{HD zIa;r#VTD}n1mp8nb~Vd(}!*!LO2RY^ENo zHRr7fIyB>tJ8hmiyKcK&!?Gz9;MOc|lDTy3OBQMh3?5WR@K-AUF)6x=ndAK+p zbqGM-c~BXNtj(^{SsVV-RM;?k*=4w*z`WSmWMI>wl-Ivhg}*YAWc{Re8%q2b)W>bt7{cOmexmtwPJuD{P>ulH&z<``LJf0Kl++B#@(t z9O?>?V?0%RzHTCyOu@)UNu)*Z#O#qZM!|Q825AG}DNLOxm0Rb0sLHp>3A!plB%}Ez zO~*X&6Z2`oUY9mizQ;jR8{lAz!NIF*^x%4(2|c4sW{2;nq`d_l4kA{E3?c)29-@BgXrUjX>Kn@&LG$)b4p9=H`_0; zsP1hyinENi!Gj2hn|D;0bl0AFMQ+6PWO$d;ldF_TpTZN$8aQQ5`E$BemEfm)>7>dv zDKmPg+Wfh^SBvavWwmZ8vB@4+nKjDiJyS&~m?@+evZ>4eLbIIHm#T+zX-NFb+#05o zZj0a5E&3(TT;o&|#TfK*#|5Sz6olIXtNC(IpWbd8yes{Aw>XLOh)<5~b@$4e@f9H- zl1!BvHIh>t>t-g&stK)qJ8OxcVVo4qLc5hq1Fx&osFm{1Eo1*i_ntxF=b-r~QE{}* zN$CqRpO#1SPF8C&#|6irgytaA81#WI%?Q=w$E1@{Hq`RgWNst+iWOy+)L%Dbv>pUg z>wBO1nfS3Cdb74D^jOWK-Cj5*vA8pXmQ_xMU)0-#VFpRoJn#tg99<5rGmcqM2*T*l znwphCA-UvIl1K5`$Iw?ND7w~3ZxmHCSLw-8VC0_;VP=rCWrcNxBzd7(+76tGS+N>Q zPdZDKw1u0Uh&?mZ;uS_^({;n>Qu#$yCaxdG851kiHf}CSo6(b8Ci2~o6ciavP0n1d zIf;ufoMg$OzMPEYYx^^#LPdX;n6j2R@|`*=W`!BRlu+kSXNi1}=V)jUuMW%5=Ma!j>M(^`xSMy*V+ooTcxqm<(qO*fYj&oY;5&1A|P;i9&H{Yt#$ z*i@Cu)6y_!x8p%a9;gDa?EEkVDbDh{FLR0>bRiBQO~D{hehtM>Gh2V@Cix{d>n!(@{<84a8ly_^%9?~uu7&R+;1aI zi73PLY8)VH)XiH24Fb@S)^a%*$zJCijjtoQfu4SaNx?XGW3W0B4*?c?N|h?o$_`c- z+egtw^Y>+2dF`GrldKcIRh)H<*7X*VvV&loGNAcoLgIXL7q3wKm>M(&)Y1u=&ZJ^( zn_^z2B&d|kMy*jKgzD9f@3UGY!lQL;I z0_eQTS;4S)Ir2^lPLkY&q%Wxz9){N*vaFF>1YvaUi26@eOprmNDS6C9nahZPBEP&6fHy(sBNv?2U03r3g)bVLV63}caoZkM4{WoE)} zDQ{bqn0}Syx2BwW(KY=|tACNTE;Iw2nK%9l2|1_ynTo|+wSX}zTL1S!Dzk2-H1qt7 z7Og0Q-52umMJp&1B#cVKteTtwDGCoY_cj2gq`?Ge4xn6NSjiWHLRlJ#B7 zJXrbUs9BtZr?W9@XlC?jAtEDURwr(8nbcjP9``SfzfxLGhjwT)eR%Y|$-G_0Dx@71 zbX4mSXza&D!{qg}wMF>no@CaNb|3&0AKwN$jfNQFy(Z$KhA9_JkDfrCKQQ zikN00KXXOHA-I{US47^Ob>q5JiUgX=r_bjfjlt~r1 z)tf6A?<$QZvbFXC0TA^0l2{dz%8U7Bf})T2r4#6^|- z%F_x8wHJ5|-sBgOcqsA0RAZUBMcM8oo1jCVE^XZhhk68LltoaEC?P0zRDZDdHXCYzCwxxm zk=N)Ef|Olzgz>%=kiNU^>E7v3qI;HBb?MP?uRPBH=5&|DNGn_!bQ+}#sMR30T{v&0 zQtknl(Mod-PYYHqcyGC6MI%xQo3x}14%rylm-9Fu-2i-zS}zqov(z6_77(>*U`IYu zO_MKq=Mh|bAH#zTrgp=I;L`!UQa-q~AbJ8UY?As(oSVi<&52M}Fxf zMrpk2!kh+X&ObBjwXl4Q@G%woI zuP;F(S=M-|3sAx&EN}_{j%;7};GTklhk>b@nYN$dJoG~g{~Yz@VXQ!AZR9d(B=t!D zkE~nVfN3dJ5c)6qdXBx8O2*|aI>D{f1%31_pb4k=3hFCRF7zab)D|NA36EC=6`A{(q41_Oy0Twvq$LqAgAB6=43tp zyZqk0L)-TsW6fwYzoqIP?|;WVL)-if7+e9*Qs;$F^}Emcn0}wUu%fbD$Rn>}kGm`@ zJS$8sMFo{_0ZZ9rw|yXTw`g4VN{>b#z}8eS|H`9H9x2JxH?oDgCVdR$pl=Z3o7?Mq zsLgUC(Id5MiKOuZN!lX6T`f|W-H~_J35Y}QFrtaSjGU1oYhTkr`aNE>*cH9i!%m9Y6Fi8|-6;{e^8g+4t zCpfc{ohi7xnVGu=H91&;%_IV08oa@WMG!`VQ5w-|!9^uju&<(wq)EhHN1S=4_*%J@sd9YNb@jDZ!%KSP)ScqWYV%+J zU*fin@N2ZUo&M&dMLl|>X^?dj@%MEvhR-!U<75oHdd^p~am8QGilVa=PFrps!;s-j z%*PN`qy3uMzpz5uj8k3L4KH?=GkwHuJ7;!`v)NVWNX%DP(A>xum^Iit%}lda&%CSa zv8_1dm5lXmL^b&zRR`10ZCrL(MsQgM*kgZhG_@uBdjFb~ygAkY)P{~%RZul5cFb<* z%3jLaR{c+qYMJ}=TrbOaQDY0QNvT`bn^xQ2&9sgcXzaVH;^_3UPqMC-mpq3>)GcIzaR==@D`ku|&0`XRwWcZ89i#Af^qIbUZIlUHFAiFDCFT-^N+eq2= zZnl@MMLjYhcDGrG;_Gd{v_Pk8WE|8_6CChY~X}W_m+jUN=!gEe(T)^IHTh|Vw zeSV$3{itr9q={@D-JPmCo{8dJ7;chPrP-9-&Nki zG>C(nd#W~5b{b}#+PeT)XNQo~J+1G%xYIc*yQGhU7M;ALo5D{DrMT_;TIzW z%SVV;G?^w`=@(ZeWJ&gHggl{+X0TYK@d}W-Qi_UYy}?X-2@c}~7hff1A!tSv#7T4I z?;y+DCyn<>*VltO-Q!)duEEXXK~YLe5LaO+QitCiR_3|1=#3|7X1&8a_Mc$&8&0|H@}2xTDfeu zdMs zCpoM&D*cp`RO=3jUn!SZvEC%|NMb8zu+Hy3FBc_X*_kRT&!lX~=H*!%d$fN|X~Ful zt^aU~;+GKRY*myqQ(HA4>zsCzP2h~El%;6_t#($)jB7XL(UOi^&s~!+@3$slva4T! zbh|LGk_m9}JlI*_aMDWKtQ8eKZ5QnASV)a@tvEs*F7^B4s84WweA{rqZB+MokYGnD z)}onUonB-maLEJ4S<6T9$4~c6{DE(^TKIApVNCcTlEsGOaGd2Ui9rk-#f- z?e@=n}!V|i@x%4{XPHhay~ zhV!^&&8c^rbQVdG?p;=S)(r$Wm0{I8Y_@s{Pde6=+M#n9y#68?7Am6My-T=qZBEUI z@6OhW#h&#w55sgH`Q!pdiRc_!7cA%^1%L5ZdCnQ6FU0G60y}hsxuWOMbUFo z4s;0gzv2gmsrP9UW>j+=?N*Bjm9ERXYa{)GXR>v6TfEpfzpK|Eu@PYU?;RA&Qeau_ z^Z7?$`P&moRoy zO!Nmc8q3t{X2e>JTSkLxv)c^GFNky2fU2MpHO3Azm|EeP`yV8SF?Edt5r*pqZ?DR=#rg^1l{;X}-wGhsp-ScOW5+E(iC0%J7x#*1V z7-wTysXG+AbcY`yquu49|K&XoV<_fsN~thRx!Fh){qwj9USzbcURocwMe}5^SVzT2#J{HGH;`)7W1N>uM*}Xn%_D~qEXBT#U+2?%zj*+E zeX3?~y0Z~(2d?SoYB#DaU6amGuOkKZd+y+%bcZ}a$iC?#X zhMbN$%GVei=@$*&)yw@&0yp`PxlA!yL^}IVqa&Qrpb$)*fgI<}cQE8hRW?c5GBJcG zPDqPWc&dhAdO$3S!-^&?ii`vWRPkh?%{ZbTMe4!kHY2Ac@vKOQSYh-D! zsgXxFz`pQZFLel^Q*i1LEDjystnziK#0}z?J)|~`!YJW6w!yj^Dz(84Q|pA@%$p?h z1(8Tqy!G_87Q`UisMDd@f3wnR@FH=w?eiHPwk#Vlf}9=cs11~ z4Dt8rFgud*-vZ6iaT!}Vtg3q4m4@6;?#a5q-M@|N19hI{M|Xe{m{M9x>SgXHM$y0E`n*TCnXHQSk(lOO-dRm z=()F*oJz3dNi;NBF9xCT)km>lqOH7CU;w4rXgkndhK}->&HI~5-;Or)^>ZeDzoSKX zQB~T6e^k38Y!D*yr?Y;nvut+d_Xq6FTX`o$j%KB2O0a3+=}zF<)mvdy>vhYyM_}Ri z4}#qYBZ(J+rQjuv)vt! zQOcFO>=3g(0EnuLl2NCn00vITFtd?`W5-Fk(V9hIM%*DFL^P4n#Yi*F)MRcU2OE-q zS(Q)QZuF&CIZWP&tE2I$Os4-e?%Gh?g$&UQm!cK<6fA)y$7w4ee@n5;b0s3xn3D?& zxzs*=30W)Y_#6iR4GQQSqY`EN&ff(4Z7%ff_w2AIIEK{2NAS>NS8|6R)lqH{tG#u& zs>oM-G+{m_uX7HkZ|>7o9y%XA{lho2WK{j7lid??9K#2e^=OHQLT{!}eI?8--KL;@ zk?(kIKOl7>(vjRzNx|XJ1rjuHq8X_~WZ;fnV>~?7+&C`*sMn)r0@dyT#6z-MZ1O#m zLJQm^kW_>ZU0;N=hF|L|@HAnYI(nOy%Kr||GSX&&22BKs$U4QccBI5%vnVR8il-wP zCYdJZfdZsB`c1*ppL~;>y^3oyP@l8{oxTdHSU;SjLj@Hm!62Qx;-pC>V00Ozq4Cfq zIEhgxsmM|@pvmLGsZ_ThXFNC@-n66+_DaWcwh6I#y%ld3rBLby?Il#6T`}D! zlE*Z6)DBHsrWqU>hD4xAyb9zU6LT2R$`V{iheYHY7FQDze8o%*vJ*P&r64FNL*t(^ zX&bbzOk1U&V4A|Uhr6Bh3BHEX10EUzAx1FKcZXN zv{#1V=7m+o);pV{QRcy;set^qeFwLAd}-Zo@lacr*JkM?=6YN^#q{Q}I2-0iM^JtB zEB?$Ct{$0gET@^aBW`!KdF`HXhWA?YrXJ<}_N%Vd=S~nE?Vf%k&701p=TP%#^Qs5* z^p7^TuyFW2IYU+vK5bPJgc7LaPHVa0Ihes zb`mOrCv}&vAvrFky1H($7znKAGM7zKF>0%DZ60N*<<~aEj_Z}t)VG1Qv+j+o8~q7= zlE66$7+Gv2?s9Pj#;TFp!ARxG7D!)IG?9p4p{b$&f15 z-~s(JtTw-ZACuvdJqgKGyoDf)qAf1pjFRF=jTk3MBpK2n-g%7VtrI0EkV?_9&Mk(9 zPvgaj04kqrlzM^eo%w=0 zF2JcPLYX+nQ@H45N+hFbgNZl(4W$XAloUn?kUuRcxxW5bU~vwDK9mMp@}^Flw>7mbg0NGwh|vUi6+DD4*Fm zUDgK3m)G-TguE@*!#lg^5r%`87rJGPp}4`^GPDjyq+5!(y{t=ZEOE`}%`b+hcVR}l zyASJ{>!_;htPLH~16LBe0jkDHTN_If*YDP+g%<}$UXxMetnSWHF>fKQ`$%`4RbYcG z$TUmWcOODh6rl_)rO3!z8-mu-<=eRd67)2v#lU8ZptL?qM4`ObBC4#{wbrYw!07FJ z-yS`l*ol2FVw5;37w($1cR{@pxXxJ^|Zw4~2^6Dk92Ilp)jZ za$e1|$^o+l1Eenpe_VNEVY)m`8WTu&wwEfnvw+%%{+x=c%6Oiy#1z3}YX_a97_@n+SN=&N^o(a=o! z9*LgY-?dqE-M)r6E>-zU;Q7)5X{}I~=AaZ)h6%NaRHM2{4cS@-aRCRTsl{h@Tz_VU zy2RkzsHz^|>%%Dy?`E*OGN;lDtn)}(Trl=Pu5sCXRyuY)^2_i<`Y#G^Ut2>Wbh*tDW z!Cia3o*ON@nrgkslQ?O6m?DqRmk)MwtfDtOQ4iKF`czA5*Cu7Xk!rIMg2*7mxM+KM zMMgr~LQ0s;BL|FTJjXH|<0W(n7WS9AqjlYJ4564tCwXXVw33lG%|lI8lwiXN!HW=O zOtsR6tX=b{7OrpvLl0ncYhH$>R=)i<9V)Zb8f|}uRl!eg?5prrR~)sE z=hOx3w^83`riBL=CJlX27-(6NZ2<&a+7o-A-!@ic%UeWZe6*X-9Vy1)qadfKZ0MR= z*z~Ccjgy+5j%CM(%MTR-{jHDQV5bNO ztdYG(wlsz;q$xr}ew=^IoZ&Q(&oK2_DxyPud&_9f=?-joN8@CnZO%19KhtO~HeAR? zqYaQE$W6J_Lxx&8!{HbZ=b^bdR3r~3y#(ZQIcU2JN=PYLDwayo3m8j_B@Ps5M_n`^ zpD-Gxd}~Ldi%s$xDQ7J^>j6)Thr1zmy;>hM7MfkhFu}($CyUHO5KAf!VkJn0wh5(GflEAto-kNPoi=*GS{O^$j1Z6^3C_;#0Sn+EpZ}7Ra^{-yS2(=hox=iZF20>LTEN=6mDMZJ(x&++j8xZP z&8pc`YJv^wpIlZ<3jyY(%+a-PK9SD-3V>R_R5WXTnY`n)6)mRTmIFn{ZvG{)Hb5ue7@c4<-W9$thG4 zoTF-aFJ=QRsq9 zQiVhfEl({_o?6679NAqH22=Ym`_?i}RfuyM%8xmV#2_6+%aqxuc0WSg*k+pyrVp!3 z^!LUMQe~gl8v!iC3R`RAcXrb?31u{MwZ4|CgR^tCfmF;$x!JGU02+5FZbLCnn~PY& z+Suay))>4Q&h8Rs&3yGSUTqh6%8UJzxx22N4c&_+v}%lOb+!G$0nt2^mp+V^ed7_F zou?LoabX-iQ?eYit-VUpbdyiqrisZRjX_@2PLj>8YFo~_nw60f*HdApuR2EA0j=hx zvlA~?Wk{I>I%fO*`O{0w>Z_4$G#rzDNlt8-^UKX2Saw^Knb9T8^9)1tlD+JNM=h3U zSZQCTc~>q994?9?=FWf-&P9CmjMCdFPHJq_E0rBp2!GD_;UvMgJkNVTq)zrZ1sAf( zNgv9lBG`ro(x>=II|UUbsC9V-mv+u7v|w+#>dE;?^F){TYs-{vvS%q-x4dnVMs9cs zI!yrAKxIfHs2J)cnYk~SJ*?lvQ&NDPL}h^)1`;{PGwrc&LQ>njdDzw2eOG%5+3=D? zT}sd)`N(ikOEDCn^Yg~Q3wFv8a+apib2#Z;Q&vC$6zju6w-U1tfbo5sGaFb2JH$A)9N6^S zOU*#^+-l4w6Q-@@+?c;r5$r3Dz2^5ecLo!k$<5SAZy{Q6e#tWf;33S!N1)``iyv^o zsyl`-V2AE=?<;lRBBMGso=wj+jhwMnsU!Ie-$5PMk=R`LO1GGrkd|%kZ7=9C$B5z8 zQKo6tl~sk?R~*9`$Lxh5yw*5#5LWh!dTsBL8Pp{0qwA*Mq|=te1H)}`)vCE7yxccL zw&uO5yNcC4keu4w*&fiPJn`UU-sK{pkX~X)|B{sUrr_it&!B5&$_EVz)p|BSQk-dl z!&ypk+NR5;-SQbtUO~q)s7;i9LLFqr%wHWMsfJ+bAa1D3G&xH8B;;Ni&h#55i$&K& zt77ktP++t1t7DHI2@Bkl-{R*aA3PO|;_;JMR-Bf|DMm@n>9Bg8&Af$ns_^j~>FrN> zd{t|aFH>;1O+@YWDPzAx)w`!BF41h+veE>eiQL%px=xz{jaE90+bZty&_!+XB39d- zFMPMF%_q7(eKF3Orpqs6Ejle~<|)lrF*wo^pj;ME64r1`|2`{*;QQld4_eNw`y zxOMwV*}c-$OfJEcrmlDHZz1?KI@_2%S|N6~?c3q|O7$^@1C-<$XE0MF{jrR!fF%l) z(24Jk;N8|o=FP{iVO`_5$PLC|skD`m8nYS8PB9t2Y{p4Rv(mT*Vjcoh5qya@pmY;P zfeo7yY7P^GVHc8RgtX>zhLAeLO3qkGB~1kqo!ZR3$R#sSN}iUesZ)5gzH=I{&)FutfB3E_Z!mZSU>Q%66Nlj>jXz-l=hweeN1nSnx!gG|@hmMnbYe9Yf1VRz)txw| z?`Ozo64)W4_lY0rb{^Kk{!YznEL!OEXyjQVS6)r$MvjwRS~l_xmPEJeFFnnc8h{(| z&WY;OOzmpj9b5Nz#Pvt`gpBhi>RyNDdgDAbBKK+Ao$DHjx;BySOr=_ft(AXl^g`h; zKeOmw_iqxrcW&c6&`Ya{f4TL>gzJxCYQA6Awy|>dR*1jdTK@v;Gyf-80-o(}=Cj9c z(`)P&`m0bhJFo1`quqFI6N0^J9*(^kLjJv~AWvS6FtM@&dWLoTBr=e+xosd_ zuQ4sO;FGB`uGAX}!^L){opY?Aszi>PY1gvP3#&5D^PqWGX-B799Hf6{v~G8<-2L*~ zYO?zZy~+dQFvOD5%N#n`D^7ElSdG)I>oRTJr73CjS4azoGm7+I*_&(8;E$Ua{Y6?0 zn%FuqS}M*9EF~~k`8#)h9c(qHDGh9=Y0FaLcJ_7nI$W46u<_P)7R~mn)3Qv*m6P}F zWD+fwPqVgB+~hh99&%NHQ%truH3ppmt)OCdRAbmE9a_nw%My?-+EPL?pbV+ zWSSOXE=BKKlZiDf@LXM^*$6FO{=z4=udA+h>@}CNv7_}CoF2m^+Awu}Gq%0pxq;a$ z!jtmSV;-@-&4#wN46Rttc-D+P&gI&^J%>Z{b`m&U)@rY}ek%9sndDqt73+5{>GIxh z{b$d+Ni|mPtndBzLh~-tA9WhBI z#i-#2>lfR)9(zl)b(R>6*WvqKgF}O9b=~_h+m&=SI%lcR*lZJ3njPI8GwxkQ>e?uS z>L$IZd|!oWp?Ph{^-FtHLZ4|(&q-lI!rP+vZFGgNVcf}Yp!m?>#cg&);h7L;-vAn{v;-+5@7?`cV% zr#_md;bvMx{_lBPPZhRSq;1%6UCl+VN_-lIb)voPbXe79g4$j0(K+QvNi}hcB&x65 z5o|#%IquJ>wBj4Ef zTrXvV7ts8j4xRn=v;DQv`($xZwZOSqzDDzx>L=g**350{+P$HPLM;ut%UMIkPT$mD zUYaA!1Z`vZRCV#Fc}U}7BiaHtyv|-uyeb_0oQsp2l*@aCvv!@X3Vr+<9!lBGfQUB= zj=OcTYCX7V-lw~{*QnodQ?&x$Li#^JX!Y#|hWllqVB6?6*7tdm-Tn>h_*b^~k1hwv z{AK0K%WGwergX{ZKDf&7x{>hBrPen;Lb-1F{^LcNDLK~A#_*n( z$9Zj>Jl_#U`so`*4b9G2*Q`y_T!V`&v z_~k|s)PK${TJZafySe-W@9t6VJSCpwRl3@R-Xbc8NY8tsN6R|MiZgQ)L7Dqn84nZe z#P47;)8H)NA4!0-fV6L1PN@jXNAK3~Q<{`v>&=$%pf^M!e< zAz!kUXrx~Rq2t)#ejN`O{d}W@?3R2po9a2^T@IIx{_pQ}c$WvcX|nUt(OAKa%iC`MdQl$OPeIvF&_7yIKw3aqmvADV{1V&=F9B%*W?W7k7tKen zjD6#fbjOjjI!G#uj*2U@y?ciES=BQwmls*c;+%*d1DMmL3+#_Lx_I?1&IU<#E>bpd3KN9a8gdQ<-YD;A-A z{&CCh0djFpD~c?=p*j`vD0q}Up~0^Y*8t>~(m$Ni<~tMla?jW5A6VjBJvb&M8Re|` z$|kZbdwF=8G0G`7%T22vEi-c?gMHM#DlcKT%zh1 zF!?TLgh7&j%k;{i0d>p*`0OxKFtS3sm z0-M;N0vZz9$2tWQEdgl)gbENSK%oI=0ciq+1+@Wb0)X}BD0D5(*XTe?` z(2ir#>dz&33r_%WJOYh;41b&d_j2t02}^&vb<&iw;ee84ebWKY-75BSbU2y;XNSXt zK3T)$ouqR7QR+afD<%EW#NTL0j(zbG>z0*;vdsJ#XDdK@|&N*_jt@KF95A4-7#MAqDGSA8`FC_riV|pFbc-kJ zJv9sZ8hRRv8k!gsFlcJ1bW}Ua9qkVKhkrxBq5U*Js)yB~=g{h4EWZ(F)ll2e+)(Q1 zb(A+WI@%km9d!-e0peUu$GBbh6hDfG)1l^26S0sdpAO`xCoQ_rpo2h2KU0!saX-0W z5vGiZ`qA6ybb1H{^LTW>D5!2y=tO8M4vTbUZ`r#u-7G28ODKMMDaP9SvO$j)o--g$<1k zl7tEyDjih~!pZ$+T@WugvR?T8S8e$B-_3W^l-2W5-yG8U`6oPHNqoO0Y55|a-)M@^ zyuZuJzcn8pd^hG~4)|K!rxVFPU&*)7=q>t(m$;8@fZRv^KEByu+~p)MJmEgNKV}UC zoLj!V1rm&?s3Ys4B%c=aTkDtbEn!FyZ1N4@AV zTIC-LbLQ>VL}N(Z4~-VS4mrdxR#|p~L7DEv6mSdWoNJZ$db&P^q|f657sr0J*&>KojTu`^gXN2)No6)!M2Yu-wD*rHun!l%SO>OICx1r$XEFr zwZIz^_Pc1EHc35v^z23OZIJ?dgmpLbi`N**h{m{ldlwooOddA(D%{Y-1r4L-_-ts8 zfL|N4-wJs|2bbsNUV`sR#bvNiOwb!;8;%Z)q0kBeOCyg&b+=t!;#{n7Z?U%7Z(?y^ zF*rz$3HWyT!@W76Yyk(cdTz|<9|derw}gAW+S$7@akyr5cY=PqyT*X5{~NcvBtBR# zUVs|t-XcWyw$EOa?Qw1|K!fxq?Du@*B+cC%E$R^%k9+Q<332J~2g68v)zR;YE9E|M zkXF2B&trE5$9&^Zct5Pv z9rzW^LEWpdY7X1R+Jmz3we?o*tNj(*Se{9t&G8PA^5fX>*1{y9w@@f*tJxi&Q0;W{ ze_4^#bye(+$%$mh?01dUD&M+fb`q!vC=^Q~^ykp{$w6NEC(u6BJB2S}X=Gr$D+WQ9 z*4eT)zK23p_d+Y-?)1u9?NcXctq?N@QB?lYJ%!V$n9KKlJNT`b? z88ZdD@{gPP1zRV$hq}k{uM&`x8_64J1H3>m!#SpJwvm|H*21>_qG*- zNEhN+GfN)E($n5>EloY;sCLp4H+3gU@w0|L@wT4U*xFiqR{hgRXI|Bgq5e%HDV8}iCyB0z2e_4=wbq?7Fu%?wJKFk;6V(65;~+2)l-e?}oJD z-@0TBk^(M2l=|rXlVg7=41D#cSAO>`{wm>(x(CG?eFp#NB2rjfG76uYp|1XIHgZ4CV8ThH-^p$K&ta zG5GCOdmoL$uw(I;wOIUKq1zvdz^-I1{0inm-qlyJ`@BmgKXt3IWA`vEOn&2AX2Ni}@-D#ID=$IAE zeGc}kA40;gW9T}n_CA18N4LVTYF;b~=B44kbkw{MElo?l^*Wmp@wTPsyl*wPZD3va z70pXbn!8r;H4fU9s}jknT3^;^L%b^nrDwcubxtLdQ>N=|+M2Thxv8q}-8D0{?N)fR zAiKbS%;OUN$Pcf%xK{cblBP~gwoz|w_*qiRg;7ej5plUss-~XFkKVmbKY5`+Mwk`Z zpnqAA2FZalmh|j-+M5dgXX5CNNUqMv=fHro#Ij@M@9Q+w*3&#=?fQpoeY)+ef4>5` zkN01?T)kg7(I2KRt?7%8dwW%n;E@HK&UoP6BjMD==nYF3wa;3XDo;XcSeZQusbV4L z?Mn}0>1?0qy|&)4)Udbinw8^i>kUfpcTzFCW?vxZ_^*%E?b6NvGs(Yn$O>AAY=EPM zV8{v)dIKOQsh=_ecI($HfSVVfG6H7n*DQdS(%RVpDNOm05?|J21dXP6$O!t|Hb6$y zJ7ff1ZJSaEU{^IDeeGG(n;T0~2JCGuN9BI$a--Y&(^2qrwzi|+s#pf@jWb(j)O)yA z4M&Nz&l--sO!=w)x_*Y$1$x^yq#A*0YC)ZirKtunESivC63M9ru&f%8S5;ore%&pt zsQPbev_T#FrlX&KS*Yiq)@nK3ZJSZfKdjVqZ|gN2*2dD*b2}SLQNlpAH5?pXfYfkU zmQ6(PUl#B}KFtrZ$>%y>VX#2K6TrB zBM1L%k5|U9x1eZ8cM1fii!Fy?=v^S^V{x z8F^G-EoQ9~i_jO6q#ymtfofz!=k>M5#Ij^V$QGtVJG^dcAvYRa6Flwh!2b>J+zD0j3w>K*+L0*AVx?&xx;V$jE-;L!Kn|y1y|`I;>pw1s&Y|?^ z4)4FX+t4c%?%uzw$e`MXaAV?GGAfnrR;81_bkwp>>oqKm?N+7UD_id0o zu?J=-3nbl0@;2A6G+As?UAp$%|C&tf9^o4-@t?`JTQ#<9ijS?cWK?JtrbR_lK4er) zjir%L_POgKp=)f}6$cW@kx(J$?23O6KV(zwU5g?S-@0T%E4qhL>ulK&vs-4!g?fi= zM<;t#kq}?jVYpA6WJNpoOo)8`v5$4@G*VWY-Iu2K0=ccibye+c>3->vCH6L!M3(7o zY>6w<+Sw9Q0=bbS@T?gUNW(9|HqpNP{dq=-tG`}ywGQP5zHyNtU)E$u3)-xR|9e%E z=pWW(PZFTs{Jje9d(D7;r+1uyyi-?V$e5iit&uS921LTZuJK>8HrkWps;^{A{Z)G+ zUt(D@CGM)dkuNZ;84~YTV#t?Q?wJzjRbI%K8oL%mx7Am&CAIBZ#jFbEM6}gcvL&6s z$d*_Y%!y+Dvm#h)Y}pdN@wP;+*V-8pw^d%qm6%oxi3@vGks&cGnGz26sloLAvm$)H z4HtXMY&ZEHAiKX_JbD_VLrf#!-foSCemRIRa^!fSnX@CtSbE4+G$=2w?x9kIJ}wH= zg0tZ29hyL|8>HXbXN-hgSAhQ|`kE8>dK-z$X^L+fY2sa7jRURSMC=$9%~bS6sqhVX z#{lm(`FqpZzR2@|8JC4JK607!T{7-{aMxR!yB|Z*ygSDpHyQp8klNa?-}5}NM&Y0$ znYc8#^w8h3FWkGF2aitpGwKR!N5}lF%HRe&i_8(97HV=qfMot1gFc#U< z=Lo{PB>i`&xEP4bFz7Qq<@Zv!E&~H_Q?0`@c(`jayzU(G`$HfkzpTg!9X~^41bg>P zfQ_}!SpgScXk-ISOC~@w>G~T{0qPx`;yW8l9*}=okQ(mVb9`RaYErBBN4LZ07+LtZ z0X?~(_d>LKOa?DmLov;`(LiV8iDbuzwf2TQJE(TYhaWh{hRRFfGjyuabhfrTAGOa| z>~VvNDjYAtwnV{S7f|kvV1d)kfG!)H-LZOY&Th8H>$f?%+b=fd#N6BHZpa~gEa`Bx zC-1^IM->y(#XXKO!}zD`#@E^y&&BOlAFqXA#(l9Yn9r@_bcLFSY-i2=W;5k`RMcM& zKVv=xGo0Ss@BLYMO_vnCIMh4+35t;o=>ys@pWTVy6K z?V?X730fn3%;8yibl_qE-vJ45g*n#Z;te%3vgwOF;| z=NiZI_N!R^zHzL2wl z`6a*dE(e0_!732){m&5oHs$CNy8rPtgS>u%)(+dhT{VNR;`;5Z9W_<$VCTdC>T3rn zfBfxW{_^!Q0)EOO`V+?^?F-dS#iL%HJ29CJZml z8oL&<-_$$MCEHrYPgP#YbhqxRv}5!ZtsKO%V0YTP7O^nDbk-NRmQ7)J{@D|=;e?u0VUw`uNE@Ly1N!MReM&Z zk5yjAiZCmf(L2=UYQmdtb?fazwyU$%*tK1juEnbCUAWZ)%x%ma=NP+)E~_ ztT~l;8oljVczUY#tAQz>;+qbK75_V4MB4E~r`vOJmGht)L+#4XF`Kl40oCdT6@waT z*4eS9lIiRUPWXZDPUjw9!v>KXq9^O4+wOAtl-j#&S#gA}T_9+@k$-|it1L*xC7 z)$)Aaf7s*hJ&*H$UuFC{@6ghHu2av=`c~d&_5> zWyx7+w;9#aKDt5A=g1q*Hyc=fuuA*;vLE<+P_(yKB07XP$GwH2x;~zB?~T^IPx~`0 z;hV%dnnx2%I;tH{4^!+MZ27610+6lp``p2Drgrst*}D-(KIW1F1SLEC67*K=IeD;h z_tNP5U<$63K;>o^aHxg0~i1Io~)>r}*7cv?maC_!!q3q)HZ-#KS67Wa(tZN~EG zqddQswzHUhS@4c7?vRQQZ#Yz@ekkeB>%I2xI2QUko&d(%R#I%)awMrbG^jD<%#Q{v zDN|s{ogOR|X3v!(K4zaTI_Zht=(5H&yeAkhvBH1Zlb(!fYu;%R!*Oa9AOc10P zYR8_qJB^4YLy-n#>GbW*iSyypuNQckb5c5VuX?bh#+No6*fXI-h$4{}QmTrCtcDDY zI$Sx5O~nqUOm6XE6y=0;^i>%u#Pct3i`yU1!ns*s9>+Tq2%&k&f4DG8?k)#)-}TIW zcqD%5Kf4n;NZHhgRak0Jq&S-BqS1oSvLnHsDExPn^--?y44fwVw)X zNV6%S1zLIKk!47el1^PsjXjBH=Ehe~tY2!wx65q5Z??4Kxr)Y*DTSiJg-WTkNrImw zt2P@I3LuRl9GG&l@m8B>`u?qmE|#2ES`V8)IdqhTIt+-c8v zvSnh6W81#I#tDW4tv@Ulwz@lA+hwJFLzF9bMHmFW0S3bx;EO4q*TWzJXK&&@MXmk` zQAQoh(@hnP@x$SyS?fo2axCreS2w}ceV}@n25Ek?`=_PB910`(&-s6shIH@3KV7lY z?=!*402FcNWu1OpJn^SXyIN{i7Nk7}YrbQ#} z2Od%K#s-EzXbf42begTR_BXQik}cypK>F;`M5t6rQB;F27!O3rnXxc^ScWY^R+I?{ zy2ZzGLanSD`ff~!xH^22=is$R&C8L5@#m7VTlJ@e5Qe@J}mm&5w#Chc4X zIEYz3eU2H})5A{MdD{BRY1WZsLls$v8VsnjVlJi2%rJnU6wKL)RRDlhgkk^Y2kgJI zw|f6=dUgTZCua!8<|q-z10^n!1M-mz+Dfz3mH_)65mf?QSx`s^5NFLBfJP*0M#;r6 z*mv|M(8uu4+nM7no>B0)bUCZ(aL6X~57*H-dFGeTAHhiXzuZeR9v(-A(D(}74^G;h zOBCN9WX)%2t-_mYZN&wgNw&-z)CK*=g0k+N(K2jmX(<{c856~c0QP{`=fsbhrOAyR zBsC>MhYb6pBWZ=~kOAJZS98U+2ZIu9II?E2Tp9Buf({rpiRDUGL=_>*kUF}v*p^X; zJ9-olzxFid`uSJ*89v`>WGd_TFK({0aU1;KeTMnykew9RT)}nOQ#gc@JDV+ zT$2`rtg5jF%i7#wH9XEf@6=wj z^^r;Psw%TH012$sV1f&jq#Zxu$dMQlw=~GgzR2@{<@L3Zm0yLJ&YcZO6zGJkSWsiC zDLyDBVlpCpokV71Rq74I0;Ukz=b7gQJ5pcn=?Atq-Gei_%0CNz=l94 z-UJZ6A{U5*jB(O?%sZ_ikJ51U|A+m^-WMr{gpcdtRqkKqv%xZjGB^eV7_>3`iX6`o z9^X-Ek$AQsqYiJ13^B(vJ@asgb zn(IO#@Dl{W&8<0!$hLW&7M%El-8*RGBdT)!HIW><)a5DM{YFB$m}uuW%VZ{ROk3gJ znwpLm$ce%rt-Uze5RMYYl=`fr{*=grA9^|o`?*!Gg-^C+-AGWE8C4_2hXx|C#g}Kt zkp^0^0gtezfWAYMC>GC(ZcBY(J5urXSymaj3Q5}Uj|Km^M${XzCWTG51LTd&V(xsk z|9Nr(yOHA&Ttc$M_B{sEy#xt9Iqy~Jz0ETLLJ94-|G<5s6BUoR6Qke}mVO3Pc8$S& zgy{mV@xI{b_;0ZE4_SnW_S*{s0`}Yy@5Hv%+aIgL;^o9BA7A|24nWOD?fvMboHA(@=<2| zZH=?cY(#y5(}+IK<-{LmP;xOPapz)8?)#qSiOJ;7n~BNcg0H>54>f9jI?;*2?s&C6 z!gl0sF*zOHB7Y|B#P2x#T;Q|#{N5)Mx)B==;&;-#0*S>8DG?DggCf5@a zd7Og#+7~&@7++}z(JDz~Zwr39384FOpU|GlShtq$tsfuyWx^na5PN)d<_hJut(GM-7)>7@yOcu zEchi5CtId3wku2RNUocXacr(P8>Yf+SWWF$>E~S&ZYGt_>FCaqbcxbm`;!}VOa^}{ z>h)%Gc<%X6V8?X%J||2V^*!_a9S zTwA^ntL%JR+wG8o=Mnan>Famz*caWoy(a#;1&l)XdU3@oNf2g$Nev6r{tcYW3CIt+ zU%8@V(%p|je%H|uWgprQ+jX9RKoRgYS497*##f_QrtY34Ti1vP%*V|WiGmoXu zQf)irL7O}$+8qTzg|>7kG6G{s5ur$&05yxFUUdEm1N;Et+zies(ot>GP?Q z62CB|ID(pW%)>cyLXlw4ojFMA(|a?iL`m~Y`l5@d)+(_l%ZL-h&Wk9j7!r7a3g#H$ z93W7sG88#8u~KSRoR55L1fs#XTX}^$o$E%)dGvhr7Tz=ki_DpgxomCjFgblFdfg?F z*#eDW&K=t>XhXRug?yxploTlhcak!os`6~fhN5o~-ZrUXr%(z;OQhg}^9GfJHT<0*tH@3O1t_219boou&C z$n?SjO^y-#i!FuZ00q;ashV=BoUBPQfIdB%#;tE>AQ5zqW~(F!dRRy0Jb~0m?G=Qj zF=I@o3l>eLw78Plpub5T_|ZiwL#yd2`zIQ`;oMWQ4Ds5Kgx@JHaVc~IIaYM_79~bf zk#ecIG$u-E64TYBrU%&A`r>}gFm?+x#U#xg(xf@d02V zbQ=9#z`g+u5b{V5KWaZaWMU(dx@(v)da@Pp?_%R4iLl7Ufb zs4DZF;3u%EVmuP;;GcRzk|)MwT1@_W1+}g4_b!cdyAB+gqQ+B{kV*`Kk@aK(yCnre zAmCuPhc_`&oP1A$_0B9oVW40{Skoa;hz8+LOF&O8`9z1&Xq9W5&&ZP8KOKWuYv>7`2LWQa3k$4~f^T=uA^4l`~+=P^gqC z7X@_-Z~$P_6E@|AjEbFIvAjd|@cTx)0Uvu)S=g4qAJ{&6pjJ|0tSVg&eAz}BsBp6c zxo8CDrNnPgM;3m952&S7XmmkUL0gDY!pb=Sv{6bhq>hRfoXN#ztaU!-%U-noR3FL} z7){GS1;^UJism6KRAG=(;H4SiOi5iaf*q_XsKLM6qn3GYE#o{7K6Duqm6HV6l4r$O zq###IGJHugGczPZJAQNGy;WdYbR^1L&hVJXfRt%-DUX?g`H-vbe8E-pS>wvX!s4M@ z6_3OA>p&OGFA+dQL>a)#ERs}aIhQypd{Pv-YG+1F%+Q^Rl>?R!5AN5fU~B>IoG3&W zkrqIp#wZ2w%#Th;^5=?Siw_p*3iBT%pjzJ$09UB1-09Gv!h!~0MF9E&v4XA$Kph|f zvL~pltW=c4h#}6AksuL|7dvo3fFctjqYvi5 z^=5TKs9$i9*VK~qc`Q5t#u=WKhI2(8ne!=|lqokCa>ZIES>9cU#UiCh&Xiz>qMf3((B^;^iO>T60b!GyS)3~+>@%@`+Agp& z)XR;X+2Gq4G69CA-PEI0O5i#WCP-6f0k+M>aorWun&i!n$MAukk-c*MyIf_RlQJZU1Gou%xT@VKKsMp9g(VmmFQjAG zRGgaUw_Vvy;!YM81m{ytfyyY0B!e=!5`5``(Gh|}xKw{i;~bj=&xjDML7zNXoG*&Y zB*!0Y(<>cVlO#!n8kMA2=ANWcQ^YX4J5zNwr&2ml2*hR}TwyXcUVNcI(dQ}(A|3NR z%%~rBRIgBMB`A~tUWg2s5};IcRc12aC>9$HNCuOuiruV0zUl~HqAVg3h#@*yA!j7Z zaza3SUYSJsbpDSfJDEc6!?3L&rHdT|ni7C2BGZHz;u@^tOkvg}jT$V;wN<*VAid6{ zY4IYe5LX0}IUq=CB7tev5Qq`3gf4TVDT;=LR(wPnUbCc6ltDkH$x^Tva^Ro*!Ywik z0*x|ykmh3cDW$r<5eQvs>nI^qgb>kB6JR@pBEVKUg3L+;i$FXDH|kS+5|DrKVKCmOj&$Hqh7LQ0T|0tBpK=wJ8@?L(&9*i9%Mj7B0IS#adVV~k$4jPBM*{12(r-db0M z8M0?04csMPA2_MKL|2FdilO#h$cJdNug?GecrTRgdP{DSv zK=}deqzPGbLG4rFsZCiRE>Sael0;9VRQ$}Ijikj1np6R;kP=u$hzBSGiUt^@~!ics31g1*_)kq0e*8&RKVuO=J`U%{ciG|^~otq6uCWL!?mn&j zM_P3dT!m%HR1-5jK_Vi|kS4+qGuja)*po?xDJ?O?*dODCtJZKMBf)pBVIFhLR)J4`SQH^B+*unuASt>;EiUv?b_yzZuX2fu9Bbco}ZxAm~ zqB3m7M>#c6eb6ze3!*H#QvgeZ4HMqJ?$%vd}b&xVqG^`m!T~Nr0E6P9yHYvFt@K5hTY%huVCQib@_U zYnQP5t|fYcKdIB4xkACygu=|9K$QMM5h9a`R*Y7agEMnJv5&@VktDzc<;f~ke3|Zj{{Y+fYTuh0NVBqOW?Y>_f)8R80qnh8Y-U7^j9mW0I;S{XH0i9gHK z3U+u;UJm(~MtlN^2{RN(Aprz+0xqa!F4J-*eT0jQtK?i_UoFGzH_hw&T%VCGM0+Yk z7=S>7r%Hr6z(xWU!-Tl-4v8y733y!LBuem1JdIu7%>n5L}rMpY<3z@Ryka@OAs6X*8H2^xVTJ%0ndqv zE7n~;LV$27I)4hy<{*qVR8h4qniDdZlj)QZHzry%-HOQ^`H6U&$5^E$>IQcxsu~H! zBY$KBxpKn2P>&W&KvyulsG`<68`f+P-^9(8>M9x)e+0wAz5-;U73Z)oewqt?rhIvn zxC`6P@bJQ!Cq9m4^*1ev$jpo4c-=}ksVP9wKUm~gPp%VEQ+SPlT!s!GmzrP(l%WXl zWzVHF$@r-~wkg~TBBy5wl+}e$w){Mlz9QAJR+Ej1wz=YMU7#cYo?0*^@(5t9$pQ@} z$v~L+#cVY~SoswfN7?)%d0wGfWN6XCC6IoBQ&Nj4WGZlfbfzGMnIlid?9q72N8f!m zf@ES@Wu35Yc=#?-v=VLuNdyK|Q)uc^sx1L=;&DRtg*Z^9JLrOkfRDl}C^Cn8g}Ov@ za0SfCGg+eT%GtS2%}b8hsV?ONr*2u=U&hRYrStZ+B+FlXmf8E&K&2XRQ)fhsN8;1? zT4p@ZFK~W*K#_=9MouWRez~-FT=6^t(N*aki$gGMh;V}w0T3(>XbDrK!-f|!#gQD> zbid|#=?;Z=#PgN<7%4^)qC|rjAU<4;PM}V(41hz9q*WtQ8bYWiZ<**HucPhFq>jDd z^*y0q%40C-WXGmi9*;IiT#Ga(wg}s)%_MMX{RppyvPh=DNQz31%6^vLk-9HXy>c57%?oU$N{C3I0%l3T zpD_}V7IH|!hE}4xc%az5VTnE$9@1zhu!WKskyt1II4F+JqLYeYnLhI(;cUy<+rnvE z>sO~|S#ra2gNJ4eh*IdOVBYC-2GW%L0$rxO+Cn5c4`1%kOK$BuI83w&xV>yx`%-L} zQfCWng7-;R1Sx~3iquM`@`14qo-o+G09xIxJESDXviPB=XQufQhw?ZdoP}j7Mgaq+ z!-7;OO$t5Z54xQcX0>(C%=PRnOtThn*7zd?+G)t!nC_NY5m~!fSUgb;UbDr(W^gn{ zG?7KoWPd4*XkKhW3l5US99Ww!fm;NT;s_Y%rC@o8G3sitM@tAqGd@*KHmps- zTU;ES)V>=xzG5#>ihg*OKm@agLjW(C1gDT8fyyE(7FfrKgmf7l`TFvbRK-_=K11|TwSx&!JaCj9RU;9g5rSd~z)C@K@=$m{_g@ksr8(!oHv#L@DGCoxwrP0*h(h=w%j(AY{m$oQztI@J|!x8SCx;WZFT8gYflu)K9AtIWgtoaMd zMJ&PyO|xP$nY$8X#aSz#fVOZGvfRh619K>w!SYi0gHf_P;l8QGJ-jC3t*Vz@1WL-G zO~mkfOeG04jBvEfR75Ab2VKWusiAK~W@-H#&43Hwt{Fj~a)>O#LZbnO2`NISnoP!p zE_f^6YDGtl#tutld{bebXO_2_iFk(Nq>8g@?c$w%8q+RdRVoQ+n8x4-GsvBA3Hn2+ zn1YIM)$Xw(KwW$YoDOm@gODVR zi6(X`P>SY|budf>08P8{dTr}*j zhksb%vfxk<Rf`~pchj`Mo7X=C+K&u}**)IE<^(2Tp zbmVxdJ4T|q5~N5A$U+uT&?e6bAfbfafSpwVh%x4c+E}Q5uv{F-TqSK{JXKs?ps(;| z5CUkO0AUa>jc{DvM`TKvsFzb1!I5;-@m6VmiP_(!2n4ePf-cEAP*ae@AZStJg!IxO zMUOqCuI%_i7QIMIRE7!UlpyB?d;;2X;)JC#7#0*TjK3_3%4T%_ZZ5rJMuZ%Q!6w}% z32vxL*Dg7&+78#yfUql^MN*=hyia7yq2Dn!bR|}Jtc1OSQjkheG0t%az!Gx06Adzz zaDw}+$4g|BV)PN$OIcOW|0)7wW6VzzaWQ&i5Br^yKm`(i>iAl-q z(v?rll~?GLFCDR`$|QY6b(}zqRxnCGFe(ROjKMLAlAf<@e!Fxz@LBO(HGY6lOAUku zuwpSe8G|u!5rjHp9VrYU-H{DgY=}+AislQ}c6LHVkOPq=#916w^-x*CA|Rg?g(>bT zB*@J8OJ@l?EBbJor(AdOURi#DZ^^P{15qWF(M(qOd`I618Lq7;=`Bw{g25%H)qYY! zy+r;`k}LWQb`F$)vGfx*3Z{_6ffuU@M2Lhu0|P5BUNTJEuXwN?y+Wv1QvyF2G_fLR zW`sxzhk0!->0dk`Ql2Uh%L~spx6>^$_O}>GyUk`KH)%EE!Q%ZBBTR@6zLf?%No1g$ zI_6}6RK|))WE354bT(8+Gvk;J)z6C%lzIVJ@S~|FoRj8~eqe>-47MN%Qst@>JV%8l zR4CZ2)9YOsmNt7+vgvRw7!6qpb%~1%h!&I=paLoa4ti?Di8+;hl{zIHbr4l7MY6+U z9J%3?vOrLiEQvr1<>_NOG*M6L;*hz*qI9{McFDMBZJBLR@r;Hu_^&i&0YlIJ>n3w@ z69Qc?2#dY5L|1ct;@Zp$?=Y_uf#4^eXM71WfaAF9{w(3z2?0T-Ax8BODAx=vKn8L_ zlMrW1lQ3CeBzT6=h)z6N=3dbzMw=iVM5_slm&ht*RY8f9B`6+Dv4F!AWChbuh@xtC zT1;6rxC-6;T1j7^TPBxMR02Mw@UP4;W@NCQBqhR?9(6iYofb5dTXV@n4T*jo(O~Vl zl*f<~j|4$XDofv`fENRtfp1e|!U%@K5NPQ|DZ^S!LFOeJ^bcUko(;~P4UUB*bwGqH zJyD|30zI71l}rdMnxTgtEo3iQ;+F!@(M+`X376Ce)Jn<0M6Bt#p-b=_`8cUA!9SCo zZC!jvsH0g^BZspJ;6qeP5W*H2OkfO0mo`v7w=mM}LoUOd@ZEX7f(_{A`ioC&i&?eR zlj7Fxpv4VMDWT;G$HiN@(Tdlq(^eK)J|sxPwq?X*LK!|M;YOhZ^(*OTl1HWq6#6?J zOdyIzOxY8KJ}C?n%E~SZxVpmAFBUAhNxR>-qVqrkwXtT+8_E{8IvT_jI`dCRt z&tH$%`o%0NDVQTlHLpUa;bprW!I}+42u#U)LbU|l>MgHPt;Q2Bx{*VTxQ~&;Nkob9 zZ!vnuj76{ov2cSM)iuFwRQm{3rbn2d7(FJ!ADmPJW1V?=mt`>dm^QtuRnAHeyHJlP zK{WV4gcA~kOfg}Bw@QQqlmuHyP?P>hZ5%`8DyQLg7NmGDM<66Y5PVS6qAY3`u}^~< zRC;VHC5L9_Mpw1e{HtAh!<-YC{>o)SRynSC4g6slph~hA zK85805_D;^r%XW6nBR)Xc(}C?p;8x$zHw8szH*NF#bT1Z0u?~8h7>vCk7UIRv7nit zVyH@oE@(Nf9B{P$G%Q}x1c+93%LOe&3wW}rY#P8smTnY4XxLnx26UBUNEIZ7IarLY zNUuirHC?gdf>OeANjXC3BCLZfM@&OJipHhrrs%C(XPp6T%i7#g;BO9mQN%5@PoC(V z6FrUfUyHf0Y#uL5)?0C*Ao+Q#p2>|&3#^6ejqB%+UI0nNO4-^zHi9H;%4-$MEG8M z9mom%W=j({>#^EDGau+ac942t0{Bt3s%>J%j;_`cnL*6BnU|^a1+07?tu<#t_WF*~ zJG^eavg~pBp>-fma})pI80F1j4c8B&y2|aSc3b_<|KNST^Y^j4FUZ|~-<|(o;`jTx z{uy#SZl8pIk6`e)G2-xt=6l&^Cy~PM;P*iCt`&xx_|s*)|MY*)jfl_xfK&Z4`Qkgl z|8Z_|cpeFe?s&XW`kZ0-!s$A8)^2A$AK}X+5RY?qVixjwRbQZYFc;W#?+e>LaI@CyXx7$Q?_c4;5a9^>g22qfDrKvu;* zF~HPo`g*a8DC}Ng4f~9#pU7QSYwK;Q*KwgwGL7raLs5Sj83(PMF6`|a;v6@Qj4NTk zZuaLU+3dG{Wo_#TSGN>DZCuhgOQEQ>hH}cv;+CTRRD5A3Z{8fA#93D|-)viye~3PHac&{=x%aetL}Lx7 zk_CVI{bUSm>KE81a(IjBnyvR93zNsDWdAiLv|Iu6d`L#DUv_wcmJUlzmNHQ#9{zhhkF z_kGkW)gKn}>rHjpPMh53gxFfOFpG0{rgt;46)So&E(kZZCHGS7v#N%-1aq%}h z{ayv%}YoXJ=raiW`yztvxywGNrlvG06?%yl6 zdHO%EOC1F7k=XlAcX7@Cw(sHU{*Uf`ziqs_=K36Of6Dovv)fDUv^yW={H1?u16%Pn zzw`M1cd+-JKC9&Ze>3EL4{Wc4^I`kFM}PLDN$LLNzrn-Dx8eGKXZE)L^8HU&;q4>K z?fA;}^51?BpMfX4@&D)i`+X-b^mLv7%kx?IionTj+Y9#M*y1FX8<^v;N*6=G*!I zyW4-no?qQp@%vf7!6Sv#dmn4s^LuZntHS&derIj<;C6g&2Z`kRe5akB>)OEZ;Cn6a z*886?MT770w|y#~L;a#+ael`W_r6z~``v$-rmjbu;r3o{#n*MetMWKojpt$HOX2=? zxUP-2=wsVxgvi{fh9^r6^~R#&|Keao-}PSmxA=W#qx^p}=lq}K+5EqS!TN_(JUw;B z0-BCp{<<&S{+`Qq#=HAlf5G1V50$g=|9Usd(y72G2S;(fQ`jlI=k?tFx1H7@@pChe z#d7$y<98fF-sR`{MrR|YYLS`!E?ibuY9LB*bT37q?rv_at*$q!ekz-`cGS1$ZIjSD z?4f&3H<4{EI-DqU>z@xGUj?*6|`^FGJ2{ckgo^?ysU{yjp! zKgj+szx^Jru6OHwjoHcqv`MVEu`#-10@%|Ud^nAyX|0j*{e4oYad>^;dYi9gU8~gX& z$G+NOcpjhrKSCGvcwN7R;`d&!=UeGIt){<8^XUhT?0KJyd;4AF&Cls^9{l|W+5X=% zNA|s!PwD@UAO9D3o}~6IfLld+(EX`Cn70|F`v- zo8CJ9-U8q8>y*|lnx_1Dv#|&2_5w9%84&^+^~hlrdaJmqMQdqHZesuWCLN$#<7NcM zrSf=R_r%hD*c`7a=iUB4$NPV0z4*{K{Z~)*cKE+5^CEwLY1MpBW2cM2_?~Bx`Ck{R z@uYodJ&)RrsO$g7eeS-lo4xm*KGXcYp9|vspRN5HF7wgoxxFXn|EJx9@V626dOg43 z`JG40{hk+j`Pz=l*nb31og>HpPqX;mH~Q{0{3o-p^^!l!Y4Y{DJKxm3_&xTwn~}=w zKWC!wynprm4_ETNOV9fC{Qvd(H+s+Q{V(pekJo?4O^@y|v>)s7V|o7fwD>=R*m&;4KS{(p7J_mh6Kzb|36>3&DS!06v<|6k_(oqv$~vGTwC!u;+Q^YnZV*8P90 z^#1o7-N3fU@_JpDng5@Qb942*4KKOhf5*q+Yq^^*v-|%$@qUM;(qw-x<9zhm@lqAt&YPu(6j{dE#h)sAlEP)VQ$rK5Z#$J9LB2Uu538W($8Hc0;lA|0gZVs- zM+V#I$lAozYCmUt|69I|Ph_@s3IKs~=yST&|7=$*S0q;xwo*(GmvAI@P{IZ67U!=} z1QC9J5pK%lcgb}Jd@tzkx>x4XudnFO?RK8;;NkpR-@k?9@_)~;;&⪙_LE1tL=OKfA(@bU-9=E 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

FzQ68{7GFtAbj(;O%y!ApK-lKN! zoj_wD{tBP=ZTMb<9y9dMP7{=9Vuhxmm|u-V78}C5&0yC$oDs3432Sh5dnGmEcRy7X z<&R7Pt(gNGAVwZ%0@^to-8{^Ut^cSFqr9Vg&BD`N{0>=&b>9E;ELpSR@|dPK;3`y* zC;hDw>m$wqD}#Y9H@Fz?Kpdn7If6M%>G;<3g?#?(l5d84U=|*C9{bgKWg0NGBq7K= zhP?oR`%~5X`>+o58?e6tcfHJ!@*|D1!fH9OT*mBEatXe8%qTbE&~Od`C?1$gI4b1H2YK zyn)p?^B4g@SHRaoZRec$yk zh+oXijw=6Kh41rz|G*W-HVZ?k9Hvp%Fm{&`z(#kXjcF0K?(xSKm(#rT0r~Yt)4LsO zG8yjMJLSoZt;@;Z=#@6z^>?J| zdD8CNhFYyr36c51U7Nz*dmQQ;+;zgJ>pids=zNl>F;0uL1W?p%hX-&nidMrmCZ;O84#Ci1a1d!XLEnTeOrLd@{MiS zyi0SLIPrSbiLmR!gcsC6PT&v!qqTsIN0{rMxzNenx07b|21U~B!h-=@Bb(q~<-Ev- zb9c68PCWGm2PeoX_WOk(Df#XO?QTyia#WRzRL_3J_zLdVf4v2zvlFy)A32oGNN9tw z{{?cYt=7AZ63a?)Kg^W#*XCK_Vc>E^_2i^WNbqGBKP!&qHctKASD+bw(fU6E`)M9oeKi&2TauL> zuq8~lot}B0=Ma<@KK*&$g0QQF+hCTf?a#O=naawP_bnZ~C7+>!?nCGTyNe6}cJMl> zZ%7jz{Fb|0T=cKL?}KaR`aArl+QL)G5YzOx3cBr1wcPf_A<@p z_#Id`+_YuFy+%r0Cq=UB&$2Wi{X2ha+`KC{vb86z}i4nrg~D&Bd@JVZdE0YnJVfnx zJYg@oDjb%ERnISTp$G>*;3ha2{WotWqpU5T8cEMNYcVO5;W-S|F9B+_oC#PvJCwt~ zVy<nqndUSzLD=D~fh93H0nCnUI z1(R(fIiAXSb`m=P2*=zf3|Q` zYfUVqwZte9aynXo#q19W5jQ3;f52RWN6@`Hh~d^NiIVN*9N*xvcYnjae*d*z@H8eW zzXE1J(CWjpfjAl^y!80Te=8>mZ7VQz0s4E*W>@B3f8rl3ff!n?LiO%W#-i6~jSw^9 z37PAwOJ~r~YIgJ3MUm01tp=Z~$Y8!=!

l#AF2VfPhmQyM4xU3SrwZ(aPO_qr1lW9#U5JO+U%7S(>D@r!c(-rXz zKxa9d1F=S5*pe*%4B-$0pCyBJ&r@4C1rWbk`DF5)`?kNc73cat26-^*qxang1iYRf z?+jPjXr(-@=qjIufQJvyHq5(&rR_7~n#EO8kCp^72o)={cf(f33Vq5IOI#w(MMLvZ z@unML`m+y*ShvG|KvYhf2v!I#p3x9FO9p?o+3Ysg10{vM!nXx2=|MX;Y1&HKQOa6U z@nDaCw5H14QskPnpw3=($Ma9lf_An`H*GnP)XGcd9sDD#Em3NhQdD>~D1%5}KCe4B z+Iz!4q$X+E?IdBY=2M~zb<8~d5}-zpU1c{&hdN(t=DhnnSg02Xg}B`z;Ol;fM_2;u z38$hMC?FFF-R2_o>b3LE^8qWm;?{Rs0`9DjYJ%Eix|fzBa5TXx?}sgUs6TZ|UU;??6@{nLCu*I_0l< z2o?YR7&XZAcbOr6ZD9dHyIDyfPb()9@8BeG@xyo2}*niw{06{3i)+Z-3`Rd4u+b zOtcY)+i|m<@pLI^=WaL_I)b3XR^XnjaX^f4z^k>i%*uvH+h?*Ed6`Q}FqePB&Sxzt zv+~}R+NPcbsm!yI#R0%Di?)-DUVgvl3k8MDs}1#eitJI+YYY*YQM1#HVdvNY>;caM z!{hf_p0$MnyR_xcs55JR_%=N*F=XLtP_N7rS~6ZzNUyXl^7wiJ;}1;64Lly8(dR{c z6jbUl{If`Y@8CcewT7=l+Yxi80{4U~Iq1}taOO&iZl%-2OE%7fRFcSrDF5X2k{EK{4SLn z1BwhY&lo0;DLMIh_(Ec%J+iG+Yal)Leo$@Ro_$c9*$%gI+p&MSK|GAtUUuO=d5nX{ z3d(|=VYF>i6wh|iLd2n7RJiL&)R*I(ErnfbhYNoAlD~`|oFZlgJ;+kktp3-=dGmf< zJI*LE{!KH@qO=f&cv8Ozx%9_T=+n7WK;GS*FFS<&Hyp$R zV6@y0Tp5fZm-Wuz9uE!{vov(pfwUc;7UKbw6u?d3Z1#m&O{q`s=<&TD>y+a;>tKT; z`k>gn6@KqGK+ubi;UfHJt?${Fore7JqF{rA*=lC6nGCoKg6pp~@~+ww&2bNA!Lhqv zUR%rqP7d5ke3xe_VT-fTovq#Yrj zz-|oj2Wujq4q8MP{-Q-=+t5qkBTudu6|CfrD+A?mFTmCRpuJ87ZKQ4BW1}m78FSEs zpa0?oaBEe%OMHKX3arXt3dRlh%qiY_=-ey|8~25&{qar88T1Cq`%7d=(_LC}YHhB= zJOIPFZP6%w=g2Wvt~&pmzwQ=c+mzQUv-7S9<&K(My8ZvWs_~X@RG4A<92E=tLYyz{ z4f^KzCGYr$dou;T4rb&amMp$>5?A!)-mstxd;d)PYrYM&E~?eunu?qn{ozX8_yMs1 z?(mWZtlZ{7z!pHwRk#Zr4;(T(2o+heiX(FKKmEX*-rHLxp2<6SCC22d3)B~Q;ApUXI&|=5-Ac+>jc)`zs=q(3czynimw1U}5LMhE}<~3uFPH-pste z7OQD3+zvGLck-VAJ_VjcGI9;Ayuk+LM7O1RHoDTCt<=nSSyNk7G0Ag|uy-=a(WBC% zqM~QF2DcA7esJ+*4#*okqK>*W!%E);7zO&Q_=k~cmuGhP<6D<{WMd}uS@)gL+`=QCPaM7h2ambT{82Es6k|EPM(OuZ zA40x9>q_26wE;j)$AG_dRyg3A8oqNwW`l^M?$b6UEykEmG2oH3j0sElvCszJg zpy!{EESB>ta9yY#RId}B@MpFM8--JJl!%6{k8f7T^98U}YAR3U!S zZ^R8xI5vBrn%~xp9C}=ZpKx*K2vg9CvI8P=Jz004J(-kOX!5O{r-NNDi2)Y{EobfR zCNRklk_@g4>lXj3|2&mVP+UNIHgqb(n&UzmaiO{EBMGog{Elm%-9)2~avf zyaPDvs|=C@JB0|VNC-R$7RN8aq59$FXrXrhAb4f@{ZtPt4r1G! zhpiZFHb*92eXmRc&MF$H-IQ^EB~0$<2GrlCrgL zF{PHti2J`h!#okhIAfK%mPPKMCLVp6H4Z;N-t%;KS3k@7L(_)rCBZyUKJ(${63717 zOjFM*`5#Y@a!g0IhIAC|tkR<9lF!uP-A4{1DR( zrgwt@;N~k{5IX_hGPf2Kg2Mns_XH5Da`W%L*lLlv4h=nj_$oS^biy3ioF^C1NDQ%9 zpss^r{}I=9u@@tQWCZ43Lf79o`ZW-TZvPho{sZ-G$XnI_A{-ujVntfY z8E-ldfe=?6J-@;yqe1W)jC$7WH_sqzwzG{xKj?=O5~Y8;eGhhYGWYYqxvDzb^%~a` zJ8qD>{XVhOGr#ID#wRgv{njZubX#R+!fip*xlcq5zw2-7?PRWVAm!@Int~QNaX20{ z6~}?R;BRkIcnTjcqqE@2+i7yPp}c(Xf3ku=^<<N#yv?9+gRjVn#b~(U` z`uEVS-&O7ayeWq%lP+(?`miP8xn0i~xWAX`!559eUd*7=&}1uQswwSdGa!xInk0l| zdQzWsu5&eQDsyZO$5CgroyloMljmL)sw!%DL)TVSts3RAu88L@oo%CtG|SB?chq!O zneU(d7zQxChKwKTcG>)Ig22w&e|rA6xtV@BxfFZjz{2}@^PA?=a>BG5;pd>_;49!A z^TkX0XtWM+Iq(g<=r`d3y=yIs1QJXDfuZxx zbB7-c=REnxFcHp;AZlv0vVI9J1SlMu089`HqeKAO3aB#a1uFyqFk-V{DTit)Bjy>H z&{YDx3z>#Exc@&so(hZD0Ceu|`~Lrszd{EawZgUXFtttvXTEq8BHsHyrGEx+7`a8E*}@)sr?SnIF);-h&72k+qaT{Rs&R z*9{ayr2w-{4Imm}1D^a3%FlzYV1Pn)2Kc?!8M!1kRpa~#e%7Wfh#r(7P9XBARm(a1 zyN*-WsY7SF9|2z+0c>W>!tBkVhrVL&%%bg`dYi)(dr*K#9qh)_sR2Is)I6=(L>>9J zgZh$>(yIS_T(+SFbk#6~Qy(~8nUw=kVK@@lusbe5(9{>tygbT!d(9}ox&H(#H}E1N z;=a@}mDl&c_y*BxdOWifT}iD~h^B&YC27?Z>ENg5%_#<>4k-?xm*!Ye9-B^!zfze_ zlNB~y@UwP(QGD*qI&&@wgA*RF%_!Tm$Uy`$id;8LawS0x8)Bu~k~QB@@rQd;5>07E zj8=AQTR`u4+maO|h2a?kJ5dSc9XsEb)&wty;xDU;Up5n|IM{#ZzHO=Nhz1Gw8Ye$= zs3lQqXW;~mL8_ta>=Uvg*nE<3PCdn-zfeLIDSLdEva6@b>{F}gv;ffZn$7EZXnSyz zz0c-i_GYCY+E>1M&l-o3<&8Kif`=4p1f=U{FT}KGmU*?M zTowD+*VSEHj3neS0qXlgm!#Ew@c6I4AHkWMsUrG~!4EVuuJjXyEYVb=sz}5LepJK5 z#)>HPGtB1Qne+P4#v2|HT5i~&ZAyf+>Pj2PX%;$J)0!8lCTR>WH0$N}C{eTtGMSP} zYyDE_X*^wAg73;p3h39IZb0Q`XG*+=JyDCER5W_?i4ux?HMHEmQnqm0|7yYdMD^HHwkQ7NG$I z56?Jzsi23>HNiil634)dXL{n^YawVraVpI0@Y13+I}<;FHr>?hDixDd&xJs zNn*&XoX+ld$X@4^t-tWBQH6q{iNDV0-D~W#?2GA7WaORoe#{ad8DD0+%O~vjkC=Ns z%jqQ%x2ddoC>||iPlI6v4#!@&A}GUTl?+nPrgaT<)c{JhS#gT@LqPe~U(K={4UdRD zxhysLlR;!Vyn*Y{zKtpA>QK=j#AD_$HFOSo^;aTUT47(f86vfN9~>G??$gI495S$! zb!VXsf!5vAs&RzM9Apu#ZVV1?{Xx*@_}IkIdt~ZUv(1jbz502rsIS?y#1S$^L&Wb_ z`PLo0oyJ}R{U3nsUW8BXQ}ZN|d^k#tuxjk0(b*e4f>3vzM$GgVFyPfZs5rwE8AspRgY*X7~bT1uW@18lD_G59TlP&(oL}9uvii~HI=8{HawLD}j9E~z_|1Q0-nV{7U z+{?>7b@WW3RovjXsF^*=T9$9f=ms`H_y2)rUWQHoy1CD>;13?nzkYeFAk_aq&_o0j zAu=f_80o;CAV8@ie{0`Ruf5$29Rvx|(x9>lz zm=>9TgX;5hN)>*Zd8ymC|Enp-9-5Ldd6m>x?0Vc*aab6+mQ;16E8?!rsY8@WO7(dZ zC>c&RsHsMF^*k)c0kVXxE~Omx!2#1JR4lO8Z<&UE=&e$9wa%pE7o9Zfb9!X>p=Ra$v{eeoMjy`@}D9^tEMrwrvIb&(<#TlD86 zYe7v=kCdHVh1$T0%CfdCi9(fqsG&Z5zDD2VSckX3y_dIZxz(g*zz?D)L@5^`gD;SC`tYe<=g9$Z5)ESG26Fj(ep<&mB~8Y#Xsr;{ zK-?!)3FiS@VD<|X=L)zMbqln<(D3fR;)t&yGw z-v)v|2z=u16inqxWQ`%DbxYQ)xKij(MKGyCd61m^QJP_GF12w!!H8QRQ89gWpV~1N zr7Nc25;@45Bc=G273j}&hQHB`*mUeS=TR+{B8l!@Qbua>;MY25MTu+%!WG!<)O+g*znglpWEGYYLjz*6%zBVb(IKYwl|6CHQT9-EO94+HzlVw(>^4 zrIi!T#mL!s=?-HO^A8IuOtQfaW^oPiVDd_EIZ+9PcXTTWl=Xm2@!Dk$k;p}$m9UCd z_hPCri??2v=5QXNbn^67l$?Uj0g2Uj0J#BmjD2NAd`Qx#Ln*((=DG#VaCLc!y%x8s zm(g3jSk{4ii9w+!`;sHtMZlmeygg7|YV#@3`eGj_>06Y5U0W9oX=zjkw3?`86Xri# z;v|c4DngB#6d)pChv+i-CHZYZgmySX)vLxrjuWc30#6eFXn4q!k{52E1UE9^U32Tx z3fw)9*Yb*2KZJN;zj<44&KNCs`n-LC@={pFCJP1ac`g2(X(M%%0;1-Ji(N$QzR>UK zh5!DNHS&%ZE*`kTEPVxGKyU_)vBkRvSrG$186&dBVkC_OWtm7hqq>nQ4rPYRjfq?h^lGWdUx>H*2UY5xsSt%#Xt##Zq~pj z7U5M$z!F(&0t}F&CU`Zeh(R&xGf+Z3WZKyQbC8D1And9z&OA|H_2$W(z2T28nxQuM z|HL!5dn#DWmHgt??T^+ZQ)qC;$TAYz{-8UqTu0fzTjJ22kJlt?GXJTsy{n%*^&kRq z{`f{j%kfUam=C0^;abs_j40PUQ?L@J1{l_0uYWP{7|b_i?w0OOGu$Iv#u$Frm8;Qo zYCTKREdQj-QC)D_5(pU!&ng&{mM_FDsUWROVH37 zDQR5y_#oo&bC0s5A{3KE1IlvkaKc2E6|JlUjy{m`o#;DwsXbiPCWiHI}|U&&oR2zUsBnl@!9_qQ+=N` z#>C+Gt74ZQy9gF~zM$kNoQs_R8dbnof8qXEr?7H{j1xEn;?1y>?wwS#bd$kba9U+t z>QV;H%a2MU^@NgA|DvoUBW%}+PKD=L}SP# zzxZ#KW9@mdoWEpo8H0? zMJUlUoNKLq_vJK`cajo>kEIEQx9#%CRxbo;WCddMI+F@y zezejx3D5Z&<*^a|^2Yn460kqKfLn;}lf0%-;b;jkFYhje2pZ&O4-9`MhOh!6@r^+B z-kGoj4NSeE8tsgtNg%GJ>njCSFuR&FKa&X=a9Qx?-Eo=jjW(U28V!CHHbbY-A=5Re zTn)Ec>UnkV`xF9D)S=?8m-gk_f-Ei48Lsg9-&ng)j|VDpC&AN_`3O`V=WDGV zYLK2^F0_kryVmu>Ht$30gygD6Ay!|K=ilA8x3CpMOt^OsI4`u{;Oyw=P6}Tq6xQ<`yj)wOzGq`WMlWXmrmw!-vjwaZS zA};_xK)}CpjDr`4*C1-yeRoDD1MQC7yrHJS-0q|cVi^ABUG#bC&w}3>^yhqNcL1M; zl{g-FzvBbWV$J#vb1jNSAk`5r5-Oc$$O|i1QA6c&`gW?SS zCCW1<`Jsk!)4u@hG(^QB5%GDmhlS9ZGiFr#I518y83t$t8Qeo0VF}*Sj`>aTBe!KH zrNg_!GG}n2Fy-aR8&oq;6$Q{*QEdK>I z&$6y|8KP+U3QYYM^iSVvDNjVp(U5YH(zdTv+4KnpH)7@}?1jp=d|H^(+6sFaH>aFq zWxGBgvN%*QG+}cdn5fh99~5!XT0(aQ4$3P^o+=F|3h-lGfWK;e!}EqY_8BG(WgUKt zD*;9e|AlibBQl{un}%M5mXC&3_> z$#Rbe)=)NB*_1422wu;iq!8a!Bj@$%)keq<5!o`wMbLDaGnvK3s%XqsNAmPdPbNHj zHf#@<)BSIM$y%0GyoeP?pLxmr)Ebo!stt+M@*aMSlq+{i_ts9>-Kdoie~|FSvtd!R z&I4rPE}UONBQr&ppi(SDQZ#Fx5a+rJ(uz6zx8no}7j>T_n4V<7C-Gk)Lq!a-@Jx_N zBOanaGrfY3FF^64$MX46qG`2Fc>f}Uf|w>Du|og!9hgAy3AQQv7%LTBQ0hxuD9KG4 zeB)`0a2xX%oqBpJ%ce#Y^6#fYeG4vUm=CJ=k%jJ~4v`>7x6sYeuRD1TbwAblDB zz~sC2mHq^TN5D3R9kqs$GS$KQ>Ffmp1Sij0M4 z5$=Zf#^rNY2(h#9gCX=ePPK&OL!F${Ew+uQnK?Vg!+Ji$bE}`iJCkPAlK{oi(j5B} zDFms0M#THv!;^EV#k0U6NWARtN3aO_+A?k+bAk+IOk%dD*Ja}2YpK&``YQ;TP5Jhx zF2%;uC>Ye&%}jIxIfoEtWht5d5lX5`wbr)6x;K)w-VccYd*b};SkuK)#LZWRZ$ABo zX4Z;5*OK>CeQ}YYy%IZmja~33BsmkR0cnsf5-a_%NxVe*p_bs9ZGD2xNL3W`Ckj44 zGjomvF?qJmZI--vgcM3$`>GvEJ>A(z8-)oy;Hc4Bm`EWc1oJk54b>o(|3YCDe zbvi%#>zURH{$!db=b8N*(^AykrE#eJ?5eZ7?AAI|?ue0zzzW|lG(#S7EtQ=tifJ>r zXmWNt40@*-XS&D}+(zVOwG919%3;{+;JO^jrvJ4)rCH1?d*H54DGa&7PTYS5GuTLF{w%pN6bP{#Q9lp;kN4VCNpPwC8EgvIP*e-0G;oYpenT>yUvu{R@_^ z8S0jV0r6DRixA9@JBh6;Xz3)}WQ1Q=BoIA32SN`qg*BLy;rcpV2$IFk%w&V~$Z*P` zL-8%FVWBYNu$!M`<1&vdttL7c4w$^lyQ5%_)#X6of;=JztiNJCaHN*-k;ZkP4-Ee9 zG5LX>{3os%ts8CuDXDco$UL0&`Whrm5V0zFeH<$a_5-oyt{?Yv_S^$y?BOb<1SILFS&Th1|cgbOVon%&^QQV zT`MV4_ZtY&Op+RP;wvQji8#0NF`b52cweF7@PTXdxR2t28Hg=1TTD=s|IeLLLR+-@r7u z%0Zf2kQ!oORA7&3iCe>mtE3H99k32lro{-8L1IaQ9QQ~n@ddsOwbjP0g zfY~$_HPd=j06`u= zLbB-Sh6{d8P3p*j$KV zAwzN_Xrz*kHpalBRvEC`)r70syA$O~QQH{BVFjd>Gx@B<%Q$AgIB$jWbr+0pFXQ;1 z;TwClns}JIi`3 zd%-QoAz-EL(fo?{FLw{wTASa<{n;6P<38}q?HI>Z@Pwhz5xb#Xi8L_^8CWry0QIt= zmb9RjgZY>*GxMSmTO+)tn~3v#dJ<%)>Vg}&PDEr2$+AYJ9NH5I0Wr?5m;EyLL1Wn= z8r+OR+?^&n6dC_~+dnH{$HvFbrT(jrwN{>=<5GMN`g0eI$6+LA3s2!9pYsZe|5&u> z`8}LYl-|cDr?dL;)XMMlVugiI{P^E7nsd*rpZdGQZm`chMl(I7*Fn>ai1dk`3W<*sG>sSh*<5|=it5|pMWf8beZf9csi$x9K|8^DUwWA^`{ zVQeO?e@5CpbQM6hUQ_*&V^$t@2>$7i;7y2L;Ie&z#1MI2CoP}&w73*70YesJ4TBfK`BYc^`+jcaa^c`^X8<{CTe zUuV>i5lBWOSQQw!+B&iHYn@a1n0DBeCRpw{_m=w#3|>Cr819TX&yjt6`q|w%K6tel zf0hz#<|c^=?-*7cvO0mI$htUdp6P01-64A;L3xs+(|*qlrcBs--Jzz-rG-;ZRN5{iL(fMRXwMsOG=q3S9WTXDUHIn3gVz0% zvUo_T0La2s^CMB2hB@;ySm#0FoR2`@&`Ja$#`z99Jae9Y`ws;KiQn`6xxgJmXTbZKWeV>D9@^uf3#3~bFMtnKas$LDd< zY9C%~mzXiK`R7V%d6$9n%yya!I#3U$2T%=1_oVusg|8F`w!QA|A!uB`v05zmX2kxH}-Wr?i_)a+UHX6fUSe| z+eVe8X_EGGc0Zrdt>5gl*EM%OYUhC)Y)=#ut;m&m*Ktq3!R9_Y*G3 z7~>yQ&L*H#35ai^$E1_3b@ld#QqUjmRv8EOV4MT`x$pe&h!0Z>13`V6Z4Z2xeE3Y6 zHr4&^e-I@0`H2;i!+Pq49il@2j$!cjNr%PPGzDsueoTtB8b3#)D^A>ESeMQ!sxvGy zMRovM3W&+=>pol8zbGu`fMD0WkC0k?S`cJz=9EGPST6kUCQaXQ($J!EGp2Xh-|NuB z?h}}{#`yV$k0jiY?i-M3zBljYCop*?*#FN{&4$MK=FJ(CZ#o8Z+L!4K?Pcpv-kK;P z^luGrl7f`@+x-}(*xs)s-h^u>f1xq_#<@1;`m-k8yyun`_Pz{(F2UTA7`cY_?#_oY z#>&{7r#;z?UeVPUFWP_1ejkcA)O(J7<-6AAfjp8e!f;ZQC^Kx2bOc$k*d^~joQ<`8rhWfQ-2kN%SlSOMJCCb=ndlbCP_8CJe1Am0O0P6lVzK!m2cKLx?mN~HQzT#C%TH0 z+2@$?7RDK?RUFf_=VZ-1iZ_KeVR&aK`(IiHjh*S*BgUl}G`dYBjEhhZ=ewV#2FrNB z*O7g=tum9u#`b2SZG-`)QQKh4%P55#Agreva~2s|`UDXFaK#_QB1m6=iK7Q9005+k zts@{>nK&>)@~zu&^@&E$NUlIYfrCilxeD~Or_;lDohXm+6%17OJfp228w92HfoM!x zsE?=94|^Y4?$mOg_04YMMN;N0S}X9iiI78h8T$Ko7!{H398D~JkddE5kP~RAj&NR* zF*yr!_!<|d*D4kdB|hc-iE5uK$Jj0ezO7>AVzS=cqt(y94`^2*cpM^g*n1YX?lKOl zhQg_!|FtXLbwvN|U_Q`oTa1gYq2@e852Whwt`?}3ts(K=|A{t(E+o^q(J@US+nrhC ze$lUk2-wiH^L>4;K*8p1ti)Ngqwn@9 zMTKChnAv?02GI&-H1qEkp{!m~w)><6>&bNC z5$NpDR@Q09QZNDB{}z}afrYHC0ImmdW$IY@+5R4ed+1ReL3KpkzF$e{J7}uB93dtN|sP(4*6TFZy;_ z3q~2*4LgoaY4@-6w5c)64f|B@Ku09*pgKM2QS_*e`UW}lQNlOX0|D7Hf7MTKtYg5+ z^l*_)w`F@<77f|i;5T0aZ%!g-H!U39GZ^nzL$VUsmPN2UK^IB%m52RGcX_iDiWK}J zb4|f;w_i<>PT}$|bqnJYXA~6oody0nGWCmr7^p>Nl$boq{u)~J*0FWrt6mGt6Aq_P zx&-aClhf+9^8@%-$`RQAhqaPaTmap}bGZuKcLli~31cKpP1pD2P2rC>6tTV;lOhMC8QfoNq^`LHr%c3Nu z)Sm0L8j0HLRpMWg9nguFxq*$%2AF@;5RAKAcP(WDZ@Hc;NnJQ$K}4jY!F{jQwUA4V zeKW*$SAREF&A(4|DW(%O)enQVni3kkE2;bP6?HW;y=x-Zb3vyul%`NvpkcR5r6`1k z3G<7&-!0aXZwL?GqL9FFr{tU&&Dyei^N}EJe%fe9&mLR8LUat(WZhKJ#%M2*Z;-Ak zVO`52tp16v4jXS$%NdqZ_N*SXAseK&6{E_NMo&D5_ccAn=@=-quIXg zUr(^dTpr(JH4*Ib=_#GR%HT5QvFP{st}^yp8$zb0zRc5|HY*K&7y6r)!)|OG_xI$Z zSyOhGQgf4U()Y!bo{fO|8M9vm(4GMQA3WF*VAcUd8lfFIh=k_JZoq2+`O7G7fy@&) z5j}OS&n6qd%R7j&OIf3E;yJ%~ezO_+86IV6CXNk~yk9r!907_&E@Z_DF7Zw8PZG^v z^tr-M4$5lJ=QZE1F`>}R+@#L(ZUzp)tKKIB}H{wTC3Ey;o z>e|I5mG{EMTHNj9peZHWwA9YMfwDz))jF+QeYg1&oDcI@!Oaaz3}K(ahrG;%iZ zi9fQEnjc-Hn|`Lg+HFo6o5lSql^TRJt)jLzVW0ZJWmYeclIPZxcuk$2c7)n)-C5Xh ze7}IgBdE;o;ZAe9`%wb zq_O?5bFK8x%s>{*=szTM1lt8o6#I2%gVdo~g`mJRL;A>UkC0*xU(cL5rPX5VO2nP4VTQ5@VJiZ?ItG|@sf@9PW(wx8 z+}r7csnmMoH12-*VEW;hAhi$QMFP}U$@t9RzrQiJF+M2N)FbwLpc55JY7HT_PIc2D zu;s2Yj$iCo2TmCzn=7?_qwGr~EPs%*c-WNC7z}J=&=2I}n2IEu4ZRo!7)YLJ6 zayo;AZf>OWL?Z*0SL5g(MG_Ze9kP* zA%D1y(vR2wBW72qo04xJM~}Jdj_e$BuWYF@MTLp|`x6b0zfA!RVv*MQ38n}fo}6gI z14Azy)&Fx(WN1Qz%Xdk$EiH7D9$CoOf(O?i5wV@}QL(93cohBTA$j?VLjRKuN?WC6 zs7gOayaCN{gcdw$dOWW#bijQ|YUZ488sPM1%)@GE*_?w&ArymL@1Bn@Q_fp8J@4aY zYx(t&rY}U&sj0emH73JDHfms+A*X_!VZlGJeR->zalD7;!p}rFwT&96WChjzp6J4% zOcqnyYcy`c#`EK0R!gZe(_I;ltey34M$>SxO_7b|+w5cAV+8SL0A^@|K9I?Rdhekq zTPPMVae3$TGxbAYCDFHq<6Z0D!~D-covTr#WUT4#`@}=QahrGCEz>u0mzw6fy_mf1z#bA+wg&uW@{W)IGtf%lZ|wAInR@C7&Fk|e1(`HK49n?LDN|Zh!I_gYS($?g3%7n4K3rtD)&upeh$m=9 zN#hVcuKH#1Mz!9rxVlzX!Ejtv?nFTZvR2L4pveodVscj(x&e<-aH$`75HJx^N<^_9 z=U|>9{r9m{u^q~Xk1X|QHl_q=3fq}Ac!7%`s%=|vw_(0E0gPvLxqIw0R=tnriilu} zTqTP9B$nmG9-wJuSA{iKc;CGb4oIaM_=YFwD8H*r35f{ff+S>SOIECb3bLG&60Ac? zBYP>?%Srw$6yl(=meQ|y_rjWl(V^b*l@D$v3=(H}-ED&E(k|jonn4UP5g)kjq*E@T zMk>A`4^-cEHHt&ilC{73MnzzXa^<}I6x7j>)(tsOom|&OxyCpoV_4!!X4-I;=5#zm zvSRLW*A5)d1m{;5*@_tZz=7s<(f%D|3)XX#sKtF8xuR@z(7=ZX;t_`h#Y9EGX>%RE z9J zhXIqn3&9y&`@<-e7gBM?0arIG_J6EAxEC#g48 zJv9ce!7hj+d~g%7(Cex@x}FJ_o9-iv_6&rX#CBz&k(ql>b?C! zeHUWCXWGW!YOp^MvUcgbnr4{0)3ZnQ396bp$sAL4QkF=yht{rm%;RHoZpk0Qeb-c7 zJwJ4Y!%$jJvTK4VADE8TzIM9L2)EVAKn6!*I0zfSZk9Xz0yVRtKu6K~<-j;?4zh#< zuXXo}a}{Ez2U?#6l2&loi2d* zbCg^o(>y^LKpM~DMdoJi9DgZ)c;}LEK21V()lMKFt+4Z|1lQw>0LCF_zjs6hMfi#( z?`UKi;e=3wo7!G6NV(&DDF?d9cdQB2PypU1pPG>4>%$QtfU2B0$heg`s|Z(7O5F%9vW?Rbw z=)k3alboB(wY1`UuOser(*vv=Kp#1=!g}AP04xb4Z;)#UE%B3Zcyq7AojW^~g2IZ| zhar=(!bb6%BWw~JoP}%OAvd@m6wa^TG2SH}@VG=#8b{>s%L8|WcpE>WTgQDJgu;x; z*JdjXIxghN3xbr7NQLeMzL%PEwZ$=AjGL}IVc~P!0PPFo;y&`wV5!R`f)NAbF|+!q z@1eU;F)T_AssBnv2D}R$nm>4&B~GJpBWmVe;<|8XM4>s(5XyE)MBtiSc|j(bS0|D9 zrn?y)m71Cp^wA4dRaiZ#EsH<{;t+W@d8voz^NI@fClKU<9RisXLz>LVzm}atM=@w{ z?knKU_ru9JQrEVpqYUW@(12ILUm=%hudo$5V-JV8#G_foqVEZ=D)6T07r5$c`<~S_ zW;=snxHKtMP5?A4l<3v}gag2N)hcv9l450V>&Qk6)4o5f@x=hjkV9BZ3wj~qf!@rn zZT?^aN1!y456VqcMgzT>hMdrHSc;F|7dAEhN7OPiO^(tST;|9T=h%hq4GD^J ztzA;QTSfJ>VBv}LSvYua0WdedIQ}RayMtEuTp{`CV8;oYHebzklc6$Yh7F61#U zc(z)+nUi*b?;4w_ss8m7z*dCtC&|IkF#e4v%$yd-j(!Klzy-LILhTLv#i7)^QpM)B zMCNA{c@8<}*hLfn1XWyvtZTm9qJ>xzkGC>Ek{gq#P;+9z_@`drbT#Hrwo~k_7i3;# z;{C}Od=d(wA8sQtRbh?%1RyP{{!WIL;k{0}Zy0corg|0K$ zkUaSP6akBuyu8DTO|)Ka5`{LhT%cD)iI*u4}WNe4v>pk!dk z%FTL_JJD~LIq;HxUK!Q$PJ->+dz|Ga_S$?Lx(Gx7~700Y=1^DUdULY$_i zaXcnvjdJEbv=!%M0~T7>H|$2#0wnWwlZ-S6_}@?4W(V;J%3PMSV&mj7PVih6Paq{oxyZDXi`oRl^$?KZNeE4N;L%(OEnVC zQB>a@MBRlKKkl=WsWct{MtH9jLH(he7UUC3rWtg1VQL?VORoV6~ZI)SX+pV-;IET0G56@5LH_(Q; zzggq*hk2mG+V7k${FARUt4D1{Bh*jFzTWjUm`!K6k!Cf)rVv5+!D%Y%taY$Tn z3_SNfE@WiyjOrd9Hcw$E0?R7aW01pI;OiGl;Fm4kJkPBS$u4kb57hU&VA)vTL>T0! z_H`*mDt<8`v+>|;MSi<;x@iihzK~?j89KWSXBNX$HhbYNdz^V%rUaf4O(GmL+U(Pr z|0cl5r>O~uy`?Kshe}z8&oez1XD&wLX8uJ@JWOf3h6R$ajOv}4%_U$HN8G5c({ z4b)P>KQb*jPv@ZH$*F}wP>N0!u>WMTMSo^xQ)*g@VN)X1AYN2uC8}~K#pe~14r_t%oOKL(|kV!oZ-&Epy!Fr4yZk#Xb>hOlC`EY<8A8|A&yM%nOT|D*Fp2Q;b4wll( zi>(F)!nW(n+N=aEg3U@YeHMqnL*Y(|o}17(`SG@rE7Gf+EsdlSvpfnErwm+o|JG2g z4emhPYF(b3$GEW48?RjWuCN+IJesNme}1`N{VTivrwH?A+PKvCjbqS)jOQNcQ1uVx z{u$1VW#@#Pkjw#LEPSF-EZ2swrBg+to-pO#%)M*jFx7<_p+c_IJC1DaoOJV3tlQ*~ z_NtP3uY(5yOsqqm9$I zyQ=|LW*^y+vn-c9$v-&*LCbHsR;!`u+moL9!$d!2)z~zu^SL~&xP5gYzu7I6630{ggs^o_g6~6-m*lPElivlg_&LgS zx!pdozjne+)gBXHcU#+pu!wF$@OobW8=SWMifV=kk<0E|R6T=~v7Yw{2kcLVMb1D) z1bsdpxW1@77#54lL_RT1p>pSogxWNn3KhasQNc*WS!zxb;9N`%sf2c*82`xVlmSTg z3yE$*L?)ZHU26AG9A1X8Ucsz>6Xgm#K^KBNLI2oWMi;l8KBbRIH#mSK+1`Ec-J1 zHv2UCVxVRJI)oE-F@{VTFnucfHepzwPX;G(FlLsT6Xu4`h<-Xv&lXQZCf~-X9YL&c z&@{xfF9xKa(azcBj2YlUV&`(btE$PT0QbfSdwdR4si*=}zll7&dzLuR59>fn59$ZM z%loT+?gz+T*l0AvAAo#xtCX~Hk`mL(T+0q!!+`b#b4j6BTOX^r=s~K1V*_M3aha81 zmg%$e_fE|^c4_91lmcrG`qf{vB6ey%C*T*^cywGPC7F6c0}HoT^X5;Pgn|w6fWVRY zGzXGsPeEcQ`^!!^Qcyq*@+?bYK*;F0#1(rn9a0eZa{bDi7H1P)Lb~cDJ)Ukc(Mv%~ z;_fGx7tTHB?gvfXXECFv1XR?fbj38!5QIrhOzN^@pD%pKAh=dKzpVp7_&*pSE6;-} zBk=tbOHG30$8&-fjS5Zm^M?sa+Q}E% zEV;%L8>!soi|+pgw>X}sabUjJGb4Z3$}e(-h6Hbacl|L zl(%k2f5;ZsK$`k65lNQKkWs47OAL)RaxTV&1vanN?j@9)iK$* zDQqZ^-#-EM&6F*PgcH)KS==@jKfeSZ=x7 zXsoYVYg*rCE0HTQTr9F?eC-`k?QHNd277TQjChGA&#fV2cEl@}9ZR|8jc!QJzNz035@az+tw9BR2$NyCl7}dDulU9_C))(Q7Zq6>`B{ zL;lMhs6LE7uC^JKT-UIDt(I$kV}APq3KMJXssU_p;M*o$xzx5tF&hB)1pfs(E?fAk zKfXL67>BltGbUm!LAq_8nUqE;i1-gP9R$#G5jM~6a}lqNTfNX5O`bN`iZ0`+=pAE5VGvPKz_T`qCMePPUprAB7=_JF^Ny5i^2myr^}<8@AUwfqoyPE;yXaGS$7`9Z6TMn0%SCKA4T!y&WO zjxYPMy1u$}#1WY5PPm9;6-V1OYS)&rLGH48wS!evQukQ64!XoNWN9diat|*ie!bA= zL>i0Rvpht5yZ@;fqz~#`G;=Q8-Kg4US?k)g}KWe5K{MTciOI@ZP6+>@|+)y()fT;pI=EA z!h&4*Y#q+&CgmJ-$WqND=Y^ql)62gAjAllP+lcWdhRcD>j}(d&`O#J#EFaEp#wZxJ zUSCD;7DDLQ^C%T4a0aIyB3A0Oh)OlNZj-&dG4yj#pPNBa)o==2Xb|?`Sy_GSn|b=z zQv=ah>3zm3OOsMWyhdSN+UhJ!qJx3Tk1FVT*Xtu=6*ww*am`9>7Z+#~>E@#ZK``p! zJQC3MVNMR@Z|4`0HS5gDNeKQ+8B7>CuF&%xQcWh*EXvN?UyV_qdFD66CW5Uzi%SvX zA*D>Au=YllW@4~bNC@Y-l`{Xc$H~jMR%%MK35iiQ;*f~JVVVAr7GsC7A^+>E`~f*vvkKJHu33<+9uIi4Yf zid)g)I+G}x$-NUFHsR%L2P-zQzkU$c7T(_KUQZ9tz0RF&5g1I(&nuYUNrpXd+KI3S z14IF|mD6nphC$s_R}CMzI*?0AbB1E=UO~#j;OKCWyh>Le=<-k|4R{~lR|+7`JzP$b zWTn_zRGo6^3PLxnf<5qsuCs|)LL{qF958Wv4}`fKl+CT!zpJp`T+5(chJFClVZ;r9 zLRyK?UsK4NaL-v%*OuOxs3Kh~5>ed`3>uznMz(p=F34L9q)Q;^wY%vD6pQ*TTye8 zhf7LO;~fr;I_7d9csvAR1j45*_ml5tFkAJa(2=Q(eQ7v z`&*|RQ|U&XOg+)cn<&6JEL{ghf?z)=FOF;_SwsOT+@&B2B^cQc-6NqX2{-7r>PB+t zP+!^Z z_1p1A%gQ9Ljn`6_x$c2WqrWk8Cb3+k&k*%}jh}uv1F~m?qvHa5t_A_(a0XR7X{N+? zLvcEvIwW#8C=;_@*ez5GMwn|=nF^`4u$+ds_vGS6USJ~{R3;Ua(24N)rF|Gc<^-?A zH~2L9of+Jl`aFB#!h_<&)tyC4qU!M|c&TNpXrE7vtHHB-uxaBiB>~)-=4V}rC1EF7 zGWHAj*vkyfR>DoMA6f`P_$T33-_Do63ny~lBcA_b%^m%cuC$j%7y7AV8!`R`yYNX) z1lKp4zk>Jmad0TbrB#?e^UJ&qW3<3x(qpw^#n@E6x^1 zIDMA|x`M&kjTHtQ zZ|yYc5V^t?3O9|y)Qr*#ruC;p}oX-sF$8Y60Pold8!KCc9H>spmLe4lac zKuklwy<|FE1pe_2^om`xrF(Zr1#ixk&@|epmty9A@F#GU5-qG$=o{9}l&SD7MmWw<;MI)|tCj7>p{v&jY zU3>b2a+HDpo=;M5z@%^Y0`-}jz;@_(#N4wrY1frQK88~-M@foWfL>jGRkQT7vNdi;WjHPImMI=tbZD~f7(A^}bK$SWyIsz=C}PVLl&$87FBk1( zQMgO|fhdU}5w~xU3q`VRsgz>gQ5)ZP(UJe+Dh(_+9-YsE_fXPATY=I>Pd(jckqQz^ zbQXkmsrBB@oX6fTG``Wr=8f~zPda4CfnHq{l>CLZM6|>B^pHWAt{KxHlI~yD5C7g`DC+4c*iej|(j3TsuueH(aB$Y?}%I_WRI<%aBh*epkMy*)7P(h6-_FzmUTfiPeKDObF8|Kj5@wv{4*~YmWA&nlgk>`U+~G-31_eQOLFoGw1np)7zT(!1zqSxAsy=1IorT7hI!>D^waN(}Jz%VW zd^|1G;lU#r--rd0T}}2+n4%*^M?mf-h8rS=&O6La4xdU(Z$Hi#G#X`gm6Qig&gvRa zK%O72s3?Ur+0|s>>9X2!Vglox+c9hA#uqs3?XGvPTKq00AqMuibZt5rWCK7h8&fcX z#kSyknMb(T5(mz^q*m)2X_rFc_qGv&P*}#ux{#*$ofOFdH$yn%CKMV|Bk)h3@C2?n zD10vhumRW~Eh@r~6lk_$!N=G<770H9)~G4EbIN3!bOqUYNty1D)6PE|@L>-bY!^c! z1&g`|F$1>0dHVl#2-$r~ix4`|kpB^jbAqp7t`mv}mkFm;CCx7qI-T`8K-2H#@X_Gk zuZu^D<)|2*TQE30Niv%6+)_rW&f)MBo-3QH-U<=Mcy+5yL38?iX>DF>PmRQGrOD9&N$0Ie6vg-c4jPnZ;tn_A0aL^!>T?tq&7udh*PQZ!aMJ{VgGvv ze}S~^4Gess)3yJ52xiTd0j-xZq&2!@Ve^bdy64yiFFJz4&YaWBHI}Ckk;4k;_+kdK zqnm6E*qQf(QxaHQ3(cmk6!>r?mLC2^XZ0_s7jYVCK1W0iNOdNHBaHVMe%RY{0ZxVmNQ#zi#E4GI>$mzrD3A~dWe zxCqrXx7A69^<#XPtS@#1!IHaydgG2H_|w-*+=!WZ#QF>1lUmvrkv~F_fHc032npjQ zQ%g*rPkX{Kf-XBz(w=DWP_e>WyLDMK8qbomlyFNpxW2NkD$C$ux3o0hkm{?B;q`v{q5LQmT7|)aw)ffjgmC5**IIQ>KVFj~++@I)bnr%fXWei))nFttRZ| z06K*N{VLi<6j_U~|8rqzcO*;~aJkKM1xh_V2KCZz5_O}ffO{?sU^*_YfFKXovRkiV zn86aaIvZG=WMlKf$vC;v?YZY$TGcog(Ebj3k%~MtKTLgS#CVV`^0j|HZ$+(ZFQOS} zY3Fx*o>~|!X&1Q07VdBChMD+B`jr8PWMrFN5!dx^ilFZ6W6_1b|&$Hg;m|##FUgzpj@28 z8L6nQ%g)ff(;w4pG0s~4zf8s@kdl-Z82(^bWnik9jBVd0>_+06BD_=MFii|mnc&T` z9V0t7gDXA`za~5eS+ugImOiq}f-@3Vnk~8)UD5aH2vo|uq0&vPag}po&0B_N3p{`^ zj3WbcaP`jp>S=5sfd;@vaNoTq5I`6(yGMS7#yZ`^nM#|5tL*7%fOey-Vzo7y?lZ?m zS|Go6J!x;*oOOy3fR^-7y~uOd7STP>L3>AohOl)|$>v+`X0D-z>QC-w$HX08Kjsga z0$|s4MaL}Fe^+L?hS!q%rus7R&Hcn#&OGvA^P4iFT{FAG7rzN7M9E00(aOWuxRyXT z*VoO@O=`izlUNh&6|u7Si$OW*QcnqlHLkL{FTDFP(Angmywl8hAeqFdjf<*7a*&J* zvaK?gSHQvZmfz(5M~wvMkVCX8iid1f3|+(@5nDH`e38=7_6zLr82xN$@ksbu2)2fh z0$A7NW95G#MtIBG-?8!@4;gW3XR~|`Qr+vSHhqL7cM#Q|X13W{vZrCQ!aZp|vx-(? zuGnDL1hv0|FWEpkUwS(3QgUlEER085K5yel*_lHwoBpkn@wA%&u@6gPtC_YO_i=43 z`XF0Ne^q3Z%gg`h>3NEO`2R~WGRAbVSkxRaS{5GU>e>~viEf@QXDCdt#-{=RoLi|W zv5lAiP8s=;n-8q1@FDD6*EB+ovd@Ue$=j-nmT$&?YxP2D|AszS*){yLO$+QJ9XsqJ zMrC7r7^ZW#DiS61DrI_v)}b+ZQh40@3e%{X6Av0_`4`UOsm+I0{pF8JKbP(Ke%?jM zUs7nnncbfu8kNuTmQf99$yJ3!>WLmgtNcD%|fz{0G8zX6wiU6#v6^I28 z5T<+tReH&@v^VZbZ3%WpXZI>i^+r3lYqCv_re|9tICap(*0v^hHFlILAPRyXaw|J^ z4H6esg+o@pLftwns3z?JGKoOGGD1?W2SlJqM+lfkMa5fSbIO3ixcy3@2Wf>S&Y z&ovF8Rd6U?NEPUS?5H~MT#0ME{13Id$4mL681pPGpy8cV;ip^UL;?1p_jS4P>$8JNZG7P#A=iV=mFlXb90&x~dHhH9A3qpy zkcTUe1KR554=H69L76_(PVL4*26=*YGpGHSQZ!M!%Le zo21Z+>+_=jQmfT3t&bUIs)rGPD-3Uk_4^f8_+Tr|5Q8i4q&KW_W!7|W!_(Wrot|*N z=%_hvK2rm_gK3g8DxUN49TnTp{vEW@vqw9(t!>-nlMxjpe2e2qK#^jex?&~Y;$r78 zrzH&i%5jAcfCmN*miZ)-l1OE6Y$*iZ)Q;4Pg8U_33w&yj1pe5IDLRalDj$rKwr!g3 zVQ2tL^iqVR!B2BRbl)6@Oj6B5D&xyU<8Xgkdoxss&_ub!q2Qi(6v%f;A&z#!k*^%e zP2|=Fk3zY}WQLAd^oC`v&bCT#RW+>3P3X&2k+W!;mz3aOx>{Q{!BE~w9&7H!77l6B z+ZszW{SM?^3;L&YXJbDq&P+iv(T#xld3^?%^u%}gf%r42o(ODc1Rz!N3$+X2k!hQf zcY(NIeR^!YH46bENQJ1BLU~OMyyPzs+`&PmUyY|4$?+TMTHx$4!&q;RS0snR=_P~~ zN}1{TP@-UQIwfUwYr-B>smar_m-xjZ6%6HpUV1#=V9;GkyfgkDW{`$*5Qem2fO#Cs!U@`vZU{9>(^Xiv9?ep49MW zc#x?Qx_8xP?wvJfO`?F#aM{JQ=j*1dov_O*qh5PjDrX}jKZ6pywhU`Xz2%hW|}I5Rujc7d_hCO|AJ%TevnmV>x41VBKiU z=uOxVq2Iss%o$57Xfb9Ws8yd{1*S!d*|9607_AO<@$qE?*Fv@(;jgIqY+PZAwZj*v z%>AQdwT^DjN40cDdNXE4rM9K$xV0A*!HJWFXuw+}@WtHfVSq71CL2vfsEkPGVCD*+ z7lUu_0sEseD^=c_^$KF$8}+$Efc}T;<@sP#l1%U5)xYd6LyH}`;9mTH?UUWtVU@hl zy*|Ejz~gK|U3A+g8H5=*wp=z2$=lU#pml4Ln^ro=g0_pYPJjhk61JD<5P3Uu3aY5Q zp5==Nx(B&M#rQQf?(@g)>Rd+bV5~c4OS&Kx%1o=!A7{3j9@fU7pHxCBks-*BwSs$O zkKgKyZvsS~-45F|;J|eh&wb$IskLnYWiuiGozdCtOKSZ~Qt!{Xu?8=~A(>b!Rp)Yf zQ3Be+nOS|eI9lQGy7MOpp7@dZElMwElid$S9nxjDRb%nMOk=kLoQXA@3LfS z6R-4~E&%z%Gw|-UA?QuPlPzr5gG?^Rjh_$@zP1~?8{cTZI!FiSf{+?x5bQOxF8pC< z-x#|;^|Q0VHmFCl^~r*orW;d2%AdZkj@Bt_kX0y=nxh(q&}^<*FT9kOoP-&p&3Z!+ zfqXdgXV4pO)ADX2jU6DO$?TB)3aX>LXGEk>PNqrW_$86! zCVsQz{DTUyuqS|HvWIJ`J0evj_Q~)3e2UIj4Tdk1V6w4o$gm(_1M3dbqz?dpxdqtr zWHttnCEVgk1gMZYv&M>{ClFFuN3q0BUJ0!h0lB((2CBCnNUZM`xw^`+^*}`VJfDWa zR$BuwJgl2kI`s!zt4IBYM%LiO1+n22`zPjEHgmd`=8Ox8#{F_nSrGI6g1bS47ER>O zT5O6oCCX)z!@7Iw7Ct@7Ocpj>+U&+55N--n%WYu`hX<%TEMu{;K~y+B7CyCJ&d|R~ zg#vx}17Kp_fsf;H<=8W-hlo%Ve2t4BS4XmUuQOQrq3=Mv?H8ZeQpv;po|qN61}XYR z8yq)c+3I${t2hLxij_SN2KeVUFpu$JI)YCkBXt3O;3~+J+pWE(TMv_o-EQVBwKx%n z1F3!mNxx_SO@bK|Dwn?+6u^ri0JbzTObTC|l3;-f?9y4I#-|4x1)b0bMZVlwLHwH< zo&)CQw9f@FlPk-gDC$+4E@ND4Cp z(_)wbDsa0i_$X%Pzc>^eV36FV8)GxqFT;c1vqbp7q5;RUAkZYK*hBsWtD%SvT;TGw z?Z6Tyhz(D*wcP=lS0RwDY8H~$0rh1dN7 zA4|jf%8uo9?cD$MC;4(s^EhOieyQ@t`B%$gYWyy4$@Ve6IQkt0&zy&yS{+T`nk+Mq zebK8tE^Fk^<#r+~ZQgtX;%*t1EfcIT>5F1xV&z?y%AE#2wmHqh!HZU05M!cX7+9jQ z^qF~GEGzfxp(5NwvdxpQWzmo&X9; z)}%-J4M-gJ)I+?fxX@Rk)lT%)Ub{m9HuMY7e(`}`%s@Tu4809BXkS6F@-0|Vz_(Vb z?ibXEV5@t@jMx&Nt4wWG2$ zYY3Zd$yVUbUlwniHIokL_|BYhk@>^$!ZZA2DB!IVEm}&^0}-!me(>jH*a%sXcQZ~pr@Yj_%@1t%#Uakh&loUH=YnEEP^cLQ z`&GKRQO?F+Lc=GUu>p#+>9$C(s!yGsi)0sC|NU)>=#p38oY3xqS+#$I+aL1eilGy) zKWUeb(KIJ5ckz+92QVwWcu>)GLd`zO*{5V(sv1xZXnsaa{VrknzW@G2mEs@*Vja1Y*|Tl7wb=M~uit+^@0>93&k|7H|31Hmzu^ol@H`y7T#vKt zM^6pmoN#6&!O78)S^p!vLeIz{5yzE#!kLV8!I)vyD5g000R5^q+M<-QmS$hsAQHv8nW6jjxdY+G!;J>7XJ&)EZh0RdK<`$rR)v>_Q@quxCwG}P@Bh$m(E+efwe6&=znP7(sHa02T3(ouDZH3@M zm(HMB4hD{}iKZ4?qNUS}ufseI$OG^FCyLM~R<5l~L(|s}65tpDS7C2Henax1#r4=57myHgGkg z*MSs6m{bxj45Qa4aG7h*sxpnnPhLKTE)2Bb-92Pa0K9XWiX%%5JrFE;lN z4^O#e!XFA&19z{91=R=>shFT6PF2Jgn6Msxa}+5PbzV`C-vyPr`75d3;~{4|wh^~J z_4V9oWH*`YNA#7_JJZaRJ_udrn-SBxQ(!9m5AX~GvqB4|5V52Z6^pW!2h@k!uEOz4 zGwUlk?(0n-gpA#6^nNlkHgYu?`W-tYe3WUs#}US*cPx?(Tb9V<-eZ?)JgW+-1oJ+C z^>}p==jdvB(_3U^p0#~`Ca^FIEvz_K*6_HmdAXW2#A!QZ96`cncetoI%1H$k(aA^0 zoW2a%{`WO?Gam_+z2ibv4|R2$^XC>h%f<7Q5)}-5?0ocfBVn2lM1AmlAo-+s+zm+UT<=AK;we;EX4gM_= zB-xfE5B*N438TP%LcwIYr+lvf%(x2M5si)peuO1>F0=dGo&}>`fHzw5jO@56ytV~) z!K3b;7kQNl3`Ve8ht;lajYYz+_zyY0BU`&j=Dcs%mf3KQd-GKbH;W>svQP%Fk)tIR zLwh}$BPu0yS*dhco$HL?m6^(a5FX$iPFpNoF=1|}NbJ$72$QWnapeQqA#ARZpaw&l z)vG=kh@jI=p6>Bv1h%j6p=M?9y_feGq7ouEb&78InG3Z7-Z?SP%d80qn;a;V`$Z`N z1qs-)m*84Fr}GMI3xMt${zs6kEj|InXPl~TIK!-P9YYM>;@aeJuHd}dDcDE)Et{+a zJXUE-U_gyA^^VjuAJ!mi39i8lpq^em_R0*?_@Fj0g{V-vQ#;$ErH*d}sm+>KF9@JJ z=N7}`@ypU>j0j&jLmvAUuk@87tUY5uB4Ky9wb31Hrd4BF{pDp_s>t579HNnOiv6OB z0?)szFwjhU@_8sS!MDMWdP#P$fLTa_06HbY(r9Ft4b35=8_cE!t<=_G1gB z?*1-?;$q2Ihgm`_V1iuz6=4084pkg#b9fhtkA{F8iW7 zSKTgE|7nfM;Dy-PItaKOKZ}AIbK%W@P{sL$+WQ1H_7K~Fud#Z;qs$e^yUGi+z_eNr zbNF&@2Ck#6CYh1>#4A3GP##|)V)%>NsYF&gKc6&hM>1hdIGbYWAa%_lwkSAaig5=A zR$Sj38XnOhv9hIx%%rhRmF!YmxMHIuUMj7hSAa-z^cVctJB^<#3AEd72lTk(AjiG1 zF4D3B?e?gAA5_m59l_Jwn1*y6Vw&L=l({tbv*>$cJ5;}|H5oU{j!k>1$U(g}D8eO% z180-lV)cW6~~jT&M_I3G`piHPbX{E=TXHB;QAxq zAY*IiLXv6%b2E!^{Ve>*FSF^R7OgxO5(H1_Rz99gspibE{zOHS3CwtG!KqE0I;(-=HqmUz( zzS3<*dGKM_@8=Xg+aux;9j!WNA3Ox_V5tdAafhP|74KVVz>BSrs^+<5rac|wf6@Ah2Ys@k;do5Y>4&5KX21m z(7we)GKfskp@UZns|6DeYw^Z~qQ-!RXhM=S<9g`+`ZCjWkNRnSgm!*>Lv((jffq;l zQFYgOUC1v{0Oer{m10nfmkr6$3<(PtqQi@?-7`9}xR83dIkxc|3O@w|6DV5VY){fH zql4ya(kbW63Do~V*rG!|MZylRZg^Pr1TtRgaF54mmMbJqY>ZPeZ+(q)rh&Km!^!k3lUQ`0p~Z&aVtxF1jQ|&&~_PK2Rbxb4EQpO1fG>F?cb9 z-w(sR4Leb$Vv=WH@ozhYt0^6Lwb$ z`r&7z#yNY!N%B3O5Bui}pRpN(F(`mpta8uF4Hncj7pnnLYQ)Z&s;Toym-QmY`l|aK zNB@PR^KLj)Z!0;=jZtdm2i6z?JRQ{(;N;U!XOL9KN=%YzGAQ2PPgbqhevM+jn0O|e6kzhX5`ArG`6T*=NoKfvhXn7bUHi|uL5)>{FcpH zGB*=fKHA^V%rhxu0FR6F@6+yC_gizilvw$+JaD&rl}sdKqfoY#hl`=r$(EHI2GJq# zk~?C59@(-(FUh3%;B%8nLaTP z{oDxjA%a)dgO{P+$^8*I1@o?HcRp7xxM>4=;2ZON8C=#mQKnuv(xjY!K~K^X#NB27&TnHpVozVFKV*K6y9&n zvRi}JP@gz_8FkWEP*M_CG;NDIhNDnd3^}jqLV!~~x>IN;Z*8k6!BJ-B2kjN8)a3eM z%ixgyF9&l)IBj+z#p||i6>VU-ntO9RzF<1PvW?dEVVtObyLL1YXScloiJIDikc8po z%1_;+gf*q?*+)HOQ=A1$_7SxQ1fTW{^Efxkm2`rf{5?&UKHMg;FK4p>9(v;qH&+)w z2CIGyuBx4PLDr7S^U$^n$-KPrpQa4D**YC{zOvfR-x6p~3g65lvGd#mgwi}6_m|02?EjHR!LfCl-%S#^cN;R!9rU8fy zoMu#aphXK53a*ViVln=c#7XrI!@S6O|S{tu)qfCUvlXxdT zR6~lVzo|%iVG$X{Peo|B1`U-Fi>BA!2;xNAHBF4|*Q~m}NjU^_Y}DyZ3%HZAk#ctj zBJ|d9nqmNyMoWfLe(jTMMm1f=H8f4YLV2E8vZV{X(@VAGisW7oEdk9eyq8fwc>61-u0t>=1XL*j+2K298a5IOfMJUM~=ByN-H00yE1r=u@fls&*v3>|Ndo_-%~-tniSaTs42##?_pCEiq82 z%L7XGsF3>KaBk4e-Fda^2T+5Hu&9Uj@g|0WQM0)WyVG{!)(@tMZ?H+1dCHiJ%hk9? zT#pyQO|LNL5tm)Y`5l?J6CeBZ*?XzaJ#>4`%wpy)~6* z@7LZh`4qA9pJ0%Hb6f?z#gL#_8B{cu)B$Mso5j9k|y|y8_lf!)ko!cgs7w<}Um0yR=AN zBX(lbgs$rh#vKJeV#=MpM$OORz-96#Vc&6u95#kAMcE@M^8i_^bCpiOM<0%}3qy;wsF77HU z)%aJ1wqrEl_22>p6bv|fAlwdPr;_r!0EaNu1qz#vym$3V_M%o4sUqYcV%_s2Dgqkb# zakOpbIESWatb+Ux5x&wqIw47a^2A4{(zi$VMw7K+dzyaj-1dSWsKepfp!oBi)APkgz{uo&qNwGhMZ?5lCnOj8qbusK_d-gfe|%b# zL_?tQ9JP!C#(J!VSqr^*q%4g+jygZSj8Vh3-OD5)ahBEgc*q4zD`d_5MfHAFk-I^C zX93(y&+U)`aWJ^{rhG{S7}M_htYkDn_fJ>05psCD@gq2eexMrrL0H2=(G__7k!V~! zX&3uu9uEu)ai1E!I+NA{ijmtg$ZPqeWaAdES|_@rk%|Zajc@gfSF1mH4Znb1^LIkd zO2}VPhc0v(y3+N8;4%v9YKnK%LA47hKv>F_Y||hwHci4{JipgMf3JBLV{*8&G;U*7 zyC}XeZWxIgk$`BFr8iUV-*tzvw{rEXO!9Mh==?l%cEm%UM>FW6n~57{IwrA>h96P+fBuZDNI$t9l2!W7gttGIZ0ev%)jiUC$aE;7 zbR}2iMg>!k+`!0p{BpOmAq2^CD;-WpdY2O3mSY$PG>0LX)xq4`P;c#CoX)^iCA6eH|M7!I~hKZe9)&Px(+E5 z7J?U{jE))@1>Cq?8)O14`Mujz<=lOzO__0rb6^zv5mSo0PCbD1E$lE4YRJ%cY$jPQJg4Dudikc%NK z3v*{G<<0C0d)F%a=X2^f_)M$*!WVIg0_1Tf{>8)Udw_#2#T(be@xJUyGN+IP;PZ6SQuI83-WMpRfeCRbK6s0Wi5;U(O zo%@X^UI++XrC7?yr6n6jKpk>`beCvS=jq7+@NB53C!*+N?ZkBCz*EX6NDG&~4=RdJ z=P9ctyfOinIawB>2X4{#PR=JUJ3;bG_b6ed_1E;IeFx#L_^4bRWToc)zxE;Fa?T`0 zYPjpp!yLsFy@`7mVBE}It>MhP0eK|@qSoNzEfmf`3I%n9Wlac6&c*p`lUAJ#f)xQn2~V3Jf9sYIiMdxysEcCfW0n93a;(+;0q82$;5uUT%S(IjqMnJ@-EqVz zartOh=~QTN@8B7!uWoKLer!5#ER;!E9d82BP5_{%08qTuo=v-)B)g({v{ViHA zC*^14R|??XME3flMeg)d@BZ>_&pT;I+B{z)IXU&eUd@Q*O&NrX0=te#I?b^l?x(Qv zuIBUYjD3`SnRDtJKTb^?`W95X*WIpF^)<@*@&058laH{a{GNxE$m8z}q=$|#%tSm~ zexe;Dd@MRR^YG{+;32m_=_uAutU|MS1f<9fP~Wy&A-!p984gv3jawZ=$XDRVe|a2C zs%QyvU>!U{+B%8T3y6~4FalmPM_OJmjg3NtwrP7+(18QY6j?rjJmlg{P53+lm<~OS zOg@7S_J7TFZkE*MYc07g$y}tiBI>MD**t%2F<*wXx zk5>qTqXQSQQ&hu?q(`j!FQuE8f|pJzKK1!77qRWupl|j^Vk}_M>p>&S2_yX*RAcCJ zkv8bhOpjU=d11fmX-%j6o z5Idr1z39=V9tF?-%a!}Ms6-MRvZk+rL4Ff#<`Ghe%4YVGBP+3wO=`bBo4oY_{&D39a zPw18gyS4^h;)?1E1X*O5yn{V=I)pT_jJwD9P3EAOTB|?f-ls;`fQcPEEIJU(KWH_8 z#@b6%IA`f(({n1ieOWT;us3dSOkcOzSuSAdeL@&;Nu_Qx#}v%2>rD1#^-LYo*ub%b zV|4bC9v9S?%9S{Ww-__Xa(A7zIfrpg7IQBYq85mORr zL;nh~)_RH5clKOJxYIHjH}cV7hNxTgig1>T2XE1P|2;N9GTs?#cTsRdB#tLnx;zT3 z11$}r4+qp{Z|8liai%8&XyX4459g3u8sQ;P^czU{nEX+yQt}GmDUAgjop;2?zC}Ak zlMXH0Xb@9zCNzb%IdZi$97j$qF zrO}W!B@`7S6;LWW~=N;Sa7FT zwrW=QymuS1Qy4u`u)+!+I&LK__C$FD?@_wZ_3ZYWQ_-=S>a{V<+rcaEHvL7fh58Fj zl16h6_sgmv$HF&9J|LGXEu&i+o%KhFK4$T(!byH6MT~0ajZw)SR{k#;j3F@ z&(w%bFsRL4$~3CPv22WM3B|a+v3naZ%vQ3M92Zi0Tj-y*g|ha*E^?{e4e^`uF(1N} zuI)Z;`S_XPD}lXlA!ZBJEIRVoH}9|0i+pa}DY%JJLklR~ab6nUZdBD=(EQV(zWUtz zsr0sDStir^Vo7uf-@<070@{)$q3K{t-&oUm70n81vJ8%&U(}W z!uPdg3tCg5PqD=0{~}$K{I&>#>uFQ7AYsfI*#(p7=oooGXMPl{>P=NXh?1pY{CLEf zgLQ76Cx;5~coas{oU__BgWfp5l2pdLbbKb+>(TKq=p_4p1*Q;P!`Gwd=%)mC+`+a+ zFg&z+-|o-UjN%dIYIg1{@=o5dcO(8xp}bcSdSRb!-qX>;eSwXPhMSVa%YMw{kfikI zHX=1x+vfZRG}EUXWOlI7{YdfX`fKmwa@ih#yu5NhzaRcbGCWmUk@NIgQP-o_%IT5) z_~`w(gngxx`9ATzM>9p*Q})_QYF^pjN8^FR(Sq=Iv{RF&Nn2~1l-ysLezj*_8$fZs za?uM3_3nOjE*Gqb)}^aJ=if@A_01%3eT8?e;M1hfH&7|W=ycoW0!D)VypIQ$hq~Sm zbsl2-EVgTS2)t=*C7k^mv^;MQTri0CCJ!-$i{-ArKV#KO(vfGm#aVEB{-s`u2p zeDr*ueGA3VE5I;V4+X9P&=Y_NE0A>w{_PMZ1U3jCc(FG$@%MyYX!S#ebZ2;;iJtIV z%mW1UEkNGg4o8N}fX#zbr%#;OuO@@5EXYoSW{6(tCKiR(;7y3(?zMbV@bQoPY`Ixz z_q>;4;jhBy(Fnw>$&fy??v!zpEVq)9s~uel`J13Lc<$-)Px>|=yWK|}D;pZ<@&a9o zejA1N%7>S3?NZuHkuc#Y*)C5LDm*#`iUK&5cgkdke6;Jc)rniyfq7ZnoQ#DxO6I&N z6B)HbmT9yXODRn<2Z)MnN$*`90o%GZ2+#NI6elOs9SEV7^JN9@NB0_{(oyr%*L#g0 z&p`Xc*ATYRZRQ9(EcO_Rn`G}Y;Su6;(58FZ^mwYCBw7r5fFMpp|HEoQgl({x6SF@Hk&s8KHG}kyPM#qJ- zjGS@sj7BCI(vbi)V;F;U z)O~KP+BDmt_xz~)RB5wA*L4EN4)Z{q@xCR|@0sVrcbMsYSeWzd2(S~;Y#s#0xp#XE z9s@Z#bP3BGkj_!SJzesX{RVy(Qi5eV5#G{CWhF-eEN>ARC7=%;w$4gN-8}VJA9(FS zm7UNlSmkTO>%%9DplYt5yX8Hhx)%tKkh!RuPzaE@-l$lpPO+xZOK%|Jp6&CFe48PE znZb{9Q2l-LAxs-WrRLQN9DTXxa&1tk5JL0HTUi^FgFJ$}YF^JJbi32iF)L~|;2+Ki zVT0EA9#^V+T;_3YD|qa$1&d!jH!(FInHNv z=EMIbTrh6A4dn$^)LHlB?v8{@DCPk!UOwc8z+c;h!}E8@_A_-SGN}*~DWg)B^GHFW zw!MS3eWTuS5{I)%094x@F|g9}lG8vgbVsJQc0l>UeA02ULi! zpm)~Qb9wYSk3g@pef)!uAYe_h>PriRsV4J=E=#2Og<*FKWYzTUSI-#~+$xHgek}VW z-tKNvO2)%~pZ(hYBj)fbp^gyvaE^ESZ$`dBeQmyzc3ZfMpj5kirH5L_tNW_z`3A96 z#T=k>8o95_mCX#V2Ll`MH*nfMIRLFS>4&8uBr8>0Kw5GzDi!zXPQme!d|bg4n0}O> zWtP*(oMaZ4SAL4KK@L>p;gpr3d znx|<|>AvdKf3;4)wK+$-L}KqMVn6o8J$Puq2NxwMut(qnqzoXH)%zAHUwu5j_k+pQlg+`{?;$R=*b ztRJ}FFoHpUre@qWwRhFKB5|s7pjlQv_f~cc_bFj1cuPdn0iJzpV_U^0zFg_6YSirV zjBP2W_MF)?-e&VqP~%nK4l*;wJv_|{ z0UO%0)K28pmLoWy0=stIFyUdnnTwE8(J|rHY-TNA-h$^+4c?SxESu64fwOcvfetTAFw@F=<>2f&#)3y)%F?(d7z+*wJ zVSddL4sm;@GL8<2k_@E$la?p;Rwcs7Xbi6f)V5`7rRcj<3mEpRW!#O3h|M0t231Il zW?nyjbn_@&OeOVsbf!;T5ihQgtf6@ObMSm9vI260|>?h6EC2fBPl~(xPGuBRyme5cdM*FqFAh*n}>hE6?Zd zwB!6zmjE{Cy+MZS7Ybp=#h)Cc`1v_YD-) zWP^9;skAT3MJ*%Z6p0>E`CN)5`YRP4%jlziRHUdMP$hv(&}lBqhemYByTJWyT&%cb z|HhB{iQmqQL8`PqX11tSELKx~IA^H{TOqqje}}ubqHKw#%ArE> z7|)I_=)o1xxy$@Z)fWy^gnRy{HU5B{7hpMTkL?18MWol1>oTlw==GQD$=#!7$bJ$q zr|v=gNP9GEv-s$fIEUAxAHGAQk7$i;BzPw47 z*CU$ex)g0Zf_%Mii*CGB5J5fR_OK+rkA*8CfEHmus@b`)_Pzu?+cNVq*i!aL-(-zM zf)@R;IK$oifIu;(A*jsLH-flWDYw zu;ZfY{Vk`*wpyY5?@MlvA*z*u#+-s}%l9%TcF_iB^P@1lOmi|6s+SoydRXGM|LhQu z6R!{w@>*E4(!{D(;3p-X0Zg4Yta`?md{A_An4eEfqNF>e;QUh@r~IGTT-zGBFnqGZ8h2>a|Q65`fN^%StjI>fXy)ZQOR7DgqCD<3@A&E?<+G-eHMZz;zxz!5Pbeh`0p=9E~s7Bno*h? zrg-l1FRp}%k<#9Pl45OQDzS}#YW0CWYW?v=w_j<>u=9Vu14LYT&45TRl%}Q(d>FBaEwk5LBDZmX&b-V{7QysOmyEP zy8J{``IOv6vB&wQ7Jr*?f6|?3zf7YaAX0MT4QN7#xjhQu*FWS$>yH61C9jZ9Ar(~( zA0V9L=aAXJ&JAI=jQBL zm;1hYH&}$N)4;fmr0He|NqC! zkkPK7X`>4D?3g&;(uG@j<|ZG%!j@l&vPux6F{zG8;hW%jT)%u{lOUIDPzRvm!(wNwfaEupzV3k#d~!m+>;v680ZDP!Mb+AP*qc5`&a&Qorrl41Bk;>Z)nU1$Y$ zR9X05jJAtQ?zOm;R;fwREuz_berEx zJX~vBYS0R+RdiTZgnT6I>=#sfU%%39#sA=%^l~!w$AM2;d?RQXoJ!D4EwFLIS+1!F z;BLhH5~L3PI;`AlG~(7n$F49SkL>`JWmOVO3@PTwkToAYPPH=mV93dGL6{Vp|m6Lk>!S zy?)UhO<>`1Ex$TQIi!cu!SeOtR;hVXK7H%N!HKWG^pFiq% zwhxC?KJa3XK9x3IB}&*8e;@-;GVEi?<3-S;SxgfOS=~H|o)3sW;Uy5F2A%2}h`76I zeXv;~uc;Vsy+wYsEdmbh6F`jEE9LFZK5P&W{GZ0eLze~h2v#UHh?Xd_*`2A=OB_85)_ z?|-hGMs2e(Mz!>>4ojuPaHr1#dr4bGaN`loBN{sG@PDU=`@VC@8iL&TDqLPP65Pd!N zp;R~%w^V}{R)?xaY!E=MqY@0^4a2u@X9xYWsYP+q?I%HN+sd0ER4>>CF6OUP3so_{ zL<@{N{Dcj`G;cP>qS?LRlhG*=|B-R5J{D4gbBEB!@&D44VZ{%H;jb#ML99eBn}2JX zI9aVQ>c-`Xli_y%nn1U>rnHubgCA7$#%#_J2#IUDjkeDhy=^knI50ahZpeFrlS027 z=YBV_0PAXO8q{N4i`ODUS0mgsTv@($fXZ6!)o?JX*^t$|CO0oW5k#up)1@{2$O5{O zCxyXE&cjj0211AbrYycCZdGAF%Pkb8&~S-Bg@-^c4Y1e`(*Q%u*N%~MPN;rDKk09d zb)C?E{)OJsAYKIr>5*&kiK`-Q8r$hfOgj_Y;Zt{9hx)pP;8@vX-OAlgaD>De$VC5S z4%o6__-}8-56xQ|AhWO)_pd_8!P`-WP$)ZA6o#x1IB>efc6EmdZ$J-ilyx=YI9@XO z1&VeUSAZQ^()*q@ipZURT9YTK&4<^VU&hB244xg~@);_t&Bcm+Ve&9vw|-ECTc^K5 zT#Pxd>I2-S%;F}+ZXVr;YI6AjY*C*$rHDZ=(OVQ_Vu?tG^`L^|c6s1H#qf-A-4AQ~ z4;*L$a5_!kya!T6kBKv&L1SU_hxQGH0woN3B79Aq)NQxI;(OWV(=fpRBQ*|5Q9O6Z zfMMJDF%v_(R1asfXT*O>LxhNOOCZ2UKDADf%YzS=t96!yZj^w~2E1*wCrQXKv;^0c z7=Cj_9(LJ+{=)B*24szkA0Hfw#T+fiPovt$aE4uVb#lHZ82rs4rAfo1tE9|x_k5)0rj9xTS@;}WY| zA5y^cw&ghTR$qm{O%%VTU#kskau8z}GQq@PuP<388O-eJp=O?m1$Zgo^c zn`S>wBC5SBP*qct8jb2~cY4*%wVE?ex;_K0v0H@uV)FQYkW;N{%94jBS1mQdQ|%WU ziN^~x(q94$UGg>G&4e*Fi?UetX-2UWw3xPB4SDRT{*Hkim7r@*nXn%~Ct- z9$xKD8yiwMr=cUoR14ADk%|v^gVv{1a7NEMq<~}YBR;`BY%qJ>jkboQ#~ZLoGVc*t z#O316&Y>SGuHs}r!Lv!Z-%ReQ6^su=AKTf*gZc;3llkLU!A)L7|4+X)fCSqGfCBiV zaFP$1lzo*Csnamc0pyIDOgEIF{rUS^t7MQ157LRBd{mH6n(Y-LMCKgwF1 z01s_nJR%1DT#0!7oRP#vKH>^{x^rF&tCy6-!MXb*kzd40_&}u*1touv(fPsXKH#0~-p=412(M~Q<|Y-B3vb%y)#qrUBcV0b+qG&2z7BD?+JV8336uW)6y96EIm z(x)JDVI|lFQ7XR+%8Nbcr*4+1)zDAF*UljW$qC!IP(6X(7vP=y@fMl7Hajf^O%t<`!_TGC?=#w>`zQVtW zc*Lu-CD+zHz@P6>mqRx${z;#21DyA}>AJ>edM9){@biyBuBwSjdpHsD4ecxcJ=T z^V%0@lbT&)n1(E@V+z}xka$2KSgztdfk9NZ1k5bYqC45#D{-4F*UnKGj^*N*k+zCB z?}>7nWETtKz+^_WnrY9YrUf082C31qlegJ<$zRgFCWSw+1u+{O*uMMF){jN ziztx#WJteOVZz}|dOI?x#~Gp~EgQE}zDGYX2&L9T{}e(Vlza}Azn3={uu5lUUB*fz zR=}tm1I`-*=9|*iKNViLfl|IKvH^q4L8!||dnk~~*0|eZqBp{cfb+;=VDcw*J4R$O z6!&LVBes(kL~hmnr$1*3RB~~fGEgG5HX_KZ*brCW(~_lcf0pdHmj8SLT_svBAA|2v zP8|m+eefs5eyHQ=%gbm>j!D+dC|W>*)5)c4O0a)ebpfo>ghB5zn;dxpUAVill`yaIj}5=dic^7B@9yLjyUvs z;u&#TimqK`>sKzajjNVfJO;Nnu+pI5cG3MIzQ4@V$!q!ajde&1#g;8*FOlXQ8^QQ>YlhqV*U5kKd5$Y?Az%Gv<_E67MXs+klND?RDBCn87;i3J^dXoeUHAflb}f=?q5ZwHvDQb zT~;iX{lMo>7F6{tsGiP@rzv*-&P#9_Aj-?*v7`~gI!&-it*FgdDs*qpLa!75bj146 zFDAW^0q?Lincq%Jg|TIs*DYSSo(SO-Ju1Vcsmdgq#zUe+#Um6*=U$E$l{{{w?4qyr ziQtLOjF$_pCe)+z4)0UiHhK6RnjvZ7i^-aDDVN@+iCUeTTh@L;u=1q)^r z7Py=c?@NvpJ}$h-I)Kjh7JO9edG?+?e0vpl#4=r5h@R}}WU)CSx6SuMyRI$6$?Q+C z5)i7c_+-oPgOc>^bPh9|tD67RWHSxYe?H0^?*E@;W8$v8fYSj?X&~hOM)IT8TmDPq zQqr*sFAimoI*0jD#7w-)*hZ5)U;N19L-6o=SFTm(__t5oEaAwSPp1~5Wzx|EUYp_L zS>Gd_I$s5~=vw0139+ItoJ3cBlsRjtxO1x3kS1L*j+`iPTdU~|_60De!lE=5S`zLS z>4gO`|JFq$Y2`4%s}}&J2{$Tq>^4L})hY6WBPJWhPic=;s!!?r65UUcf5KOQgn`#{ zRQJ9jp5L49v0uWl95SgB_$q*vVqPLArg0WOav$M+sAtCukSvcvBIa--*kPMAIGy<$ zqRbW}!Xll)r>m=BhM3yZjQ#tyY;{5U$7Tvvytcck=WfGs(vunw;ClP z?Av^w(fH;{($+96pntZey4HL7foo-mX~!(3x3 zPjnTIW(hFl;}#j`R`f?IL76GZF>a6Nt0I5mw74Vy$CA*anSQv-ZOFH@K8NJmUvzUX zXS@Z}iQhD=K~2BBYC{y>`{A zeBwq4_t+cC4V;|X;)D<)g$6)gl! zi`kr(<;r*Z0Vb0*TP3ha?TL? z-VD0&kpHR!hV|Viz{RF7AuPxQ~4W_7-)5THbXO*y{(tLQBeE#25xi zZcZ7pC2IrNX*2{YL`cSNFmMhYr#{U$kPluX_iBzqpR;6Je9KKEijEtdN1mOG8=ao! zh3xj`B@NK`s9?e--Q_u*&+fW)OITHAd!+blD~&SNZxygymMj4?Wb*9cyHgP{rM9C+ zyYvvy;l1o?-BWQG$Gaxir4VzyGHJ6fR+oHXUo8({jno>2NPbHb^Hhc@AzTK@G7SA? zP-A!q=;oHVHYb`81R9%4Te3*fcs^SS=m4jGxR38$tK)bz=t71Y8^BYN0fwt8l8JM~ z4Mk5vs6&)Y=J9p8VO6iIG7j9TdgKza*O2i~H(H#imSyNU3;GlBd+z=M&0F8Xkpi0jmER91|9-^QF(eCF4rezvn=#Aj-+ir5j^z*9zMWqQ`) z>(7I9JZneErxCXJB>x~K1Ip#@GzTYVC??bk2dj8O_bWtX-Sg`(5LW`^z(lqhnwHNm z`9etyHp$bolUYyhSpw=N!EJHqRL2<#w4T?p7!jy^QyP8K^40B$Hydaz@ z<=_~n>Cwtp3(zHC_{{!$a9)D7CvN@i#_i0U1T#2H^^j^E#D(PHa$HR%6c z0zUwv3|#Ef%ibfhWKj`LW&u6RL~|oF857CmO1F!Qer@NS)ycv!znKxsFc0I3Zc=h! zvgy0_sI^iVbWj%-z2SQ%B*68k{+GpSqbLy^c4+z(9OKMCdR^4i2DF(U&xNGIn_xTi zt`N^9^A%8AAf#{e#C58ezRk)qv`3~ePZ*P(5$rclv-g;J z2u5M_dAl@V@eQO?gaG9@!M!KcR`3nNf5}yS7wsdpC}m(+C`U_5bYAkq8~PWyDR)lc{nosF`CNiK2d2 z{^Fs!m_! zEM{GLrOK%#k%B(q{Hf6H-$X5Urs74+OneRJ!!5;@#ZKUS8lgHdfxt{M+*+6if)OOu zi+PWrzE?}q27lrA>aW8~##qYLcd>qR(Gf<4_^4gcn-tbe#fD`4X>}YU*OXzWp-(+a zQ$<+^aH9gh;wb2_h)bl2SV{c?<4Y1Ma*G9eNFF1Gj$wL*nNoc(#;(Ie;Y|$9k3)k} zbP!)kHkG#7a&u&*qE+h&} z6xfIaW-4OjC|)5MxeINPX7MFVP}#C}H_Z4zwss4o!4eAmefLz%t!XD}bxqfV!$a;E z(Ohh2*kdZ3JW;zpGbvtRYGYS5;J7(hw7?~E&78V4zEY`En;0KkV8+70Mtx*$6Ln`X z>F0gPYGThfmo0k3wWDJqYY_h*_aRA;QHVM!1F-)5t(WyIpbG3ZEjh|ZsIa*rq7fY&Pw)}^KOdXq9@S0dss z?3OuoT@!&Y?8$zMOcwGeb5n6QnM`X|RgBpqO)E8l`K&}UP%Bf>%HjP)2{qDnE}jx} z0Dd{m?q}oHmj=%~*$=50X{9yVI|_1Uv3+5Sey;plT%I*96NCQ$C0bm14_zAbk=KLo z--}C&D2bd$zXsx?bE4}FX>j=0j5AtX6rWkML_E0tza$o|WAj4xRc#e>OTm-im*smJ zIqF~bln#b2XGPzMD4(dc(NWZIw3JHk72sTvHi7M>t>&ved88^l#98)i>i4pW-cq^X z^BvOeLSJ@EP{1+}dfSkAozn6=2~B;0D)RUq(>^tQ+YTWf^3@qS4+}&MVW0euNF=vrDrsB0lS@WblswUADutaEXj%ywJRdsD3&g(JIBD+2T?=L{j6 z7bU^JtB@4S zFl$4FxX*#OFH30pdkDi!w>7;LCBX{2dHBRpxl>{>! zwyfw~^of-_{PbZ z1Mn&9wVEl_nq{C?Tg1to+Lpq8of+M{wt+nR27ya(z0SnJ8*EUS@08@Do7*;CBEF-hrv3jHY3$^oWemarH^qlv9 z_LQ8479;JyY1WBw@{#!M%Fpn`r%Nmut+87gEIO1sp}c2J3S`2uF(M}m%^}b^fU1p+ zLe|x6VAxmljLk^Xrq5jpAC{ro>7YOEg$DM+JshT1>+Q{=%Tjg5Kkc-5hZRDF-09Cs z-I+~7;T!ULRsp3>$y_4GXBjqa6Y}YL!TjuMb5u?ly4^Z$3vRyd2QsG6Q#ej}O(_)g zEi64}+4btrh=5va+o437wRlbwSBSK5llwxcy_EZkC94o!p?WS?BAr#`mb*q589a6Z zd#8u00j7-x^sjEE6LwR1em)_~nCCCFoi3>b6Qg_PJ>E9kB`!&iBW*tNnmFFWJdlPG z_LU-&IWm$tr0=Qh^t@J-rkk+CR9t78p+Gi zJ<4(A>)^zl+>G_|(2eX<=1dFJ*1AhGq__v>Nc%-43X!E!Se^dCi!Gn@?$-8hM=_|x zL*NEWep%r;zt@!lWvEB`Ihk&DrJi8zqsAj_VlOI;69WdJmWR;&nC!v8FjcgXx*9>=z}t%Qf1pGr`!}%1zV~F4s10;QDmDC`_I7Gby55a zWRm#nTbomw@ZWoz@J-M+e5K}kuOcbNo3rC#qY#m#@1 zLVK^+w5EqLu^y;|C#TVf0ZE9weYYyhGLDa1GlWbAsgNEHKR5WvK?E4rYju#1qH+Go z#A|xf4kkT~af}OhCrgyiwQjVDJ6p5O*{>rpJpRUE;4ED$br6e+$84GJ&2qdL*McAEL7{xO9uc;v-s@h+CR-Zt2< zQLO(RXAPv6d=4{_>e%VW__)>t)@3roS7viGtRnE#daiX|Ad+OosJNT;vY#4T;}mB2 zM~eTOghCd_xDNXMp9wKzn%5M$u**0lO0)pFt=f!~bAFR{S6q#DDsCCr04|YCyRHK8 z*(q#5DMks5Oh1^}H}KdOyd`(5N#}K$Ut(4{6vkA?OW1K@T`KR2-B14aN!0Ppvm-X4Hvi z*x$H*LJUxviRr!rQX;>tvrF~^%_Ewfxxfjev6D~IB*`vQU|Kqm$|TY`YsUbU>d2pb zz)HpZ3uN4?bK4;K%vJ(UBzT8flr?En4flCI(`5Y*8Y2Lg9Hymr%t_Pt%(A&C+l9EgDMX6oayugq=Cs z!1YrI&QT8h31HlCIg`?o$Pg=gk;yRNE~YUDD|3rAF-HS%Lb)10(k$|<2t;3Dfx5pW z6TD!ZU7r;-`99LTpn)b+S>LUyvsx|g=r@)GKSizK^be~hus@uwL|BI)&W7bTYs^J{ zes*H@j!~@XW5^=6?njLwq|9FQ|H;OjwZEhIneb&3t>;^unZEgHl4YZ;%$E1)V#Jr! z3|NS#FjF!v4qtg#qEx;3%kXP1aiEuuBS+fb_}D1XF=)jaGT9qN>#x?u%xaBi(dy31 zS94Ne$9 zcGE_Ca-e_wTTmvVq|K4PC&xE#T0DapW~pthYBxGOwTGztycvug%EFEx{W6W6J9Kz5 zu;nibUftn~2y0F2a{b)2R<5enYYhT?rMtx0uSV8rDt9&b7QYYxyd}lm;}o4_GJ^la zf7zpcODSsDodZ*ON^Uy8Z~VEdzsVpl^Pb}p9)d>gF{DF(Oqq65ZY*+%^!>JsRZFuw zi3(yMXjNDnX-o7*kO+NfED{hdE=4)Xo>#xjO-Hz^G!yxmrH15$=3%RK+S{BFSY4KrwQQX!!)K1g3JjD`u z)FUkVC-rs>ld@>7YP)TGi`bRyc`@riIjOADNfP-)m`g%EvjA@!4@Ag(uqV+^?PMa@ z3PGUgw@g(dOQfl~f;Vr14}e@RfV*jAlS32FuL8X}F8$?RsbjTaTrURO~rD`YhMBey%?U*45I zjZT~Mb8MXKF5JjZ!o2yF>&m_So%DA}zl~_O_W#h4k4N2F6L;S(`VP#gE&p=Lk_%$T zwxzD6pMbCd&e`Oi*i2xvPLLTeY(5;=024SOor>k#kC39w4Th%TCpi=V8ReMY+ltVxebnm(!g z^7d~8+{~7kCvZ=ZQAC)XDHAa>Vii=e`gcnGrl8q3r`1{O9m`53erZG1g^yq(GmdP6 zHkzQ%ov%mi|FO_fGCY%eCYs0_Ihm(Ro50pNIu3(E73d~Tj4mq7o+Z}ycHpgAPO}v$ z2$zq?1!1wlD@6Ps%pgr!A-W=0CtK!;Uef9-*5<-I!MMk|`xFjQHV7Dm4n&tC{E+u0(BrBr^W8=+Yt?@OHc5+v41Hl*YGaL@a@jycPz zxT93v86=Uig`#F9_e&c`LmLf53yt~vw7ZHUVxmReWBCy}W+>j#!S~v?Y@MTd z5WSp{|NEI-X6Aa*a8H0{xBf-hN=BqY*Z=DE%e^V?)1t}8OuD&CHwQ;nioQq1`M7cY z#CWsd_xX@(xLSW2fNy#XkGQgwrSLg^`34#16x;nJxqX4;ru8oSAY2`{HJ}r5kdzNa zRqSBehP4|F0n2~_QtAAIc3&;?yH;1M_XfU?U^Y{+w2mWTwZhLSHub-{Y>5n?HnjxV zPGVoroYU*Q9H-|K@cB)z@>f*9odJTd&HDopOIH~!RSMTQZ0%kd{65;T;=Qi8;`*OO zxosq)dn)#OBJ~K~z+}au)7^?k9f~!UWZ?+&A#qpd872{5efy?xPK6W=R`ok3PiQMH z7hkZgcNtyvEp?*2zF+FB5Ro+^d;kQ}?506?tap6`aY~I9mCY^SUR5`y^{p?bOTBe< z`7y)-5fm;tK=^Hli5bkION1B4X#rD z!4EXHv<18JzY4Qc3EVYHfOs6b2|i!a0~vcDRhsc}K~>^~Law&#p0X4EO=eluS)->J zvQ{4#rvv8zbFs|TUPR1f=3k!}sy~vcb-fy+J>&anx-?gLDD$jdLPZ%PKI`b0jGAGtV!aqfRHFrG(XhrR;Q z^!&L2N>rfDtMrlTu0R^DQ=JNYd{yp~*H1k9rU`mVlXjbwt*vEa+!)3Ww2nFHf;v%w z)HMH(3qsU!e3gV*>y?eMQie-9RA4YLR`V{#XPL_+k)IUGmUT%n=_soZxI!MP2Wbrn zaz&h4w^Fp?^X@WY1gUf=5_=YC>jij3QoJ$lEJj{^$&Y)+8@@|Ns2&i@Sg&Rgobh8* zQDNw?F3v6Q^;Z(Gwxt#?PjonuU7N1Z#>y91(Or8-X>ihhH`1B+FKa1&U{kv_RlI~hYyJF*OqDTP?4vrMRKf= zK_oT|1>@UPlp{^+1&lR#T!h}8WHB(l4)Aefg~k$nStGzs`=U zv!Q|KaD%)Dj9-;*lGe{4braY8VnR07iOpb>T`etRyS*4G39@Z%c~D^cf%mjX-LzTN zoIW##kNUESM&wLQ*cEjorD~!9dONg=4YN<=IQw)k1Jq8(`iy8qg(@;^bQ?5CarWmC z7Q5*BH0U>(N(QSO7zs>~ao6IFjG%cTip9{YRYeELBqgiJvNKybJbzu9Brmi(92a11g$G9C+?&5!9*<1Le1@8AptZOXRPB^)xK%o0Wr8g*9!qxABEVj)p zN~ceMQMA-R^e=zS?>;MR%3~;QovB-J8W%^3R_F>tb?5nQ^kc;OVy&_lAF)2(L08@< zkNw6zI;WF%9G<~vrilvUvPB=B2JVsz^5<7y+4JrEdqsOQyJ<{fTCu%{Nwd(1yOv{g z8&ki!8?awr&@CT_T7zHukXDP)HIdp(JbNTQ0oW=CmythTopcQqZJV<}Dl(EY`XznZ z#XjHooUj$|sg@_-#RJ7~(f5E5^<~f5%^K3WCoP6TAm<;1fb2ekpzGWL^%PH0w~SZ} z#X6IIZL$Q#Jlg4_|8|Xns2-z`Q6g10K|f3=nm zZfO|J02aR)1Km;SzraA|HW$-e0DINxNuc$q=M}~F2a~bS-R^xM1ZI%zJmedL24F3g zk_aE$Fl$rWITzWMqj>P>(b;mQF?!Hoz#ppS5(MQ5uwkr+YI=6)C0gyQD%?G9aYD;8`M%^|F#pzU>TC3UA%STWuG^T`m^WUt@G(DmzDARC$ zg2M%RqZlc^7WW+uUtO0svPp#}@)n)^Qw?H6u^5nWy%Q6ET1)mIPm1V>!kVnn<_Fp% zHi!ouFkE!2wDAv)&xJLzTZnzNf$!cSnf-}9-kAR$UI@-dSfZ#-U} z4x?0N_sIT<%AOKA-)L%Pu$zJgwx7`|(q55@s5ypziCUWSbYh+T9lXoHWDU7A|1?k2 z0yN|QUh4ViZgsXnHE}IFTwi5q1nBk?a2U_}=|I?>EtU0ExQUz?9qKM0bfia(Ph z1#HeGOiTnmtXMrR)PU{5BRbYtloxV!D41ogG5S~YZ0d1@KwG8xik+Xeyr$wxHzMp` zC^?WvXCf;0yF-nB%IwTZ*kd?Oh1;|62i{+Wk+CxI>r#Fa)f3ZT&Gr^3NYcR+82=&| z`ZUDi?1u&P#ghc>FinCw8VJYk`bBi}!}rNztTQ>0<9Nh~rg$FWp~Lm&1Z@N1cDBtS z`=n5s?=pUiFKp!wr;TG%Xn#hD=9SvQqo6m>YyC;d&)o!9+x%h1>*49*H@cKI)evR~3C!{vwP|_vy5L zFH*9jsCP5u+W1oIQ^)by7%E}%hwZbp&U|}-B0HJELzBa_T`uS1Ij{O9YFDVX4cP@! z%MMAVd7ARbK+k9uOk+}%L~6*`+c;NW{}AqgImM-(KzT@1a$M!2c+qwbn=ir z%^%DH*5ze~e~XE_j}bL8swG$5#c5+xDV>Jm#EUQO-K%bFJW2_ zLM(FA__w`2A17%Tp!}t5)!kEmYG2F+tAZoPjX8FL`^cPH3Rzac`H*sW$upxsX>4Q` ztnk1s&R{3vsc*Xq!NmtrX!_KIPeSp}p>Qc}KKBoBr$BAM3Hz=2gPNNnj3JZ z&zr4*8WvFS-orAkh2f-76-?QdTJD88^&=aGnD55n50mV?Ka=Z=!fx5}0l(n2k5$E` zs^KdkQrXhU2%Y#!FQK4haBCdn5VN|-oQ@e@LlFvoPc5l;DLl%_D?+CAmE;*UOaiyv zDqjmeyh=9MpEynMPXxY=F*KV8WalDD7ASLqr4V{~dxCi>&6~pY6+c&0;!;T_rkIKt z3Vn*g6aj{`_oW$d3B`BUC*`>VDIn74^CTl2;^Xn}r=0!`>Ff!eH zS8tZaHU6}BY5x)3u3{lB4R%KW|_IGjk@$toPnFse%$S{WgMnqd3OvlZC{*tOTA5KBdL}}JL&(Y=9Ow( z*Zw20TC<~%6XNuI65MoI28u<;zD3ZuD!oc7f;kronCm(ZjL1RlKZ@K(7yuKi_i>cy3|6BvNzg})f zJU~$k6 z)~0D`P$b{$r_H#1K6DS+pfi5}*3(_w(4noDjUiCog%TYSE{iv`Yv69J_NiKu)8B!z z8*JX{RMsb$lLt|?Kj{SxC0V`FKvd=o29Du+29b$o3F)0uFp~g<*#S0~Xo4fs?tsZ> z_!Y47#rBuyeZb008vTlrMwOg{)#m&Om+N+q@a@r=yo(c<3fcY-zA5D9zt$?_WgIKs zw+aUevZHk706iqBT$w6!m`L2`+4NG4%5V&oKuFxzB*|nIP5~(Fsw0fR)<*3ONn667 z#hRvY;D%tQZ)ei3gk?=Ryrq*OC8v&jfpv6EiUg*a%TRn4xLDP;F~;1OE@g9&0?+ym zW;=MlHc}l*H@kcp{avct{D_`j*GS&^Px=X>S~29?P#SKYE+M$R2ZI=V_FtN>wP6|d z6f0|g=H_GS6OG( zY!g&pOnh954@e*iU(EzaA2OqvU4WAx<%@P(+Fi}i3Ut&w)gPc@Z)#7y==fKY68Go+gW6#>CLYJ|;LB5G8zdC9nXIrIFNyn}+BLTvX%odX`LMXBqHpOi?G0RCl1Xd)$SW55eSm1*7wjp;FW-e*4z5ZX zwxj9X7Qjc_?*hY!`QW~k!Zv$IFiVi#SlMy&0Y2QaQdFPL55FVE{RCx{kUSN2X~hR{ zWyGL);ClzlAxa|2{s{C_AWc>U;(CCx+~m$x6f>{bGY_0nZO7Rd+szSiw`wG0dSw|=NL&r$z6c~o4N10X5kk!!6@KB z^R@oq*_}TJVZoxETa9pG-q>sh^lM|7%-JCMZrGc}?!+46|5k+^_;^O)1ETgN`6}Dn zc_|T(Mza#b?-SZq1{wU_d(Gl-dQys+lBM-mA)aPqGVg5q9p-?$*0a}Gl%M_Y(eNJT zvubIpSjZw09$ll(7LuWW>dWUFS^9itLH+_wmHk<;sG6p8Z|^(2Z;B1!2Zt;&xRz6X zx^;}9yNoUS$?NxU`;TRmbrH$p{{jMjRI&8ZvzUeHdvX#$d;>jiHvIX(qr%c6tVPVv zyLO+eH#)3JP<+ZRj=6s~USH<%>-?l)_s(Whk3KPgGf)5ng(tSD2(`DK)EID!q9+qY zg>8~1r*y}*`M$$5O84_Z`wY^5FIR)i@%e@Fn6j*htxSDdMXDiP zs6KuOe%d|k1%{cHsg_;nTjfW?(+wj^Rs5&QfDad%*M$iZ)PA@l((PU7V5Qz;!TWi# zHK=fWV{uDz{9}~HctY?C`X+47z#LDLClwI1jcOm-XtDhg8g{wa2Cc$!r6Wc^ltaa$ zmQxms(z5LH+VoBh*?EAz{aIp#0#n*i^<}-e4+c9;9^-_luwmYejr$_|&~0@99gS%Q zxMZVl@#Z_DiVaq$)S`*=x@n)QBFz(69#aPYi#NC%RC-Hx(Xa#>;RIA9|x5SUC(bg~aS8M@&8(y(DPcFPu zC>~873?qfr95>iE6^#M`=3e+YhL8PJc8U7Pk7$!GxrA|zz`n~PdhG>9>qnFrwH37( zyl=#raFBWhG12j?QoAOB!P*TupC;vGq%BRmjGqz=x}R;pT=fP!wc@FFE_z?X-0 z)ixdPYA1pnoteOAEiA`4%+=k6cU%_U4NanOf;{w!?Fo zzJD$60P$Cb9#!l7bMzn^WzBZE&V6(5->+|6do;}y!UJ4(GFkX*x4Lv2qR>7+aw2az z6Mjoc*uk4+O3G_4Lc0g#b1F|I-yr(}50H(7cu+IMKEY?FkeTh0=8rx>r)p*FJ%zA+ zVADK$@S=+*GNBPz|2BwL1gYgxePdRO2-rnI;ZF#pb{wKL(qfsNRwn&n$TbpLx_t2l ziimINXI4dvj3@;n(wlX+`qq?$`E$X3gzFO3wH$0Vp=>#~W|*Sf5a%JJt`irm*ZlMndnFy*%L5e8PtPryLYuW3yA7@R*(WKJ`6y573kN22el_3n}t^Tq|k z{BD$(B-t6=)&^~S@mCiIPVnjm`o|u*CKanm)03TGo_rUxRXbH;&qsIfl>VR!vr|ad zZYCaT^rLF;zvC18NQq|T(3?AR;d1Ti*hpvVqfsh7*=Esa2BLM#{QXDk{x|wd?+C$G zOYa=f`RL~U4s=ZDT*kKS!ByUYR#R3@3?gCghU8Xnpi>04TTn#$cOumv0(z|o=U{K) z6XX~<)6h>AAEk6j-@_UP{ZeHK46YmL)?p-zh?pZc4Tq}N5g=#5N)Y+>M41m(?&ybg z+=w5k(ch3poaO$K+kor=A|ytB9~sZ7M2+yg`-`9>oByI7LJqH4x&7Rz1iAj{UrZU` zIf$@uh>GJzxNwtyvh=8CC3V94?mqiYJJe<8_du#-16^#@jU7~&XnaYoJ&(~lc z@MY@-9rxA4`VBp3Vk3kjy8}vt%do$s{4Ha}8#caK7uA*G!lVr(M$SGtUMl5cC7l&o(ii+sKLvL_|YQz6VOvZ%-z4T+JM^>fSUJC;Y((1(E zIgs(UbO`dvh!a2IjVe?e>;f@Q&)8Jp;8*{iBMSp^uQqk&_Pt8;d~_A9Ld^pWL3=Bz zI__7TMgu3X<0?j=J}o^%Uqe+AM!4HAIybeq6>5>Sx8o&;EuMpnkshJsC`6W`O^SLO z84|8zB2r5yQW>a4fpDLnZX=JBSRNo@gqOtXo3n9Ml?J1fx-3jW2~*2)B^B6I!er>< z%CW^M1oBB?fnu?3nrWVE!jYlR$ul$9cdyJNPpqD3e{ptrzSJ3o{MryTh9Cl8ov<6j zGpc@42fIk!7@-|R8;yd_R~}9P@oeaj&T`Hdg{s9dn?Px;pz^ zrmX#}wz8gc*uSVa$F|67n(jhUpc(w^N7y6HcVw`?RK~XIEO!KtBhni1L6lOo+t!)W zsK2^3*S3*)+qLU(D45pWOb>S*(Y7x)ng+C31v7uR*TcZA;@f34Pc@gaU{P{Sq~M#s zHs$9FuB`I~r;cB%nNxM*<`eXbA=yi%N(z13Z;>5x%hc_t{fMX;sy(UYOucdU10+W~ zpe?}AHSrc-cZq@442V^LMOxTp4sQ$rJ%Nye60SeKfn2qG^j}wST9t4TCh=AH@rEwV z;ZwdKyn(d3Q-b&ocxW0E%-r*|9x%8h#tGxn%0$%Ul`Z`mq#(~9P(I(tezK)+#^`rc zZVqeT`(p7NxsOy_gT=*8R|Uxak;`upIGlR(eM;1{_6A=VGzb21PZH{z<}SjzJjze< zbR=@mKW(Sc2^ct+M^>JEAzYb^r$D^+a`l?@k& zfYJYN3Ir&-Lu#%&JyDFO+Wb6X&d5}%gwdm&inTMaeQ^o{_5OUopbt170j(E5xr42O>imfx~1qeTlAt~frUMK{iE4l?phBCOyh~QromgZK_`jj%g+~(d$ zmik@MyPr@4{r8}d)_0M z)noL1$uH{^MjcU)9vpg}bDb?k;;&+1@~|GR{NgP3x6U8&`B~TldzTrQrutF4lk|wO z$ei`B4w3F#pJO7BG;XcM9Yg_k2Qy;T<7U)0jem>{Ole@BhA0eN*?yerfm_*7WV|OA zQ%CLj_l&N@DIYwHjF z7vfk|HMh9C`L-*{{CGm=RTa~rfh9iG-dQRZ#Yx}lmhvt?lbSntN;GW1_Ww|CT+cos zcvc5cy!^FyuAiUuD0~fpYkV8p-DEPY#a_hz37P4g{t!Ox#c~m?A$P)Z2X^t9*^T+N z*i`gtPsDGW-$+)#O-ht3MJPm4TO>$Sps|HYJW!foDzAbAmBKlL&Dor2j5K2}N^6?t zFQfC37CL{5y;*kHEj8->F8TqSVn>>eHTJZ%%_nqc)8pDi*`r`5d7V|B zvlYq~u{vkcrT;OgsIG;_fC147*_6v!Ci>_cV&_uCtxD2if!guqMzy|-wc`hTM|Vs8 zE8e|2xE|aWeG0%jd~is2*yFAqpu-d1O6+2TRGhpyEYgUY-W`C*CVv41aLprZfnoE} zQ>zCir3UU#S@VH_DfW}keH-*;8 zr;mV%7qO^D1f*D+s$feJ?I+tW)fVKt8StHnztY?B+a zmXvI?2MwUlsycAjI=~CKtLV`i93OD7?IKCBHkF!M=Un(eknLdjd#rA1BdBg4eZ}x2 z7Ce%{Yx+0^68e0W6}4?Y@B)!N@J|!eMR;D;AU|~_+*d26i_x<%Sf8geo*1DqI_IWF z_XrkP*5kT4w#Ty3AKkf?Ip~RRO1y-M>V;0MYscHei@g1*C6EhPeMKp}R9f~wRcU69 z;P?9kLK^riaCu4=wNsy+KWYnZQEO|x;Gv{kZ40)<25@0MarVa+_Doav=*kh1UGIHu zL+-U^abHTo`G$MLbZ@lY@&1uFRlVY=ExpicP17QGzTCsfB={zlKZFjdpjl9Do?_}E zi}8&@#Ukn!m~ltvuucU*M)dlhz*Wt=ms(#NNY@@V19pyf9GJFg<_bs!Kfr-21Mg#N z&^$3|g?9MLSH1oLOWP(~Gw(PJBr|=L(6zp~Md@|!Ew0YAFGNRC#mOuVzYD{zS(!WT zzoBleEcA>Qe*(ftJf$$VD}+SLaRR5?=x5&X*S->rtb-FvY(c#IOJ@i{+nJeX>MXk4 z#=?D7c?cDbz_PO;F|`ru;CwQL>JWzwo=0q`qx-TnESSLf)>7}KL-+F%tQdKmq7X0~ zh1lp&n__opW=`kqO1DNE#me!b58eSD zJ0mD_FCOkYE5_(-?|7F3wMALPW1d;h-#9z^38nfZ^F#=ou!+^Mt1blAk%ss=!;(D~ zJ0td;ux;c7*Q3xGh*0B&;kZ+GwuLjnO?Y&Gfy}>~J`xu=+j@~p4XqsRjSA!blMdJo zE0zdoVJQI#`Xt^s-{-{pxY9;d=ZBOkgZKgnGbBc5Gt;0o6k0^0Z%X|U$j+Er5&7R_1D$k`JJBL4IZ55&0r2a)oXgwC`cXdMwB@JKmM-|y0|LLS}VqpiI~+UtpacE>>V zE*<>hd^`(amx%FjR7!i{mY!%=Iud5dmm&V#+U8+fWMXlQ{H>+^@!l_bFOh?_5f#2M z^~P-ry<|R?_|vQZ1@WpG$P+(vi$Q!Z<7N=sdWM`Wkh92-2gM{s$4Kszjv$YM@O6=# zS=k6&yMbhPBp}W25#;SW;T9J>5Bx6v#c4)UvY!zosSgX`2(yz>1UQl_7f{vTGqA-u+-#pE4Ky zZ@MK87&0yHdlRB7EeGlOF&72e@gCVCyPLz_QdNEI#6ZfTay87_~Ps$@j(851b5v|k{C+-{gPIt#gt05#l(79QmG!Z7{79T zQC!G!5)Zv@OBC`eZh>a6J7^4&WlT2s5*88-Y5TdDspR@oGp>bZ@>u9emc}PxBRB3( zx@N-`#Y51b@Xph>nMN(ebKrjMgkF)0axUMI>EEOgz~cAr@xQ2aS=E4SHsFW1n#Fg* z2IEujiU6@q@ePp6?aUR2*;Lp&GVzPq>^;#$uHPaUa=4q5Q3<<#b(e~OXYjT@8$f^n zl#1KuCEKYfaUnOirqiILV80PXT1)^_vfGT(f>|o|N7w)6zo!GA6GL82`3dxy#8o<9 ztori-L5yeY24YelE0(oGd@Au3NPpdhA*fUvWn|0>5A3$|1S z9ek}!t)&Mm&PEPid|`p%VCJ|D^4avdyUjn(A~FSL{_YWwKD_mXiW=U6=GZC-q`#50 z41@TKC2{+7#trk$M}GhY2Y!1^OX@h|pAo!;hNXh@z*c{OV6^s}_CqGwNF`gtT#2O+ zye-St1eTUOC{B4-?@6wmFG12!kuWzMzPWYarR3TBW((7SG$Jv1qcw)ehdvAUS3|j~b z9mhLXw%=vf^k!Qegq<7hBh}~SRf=hYVsb{wl`!V+y$!XpB_kj{28KPacd-}G_S7y{ zL|H#hwa{wK=!X2NwoUDOpp6ix%A4W7DtaTAS-q`J*;T@s!yq#8YUcVw+_>bvEjLwJFs6%6MvdN_eVx z>Uhc~VeV5t9sS#&G@US-2oTF63_XGH)@5YXY?&J@Rq5;4F048)#ASF98LI;C0~^p`U9>aQ(?t*4o{IjPCUg8sB~ z;#Xqn|4a?cLK0r3MiX%+V2j$)+OA!|x|fOn;OlI!cvR+*5HU*Q%%>%^C6eQL)5L~w zIM$LFX?tyzj|}`eeLBwxU=}oLw!jAf1GWri9MNh4>+GcX;M*GgCdKT@-mNcjr}X%(5n-Nl-jC>4gXg{2-*=c%jO>%4n5Ruy^?T zP!!(tqg4Y8YHYFJzF(z~=qjWAv<6e+>o`I4wtwVP7CB3gO~y(xecpUF?(0IG=hQjI z;Scp+qk*f8>52-p``2lV(IbvAb40K2J7X0}0pAgLV%2}U4}^M@8Hp*&*w!T$?>nS^ zBr_i{ewGD=--tj>2BxjwoF9V6Y8N&!orG2orcblI?95TTtXN)_H7HWJvS#u)nJ>kt zL!HH4HfHnWIc|cp+S~%V0JasA7H;=}l53z4$Sowr&!my>`7Qq?4R=N8`HmXD^GFJB zCe1wroO*jnHXwZbMcfH{je`k$W?l`?jVwr0_`O1pzTd!Z zNx%cUjNDV&^g%LM%BvNwJ{8bdVXo^rUybaaj!C{Mb)Kq$j@L19Ub%M#{8L-~0c|Gg z*ptWZ(9MYcW=H!_r%}Y*MpMS_Ce~BumR+kuFL)rez*4a6?+o6D>xQd3ly3Rw$!VYD zzW~sqe@~nJe4iBYEFZo$M%JWTldpYFVkv zQYMu5=uZ^n;llJuf-sSC(RD^R1gv19z;BJ zC0nNbd>QtV*6P3{nYNDlFQc~&zTPW1rLVjnr!G8$7YYRVhN(k3ccz4_@pmK7)*tHy zAlkdA;z7O&KQZ3-kf-X1W{4YAM}Gx>FjSraY2R<+#3{m({tW(TF7gO6W#EH#FM($B zHzEFVRUbF~^ZhZ7=|-w}3J2?vQbc~pDIlbJk?J#1nv7IpqXif!y+!yK8$;3f!~5h9 z_nxImAi{wA-N0)R0cZEXz&uJG1`hnvB|<5nKgdGHxaXX`J|mBVYgPSYTlcD`c%oF% zgZ-f?SI?BUHCboGZONhtTULr~b!vUO8Ik<^Q>tt`r70+aNBK;?KG;Lr>{QzAXq|dR zmS6h?{q2(73P&0!IYGUA9|aqa_$I>Ypui>eCGP-yi_{r6>j5uTD_h4WjdK9o1>#?Q zs$8V_FX?l3MHmUZ_2;!h|4n}8o-Pvy`l9cyB1i)3iAHT+^5T%!KRL$oQP~C5c6lkE20O1nM zSWHV|nRxX%{-UYoP4fxz0VeuDq{Uh>}+=1%pXmkjk1QLfVa5DexqIkoz^c)kBr z6ETVCSRp?&WWn99dSU*AMDITBYFO7C6|QdxY1TZ$rm!xvMaIbCXjHByCrWZuk|X(q zmO0+BuppeiL9=(~YVQ$b+*+Ek+*N!g{|QwhX0>g*nNB90S(0JJH=T5Fuw2-Sa|s|$ z_;glhct`DsGmJE;Dq2IM9v_vPehuf~>iPU1K7r*fpJl~JDf-dh;9GK?f=!{qy1 z0}osFMpnu^6uB1w7!y<5btXf^E&|ckooc8+<278TTLVb5Kizr%jnOGvtJ_iA#cH(R zGn}?@-O+sq?>RYm;;JD@Zz`_Gr=?VvNg(q|y%Pg{m?d_PI);%9HtzMV}<0-6@EAKW{H)_>whMbB33U{!v&GmoaSqcpw`zv1b z-`kq9=!=4rjk!MNg@muRcU&;^dkFq~#G?kz?>%3J9mztxk~+uocwAl+&%li16Re7y zB+B;{^dQ`yv8V0^8Ly<@^EfDO_`ph zqhLUiT_r~@H#mNn_W(tSR!_L^cq1bjnhiprZwB;|=5c4{a^MWEGLd{;qnX!(K<+d; z;qVoco5tttyT$n=+dr-i>pT-ur=`AW4n3KK41aC5I;Pml%pQ4Hxo5gtY6=3Qyn8Om-{f?RE?y zFd=#+0J^FZdpuDEsSi1C3^Rlg3zf=$X5BvW-R*j`(#{u%^}t!<`v)sv^j7RMkxGpI z+_5I{MVC!6JZQdxf=tr*5STkDslIYuSB{7>v7ty;MLbF$dY^Ja4JjWc>`tH8h-X`^orw~iXOR~jcR+p#?Ulr9w z_{_($BtlM}GnMBCyAFjv^)n5<^27SPb!V2?t5x@DqoJ1_X0XIabBdd}+=xWAuAs=& z&`jUz5d3xcU2GHF#XRX8Fc5J_DqD*NQm^xOkMP4YL1W1Kqb~|x+DYH~ed0h)%&j*9 zt956k73Wq%_$bK5wvf|ms@!!Tu$#HF7PRoI{YajtalN`L-^zN=S}ZW7UNvB?cH6&5 zAi}QTP5V1%+oHRq5!jw!fkv0GlUDcmUF6pS0k04;=2r6c%)Amh{`~1nVcx~yMjH$7 zd$1FWQ5^F6341+$dZ1)6r|Ans^)}#uP6oO<5Awsq8v zL_?@KD~0Oow_fFTjZ~5YgZdHH)`w|cPM2jCtN`7a^>W5j(a}G1tuZUlB3SWw(u_SU z#@O9coU!R;oR-j39H%g;qPbql*J=%6`*q#2UodHfIsbkd(`ajfZh;w`u(D$vv%bC{pyPVc*OAXOWkOv=gqjVA0=w z3KqjRA41{pTrqHKOox=BN~zDI+65ohfcm2_%;Bpai1{SN=72k9+bRHbIk8Q&$NeO> z3T2x!(?H`fqR(X^u9C=KtXLY7jeb;sfmQH&dwu4b{vJ0b+iQYdG^_@Gv!&a zAZNMQbuF>(v))lI_5uxx)ErGuyI_{AR4pzndr2Fqhy|buVNl8y8x_t!tdouR2(R6? z^88JIvjVoza2Iyje}7$#zTRFAn+8P0@K=N|#Ch)`*?ymSck)BR*!__NyS3?b+qH>I zkj0kX{Yo!J`)!D+>PxP?WqpOpD*_obQ9gji@oqh*uQ5Bdt)jHz&K8!el);@^=dpfw zZLb+#w)#I%17DX_x{Whu3PMBTF~QP*Uu5PL%NNi_J>eZNV9dwMK?7XMejh^11*q$K zoBT;2-eHQc4;Y1Zy;eIWZP!1&Hm)CFqBL>t4k&#egNueDvEv+e3Q9BD_avC_RYsH}RK6d)tvIgYRJ99H002h?VvbIK`RGH@3ryR%xBY%K>J zXKyUfTeDI@f$b;M8XFoIDhMI;o-yD!TV%2eJ-trNkfjvn@Vt$2p<^T>ajPoHnzA_} zIFWN7Y_S0OJx>JM24LpFQ2nBkYP>V~x4btU1H!Fie)pIcix$xC%;PjMNM<^EJ~(Y? ze3dU1xp#>Jl&j_Q3&pTYCqi#1uQDp=O@8n_UZ&DyL@A);8wAGCD^WEGLUi1-j&j7h zNz?+RjN#7)ndUrvUe*)~Te81PNp>1*j(ceT)B_o}l*4yU6RfX0B=;}86xvSI)xvXM z8Gz8=Is_8~YPut>Lx!#VD!t=8QLXgxWf1;Z(rx?c6kF2o)r4g0K&Ttz?#qVp>H9TY z$hQ^!HC23K_8-ykZ?+~QpJhLb| z^&96i>(2*27!uWheB80V*qgtkZ}h!Eo+UWJI+Z&HUY9ZKW60t+OLP8dMNa_wxrRow z6Ms4gReRoKK)aBCaG#C3 z8Vmq^%Tov!>p&$X3^K4UM_&I6$? zV=?dFP@aZCBhc)>P%Ga93;KPOM{>2(KTk zgZA_|#5Y#~GL_3C76QAqGXD0vR0_uFAo&eG{lU!s!vY{c=>v?t6Bl?UQvN0|>IhVvj|T@fJ=SXCW9S6D?0sh+ z1;9OYiC5o>0a7kbMZEQ^LB>n_?fQ$R`_hpgLu$@^LbAo1WNX7SHAKba8>~mGW4q6c>*wd%oxPjo4;3qi=zjBpBK;$ z^ZUn}u8jR~(09JH&tA&Pn`ARN)IPCfyO8|u8|2MN*|e&-i$9Q>f`Ic-`X+P%@G8n_ z_VdqlMLkq$lLaGQVVWDl?EZuvD^bAOLYkg&hecGk{txhVTVo3q;Z}fq-ikN$Q?7CG z0E6N(ku_Rp7wwsC%TX}2oBBYG0LIewe>GFLpxe8z{Kzaf>wPPg#j@VbTeLyqQ#+w~ zI@xRweFNi5yL1~RU(EeMr zxg-KAJn<5W-ihdXg!_~K6AR(`B^Z5BtF)!&2Xt4B4u4;l8TX|>jLoqJVL$B0wlN=a``iya&1|K9b=DQPi7u#|?q=gVl5#MM%+9f=(DDnLg zV9}%8bB4rg63GbQoMVWIqU;EnB~8CnZddTicH;NgWrh^9{U7`>G`}rXz9q8S3Vly5 zo{#5qIcD>xo^2K`CKy~kH+-zq&kES-Xx)5pHBae$vid0vufi;v^lxds-IF)0iXvFf zUu{maXUYo2nkDJzn7H^k4me93-U<}z-erRT;-zR{aVDKD+aR}Hj)D`2+k$#@<6Gp0 zUgIJZkJ1Eq9Rx&y-1UHg6osnHlX)I~GNZ-Pf82>YrVb>MSo3h0$eTYfsfkavkJSc> zHlT{&c^NOjqm8}KbV)6j&YrkqbX2ZUnszUra(ZbPB#5@z0bEBb?)sVW7Y8hFn5vR> zq+d(S;ND*cz#7DL1I#!&$!9rs(7q90acv(*jfSci{kmNF)yJXI z{vj+OE6~=}Yr1KJwUQLQ(-*r}uW#EE(~{KHp>u3+OGx=~%!6hvRg0|F7OX4j;qAK* z{||v=MUJ}MIL-#Q%Ncpg7h{L6D47W;a{$NNB{!3NDR^C3fJl?im zEUw7R(~c{#KW#*mSzVFEyKnx2mMm)pzxqsTeuG7$MN#o%t82`->7Qk*>TCu&@ga`3 z7|u~rH5Ad+BKdBaDHe@avn};o>rYO*@H{h=Mig}4s73Lz^OZu`Yf?2W6I@fpk+Q{o ztIhGpHkKM#CodZeO)^C6D8Ci zn@^l$!3gp%pAQeW#+Shhj@(;Cvhap{#+(;DQGb)3fIvU2){w4Yym-1(m;>3}CXJ~u z?|mY8x#xaf@SP-?F(0{NmL8(3!>n{;A$Q@HOKEe*{tP&ytyxLe=5;?aeziI}=Tn@G z!oj~JnR-w#4|OXJ0{+TNHe|A1wv(0!c+Aj2Klz94gGG5XWCc#35K6cmw6E#^B+kgG zFhG4Bc+@B?C|vlL2cyl$r=Z%nvD;JWuGf2FZts)d)8p@>;M2%bO%Mw+2mfq3el}oj8!6fpM?OowP4)$*lL%CJ_Ed-NuJMgw9J^;X{Kz zz$>?o;OOMez&8EK*;~QEKFxA`t6a^udDMe04t7~8^?!KkSQ<+4gG-zb@PAqa>h*6k zsBq!JMw`Rz>wt0-Nvy0peU|%^BgC6Jibu?wOwQTy2UUdM^ck?x>I*@r!xUjN6~uSF zm>xIjNKc+))a=iM7@c>q9<&4C_ySw%Y<>US_3e-8AIugBFLrIO`=&`eAuS!3O+vgR z)2YCly)o`t-j61`0;H^1NvV;AH>%)fu2L?P>h^%FO8wt6r-r>k-o$+)xeV*v>^(MftsS0b{r~hjrzT3(dPRyHe$O<`(db z_l7(rH(rI*s4<{A@76I=b!AD6t<>L`#l87TQDcA70_r-9zN4#uB@ty1(#jBVZd_%qt?xpgyl(XAW z+YZfKoaL4Avw?qY9^#Ha4kWIY99dUJ3w^9R$g+B9Ul1X*$}WnAs7nx0Por0(xMyN+ z?GV)>@MbLs@x29|eUI)ei_M%=^G%F&B-7t!G_nFDzUZPJ3a*)!nrE?A&a)=-`U_fX zxKkL_2eML2a z>g->XgRqmO%CH zdi<$AXMBrepdV0PQ^F-n&ag)<6HYSpm#}$}8f$5C^UWTTb>Er2ENIF86^w+j9d*BM zQ1z<6hr9b%W(SGj#0fph4rUZr3E23V5_R2G{ah9EvQy0^c+Q2Aq-kt3Iu2KyAfpSc zq5p$9qP-mfdE@D=FuJULg=E#1Z2txBipkRW_={jI((Dc(__e^!oP%5WHC~9c0>d|| z)~g8cOFf*h78x({oCF-^vi>3OJaEzEM2aS#`-y8;M^269<>mxXPF|%}MPc(`03h3wQ z{QsJcI0b5!%}|Yrix!BlI0KHmqLAcXoLkrNYj295JIf&Vm#1v=4uFfS)w#^iyQJ#N zM#FX9*^ry?S+@E4Jl{y++X`IC07*ummKq3gpgdsz=c`>2f%h)b)w4X6ik%9oMY&T! zfmDZqQi#Y122hW02zIxNl3)od+941XJ>H#{rxY$#xc19?nSN_8x_z(4xz}#Bw`4+M zUF?pYtEo8TC8HbmS-F4W$-wW9G-N7*{n{{CZ|y4xB~9Eow)(B{ZM7PpKDPLPtk?ah z0_(znHfcx(7a;Q%NV;fi`y!*Sh;OWF?5cRewoNO$=HnHypX@O z*&Z{4Sp>c(kz?_{94N)m`tivn`^gGPzYX$}x_MN$%4J*r!0l~jMrMjZc6~3Ng~w^x zCDV+NfJ_*>UHDrTN}Z!EI-D`%C`hDQ@OFqSS;L_sAq7^X@%mshkE-36{^}dy)cTNV zPx?Gu>q4|MNP9H6<57%(zPL%Ut$xc@i;#n-N!!RGsPj_D zT607M%hI;z%VjN_<8N~klJbXNU%emjrpZnJ09Wtwk!L^6tisegGg8wX5rb%Hp#-Ysku`|V8_Igm#;8B7^cmyZ?!lhcmo|DgJUr0Yog3Wn+I{HP{tUHHXH*@ z3~7kojtF^ir|fPV+XvcUZd*I5!x+OG29K)_V-9RH2CPAhLAo+DVr0bHVs1|34I_+4 z8x954VoYL9hni`jWMPx;l#zyP%$dT9K=FdRJR}v;8nH$(M#C&>=?rv+!xC!6n8ll; zxU)F(DEqBPo0U{qrZC1Z*m+1$<4j{sg&C%Y9Ag~&qeFrc22uvpfw^UkSo0Y3VTm_|1h< z6h9%4kl1-fnje(M%hAKVm{Q)X?MG&_vtgh$SeUUk9bv2bnEs~0fvMq#hUxIFGqN(W zHLQ(?qO{Zd82-k?@LgBTW9Bv;`KE`EW03o&ZfRy^W@}lS43VpnW0Gtw);^!y$M-fL z$kRj0G0J_@(77KjTAZ`;UC^!NhF_P3vVV0Aug+uVHX6hzZ46o)4B7#EQx>M_B57=8 zZ4&j?#>0^mY0NRqHXpj?xu!X$!_G9&^Ne$!bS-+eZr$>?Zju2ja~&bRlJ0|9^eOaV zNx8EZ3S1kUm;s)s^w}g=T0LEl$s9mu#AWdtUlFf<$S(am@4^AhIFnQl#cp1igIXBzUvhFXkS&pJ$9TwKBDaDeF@fro-j8J8SfUDgCHWzU#VuG%u>_Iy-U&`Nmx5 z*5?}u)Hasth_&}0sD%t67{21g0I~#X`#+PM^x`=oAiyo_U%-3dRW>zz;tqZjFND_k zO^5pPjXotrwEK&6C~P`85*kO-Li(rM-NhF>AA(FmV=&3zwJ?tjml{t+{N&THuU zpJ(IqO#i8u^);?>YWkm3?sI(GpVXV`eNVHv<{A9PUoow7j}w^sKBwIOPcrB9=;|E{ z>bcMSjX$}U_cgAu?4MKWea=ADbJo(?^nFjWt+q3?GPH&yOG6h}{v)z~N+xZx6gI{m zW2${mjSn-Ug87q9X_q!7>$)Km_={)J^*-lgYjygpwS6B`?EJu`p}k(>hV_euKKS*q znmrSLfXm>9_&))UfY^6P0zMv&C4SP>->DP@PpS5HmX}ZCGWgAIi9_FoX!<_u`E4%0 zRMwX<^*+y5a9YI5#MZj5fs*VEK9+~OJ5TV5U*`GF3qGgW@P2bY>}CCpYn*@L>OSqW z`R>0>E~)iC&#yG(nQ~#pbCP4C5uCW}pVH9y_&I;!634K04u$n}U|;?DW`8-C&l2_B z5RC0<*)OG`@7p0l`k!;kpcX+F&$C)-%rfR0*I578DfE5U_1#y}319ENnith|pMA>z z2^d|i)Xlyr422zO;Vvu+md7#>g?N3+6{?+lrI=wwhj}$?%>~tul6Pg_qPAZOQ2U0b z)cc?4H0@t&5^sd+tb8-v3KJdnTq`eQB3-m5879x;wg5EQmJ*wwFttUmJfHC~GDg*p z+9v#MZ?SiWyJD<$C9GAJ00r#EZ#fk~H_!hMY^N7Or>mM%eKe$K_n1?tQ>;_%_NHHw zaYW`+{2A3Nv+80@a{jrMzHv;^jgElJQe(YS^XH7K`*k=SqMq1j@o$dRPpYPQO`vT5 zkql$4m^b*}P%Ts8hKuqUf$0 zU)CzJUD8k&L609Nu>6K)uIUe+vlE}xC+wAwM6|RJ991!O;ESR-umkv7y@{C9Cv{!ZnZD`9&3gt^#c8VAPgb1X zp~kW{1l(3JrFu;k)B94(54!Brq}D+;vTs=8DF)~{`*@}j!vr#uv&5f=-!``9cS>9E zKGiXt@sp!#!86U7c!t;AGwaO1(AwM?$r*YpP2;0BMqYuOX^*_4-G;HV2fpnCo7bLU zp7-m?*O#^PA=GKlkLL$xO|Ds6+&S;_`*C&&aY-i?f8B}~o2@kKO{}@5T-xl-J2Prz z(q!7snrBU{`KEl;OG&7x?@+JQDB3vqtisw|nii+CctzX#`Yvael)bUMZjB11Z+?3* z5vI&gwpS}`q}Gc<4xyvJ`tHIcyun=`qv>AmOZAJ7u2rsUTjU}{9_9_nJnbg{Voc7vzy$+&rmb8*L^(tw$~|Vn)=1bd(U~cenAbqtojuW z=0cdRt?~nNq2n{<>jai#b35o)y*?=z;KZ$`hrS$af!7G-g~ z5P1~e9@M{G=s2gr=V8vz5)}ixFI;!wV>`swWPcs}eX<@6EaP7LyAOWcTGLi9lkCYs z6sPGi1!sOaWJqoDEnVqD+}t^eJ1`9Yiqdt&ij1;wAuJ&AP+9rUl7M7`$=T1l;OYuQ z8vR*+dyl-QZU0JtmeEZ=@geFUD+SiSPAXSbJ6jK}e|8Mhj6O>|$j3c1rAPr6oBC-mR^A|=8urlPw_`hWM2%u z3vX<*{6ha2F()u&D|Qp)vIog$MoSjwQ^gkQEzgqAgbQOU0?+NZ?l}v`_FtW@X$j?J zqg($`@1A?ug+-hsS23@Dh6R;#HC+vloUWFfuu3jkYQ4Yzu5So6<$O?Z{q3H44QPrE zyQ6A?fv(7q8=GiSXq6TugkppGyXL&pc?sl-5Ij!R3GLWJdWc!;sYT-f441me2;R!@ zw?g)e40H8TbyaP(jeNLouZT4fn3!!c+Dlf^T%8Ald>0&6{p4F*7TIPON%wl+;&x!C zPScAC-O#~dIhe2x`Yf_+4i3Msp{&g>io>|WJ##?AZQaT3w;8E9J*_?15%QRPJM_%c z&}H0JOonsJCFuA{2g9AcpOz&LLwvsWDEp5oIikO}jLO+I0rJbEiED?(;dS*0YIcS3 zx&?%-q}!CMWuu4#qmsS{1RpY{E9Ys`iUhgNX!y6tY2dwFo|e8}n90}ex_y8$DSCN+ zQ+At(t=h)=J=+AaGxw?GL*0cij(29AWmU8sEnIw^HCM?PyDv<4aF-k%h7iS$)A3%~ zDX*5ujkr|nx@q&hJK44Yew-ci!L|x}?QWBe_3m{cYkZ%d?>$v4EZ-rS};U=|#$&IR8}4~83S zO*70ptn<>`Ej2$lfY~zK%C-bGeE@ga`P4jNZpO$tImG1%U!zO{V0K1j<{)(EmKgqw zIy1$*$RS!34su0+Ab;-|06S zU4CiP9Wv^b+#pjw*3p&*^!pS8tAxLFzsjA2!A%+G+{|wSRl41l?Hxvv&k>p07he47 zM&(P8x@`mzOP>Eq0p<>IrP35kYbKaUA2dk@Ht-nJ*=31hh4QZPvhju2HuQ}%%!Ad# z;}6Od)*n>wJ|<{gB4k7%aEj|K7(ce@df`uq7fS5izy$1Ic8)-$yKMz*dHanNE}|9D zVTO5Rbj|h%87Bgjv)k157p_|nZF(~Btf} zVEQ2}wOy1ZgsBAp5Vg)o2Vw&sB7otQ(2WepZSh`kX>ueh|1kX_xZP%YectxCMUB>8 zZ1-EH(-Z&?OW}2%Sgsh{OjR*Z7!f?1*7ZnZMcE%Zs_q1xX_g0%jJ@r$+3T3*G~{At zhXMjc;#e}BtBS?&Xw??LZcBWIAq4`U zZ-<$J7CT+ZA`KH?`*ooS8qY1h4``lCd05kDqVjv2RH;>?`%F^5r z9)2el)+&fj6(4f0%V42|^|HKWc4Hys=+~^z8Bb8|yAIZA8%zUx&MjAsnvDFk~wJf{*4!LV#4PP;N`Bi5JSB) zzT^1ULupEpb3>)XBPB-FoR#j4c0>$2&U@D}<3`-H4QRKHpK4P&XK$rX+T1VEQ|;q{ z*RY|Mki4a_Av?pv)TS@LFOh+>Z0eh{`F~ zZi)V(-n%wkI33+2aSqQMoN&=vw8__ zdoNhtI-7xe{jF~6Iuf2xpJg%G5uRqYl^dO+-38?J<>6gKXnj`d%#@RsU~Lk!mR$Pn z;LH1oM*5l{&Aew#?SV#BM`E+kWvZ`dh~T*_@_N^acau(Y_Ah!y_KLn{E7&jKaku3{ zOWNzXCGa3-_hd=?BVt3d6C^uEl2+e5UAJ3nLoL$|^u}6JueMkA&QjEP&z@pHcOv= z*9lJE8{KKQV-TV9&8HSw((GD8lFw;0>{Q8@Q8un^htom`D2=pqEBn#dbaX0oyb%Rx=}%r6=e9q~ zX)Sm3MY6k)!!@lhUC}+HG%DjwVXa_j)Yh{!)|$+F^ExA1MA5memNeNK+4D`It=$@J zjb`SXb6dtVr!~CuPYl-Ins~SeM*4Wh-*vejjcmL4mz-g)Gx7~=t<3VxZ0V<(YikWR zX12)F&%g(-rtsF?np7Iq2A+Yf!8G--4ng#(HJzGo&1L%YJ_)TLX~V!eH`27$?9Di) z-*sG1U!d2T+S93c=HFMkuO7OkY4<(Gap6d&=BSNh?q@7zbR`pLq$|#uUUXFBh^M(< zbQ-WPP`0RJX)RI7Xy9yc#76H_2&>4rw#lW27)A0VKD3D;E{@LG%#$o|Jm^Ae9NKMYJL*?!{H|&I*f~i-@s4!JJku!$4dtleBC`EibkQ9 zR=Jld;$w5NDwHmnseZnWH{j^}Voy=5_ZUde#1`Gprx?5Y!Hh4IpRJ{*Shr?+SA(RK z|0)sO>6oF*B=U!G2M}1|b#6J=u+wUT-RcH!lECSx=T1FY z`t<#>`QZabTU3+HS5NZlTQSqiMaSs~dXwturYU}Bhr!`FkXP|K&0d}4da4Wj8{)Z& z>)gbg<^FE^$ny-B(0K6~_z4iwN_Wx5P-xkaPAsHG;&8)sqc~)3hj-*sA8+4i3whW% z=}Acg%)b#AMiea_QP?>4*13%xA?u=G<)aemjWN6Fsd+!=_PgHJ^I2v-(|-3_=%Q74-HN{hF;Gmxpz>VkQY~MH-oTZ=Fddgy^G7pXViH_u zb%bQ-4jsAGMTpu*K>=yJ74ufLL+cb)^Ow@EtcxdlHMj&g(n^Y8->^UHHvMD)Ff}eW zySXO#x9ucqi#NKxR2CudyX>mylIsTXduTPfW)AwkF&8`d>+Q>$P!1i0+d!^qH+jhz zY^Vxq;o*6*#lW_><->>zXT28Pcyr^|L)=KEz)4*C<+qExKOWfsj;xgOcq&tG)ckcS zeveqkk>Vp}WUqp|vkr^HmSV8&kooLUIh%LoV09n^h!-I#956cAay)0a&mi&Sba1-( zKhr>n?c&6JSrfB}c14Br)!=Zxo2;}b)jiB*qGP%`biDXExMYJMw8&Ik_QnMP>bBVB zW1QYCv|R`8>gU@m-s7)5P2RQMhg4OkU;a=i&s2`yu$AFYPv)8@R6EjfJ$A@S+A#i? zZ|d73o8&KjcG4v>oY!p_>s=$KrKGm&dcv^rPqe0bs#I%=PFRb2be8c5Tn2r*Ug~}c zR*1!w4A6+fH43&>THK4&%ZEOP6GJgwlMJq{IlYke(@RJt+&{gss~q^ntB^l!%=+?u z+6W8UVM)Ht=@-o|! zbfg7K{3>}D?W<_bGo$oJNa;+e8eOU%3#CjOp$PXGm=$EJJu3(&fQK7U`gqjy#zMVl zlxpG!$u6yXipF{H$0hoevB-q`A{&+IEs5#(9^2N5@DC2%w#be-$$BhLadR*I`)#C3 zWjU{McFJtcsbfw8n>99Oq#;#4n}a%9rD5N%(3nqrSx#L{Mo&h3er1|5_<9;9`8O1r z&@sd#(Q8j;9VBflS2)K0zD@36td1Q`>t|j3|6uQL5uTmd1Sg)dZ^9jsVRfDXW3DC7 ziGIt^rISly6-d$MZZ!yOZOpmM+1QLU5b6?c)+27`QntDCfZ;u$y7-eoWm8(1Sl;&6TY*7JZz>=?BYvdXq zUw?Dp0IKXARygPONQsL*LQuN!82Q}u*egE?PIlpcV^0}2GzC=g;ViMZkIq`1W^1-m z9?Pkci|BTsQ@&|~@DEXw63X$tf?kyLBynCU>Gttu2$M4Pn(kiWo8}7FPK*1%FOZdF zo^;H;EgHd+-p4==zB_=0Y?KFYwj6*~u*p|a{&T^egH5@CwQ7k$I<8B8s#Va^8e2!c zkves9W9g8L2f|95^%^o}Xq7yge$y{cZ#Ydbuf)Xdv>2RwJ;vTRnYWDhYg^+921!81 z-z|8;GTR+% zd~$mhxKy7bjY6AnP=)lqV6^s3xRJWH>XC*n4N8h@%q0_?^HlQ(@PR;0;VL0YpT?mv z_srqi?z3wZi-(>Hpd%J(73HVjC$DN#jqZEG0w$PC&97y*7`hVMjEBtV&%b9u$F%hb zS*eRK>L@?+xnGPsIZ?mMUClLDGBO4r0-7~q6uI`UJ(6&^q_Km|7XjQlfk5X>)dA|^ z>1i`WwD=$!NV0q7mndVjqF$3Yzjc=?t-Rw6)?~k26i&BU^78h|$%B~}M$Uyi?{3D0 z%K6UBBW9jEI!qplP4scwjP5={o|kjfT)_8ZZFq!n7A%oNEkE7z8>1{+Tr~*QZ9n-n{A@KXkHGyyPz@l!&XBBY|p+v^NLAP75Z7 zNr~WW|2BwXXWhnY3g+o!`G8(NbXWHvcsdDf&jbPI%s%r@DssUJV5Rr2`5^Z1=qlP? z0d~@LiTwRj481zBL635SSz)_ZWVXY~nZ?VX;>dM3AkhUcIn^&cZlj&)KgM!fQtx4+ z+fn?%bMrUp_Zjtqi?%_RrNrmV9!3fU>q{qQ^fgNPa=N(cI#w@WU0Wp-pS8AjhG)?N;cL^X2p(1(YauJq**&OWQf|Rm7I~OgiU|VMpQj7 zRQT()+?QFe?RVm~F>Rx?&y%WAgQ;zapqJp}YI=&GwmpEitQF;SUeiJl*7T>FmN@`z z`pA+6=h~U7K%VFTNkF#0yx(bOe67hsB!NQC^A9}K^KB^zcl7&5jrEU0ui2XH)Rn-5R+DqhDk$r;osZgr-Ai zjDVPSM=4Z|Hu{C3$o0;q#?#Snlx)g$`CdC_bGPnIl{W-}H$D*8|6Xt0>R7eg03r?m z&!Lv(nA?L*AnALxdq)^#`9H}l;7?|NULX}qsDmb%|5pop(F=iDcsi2W&gP15gt#P0W6Sn1kHxfavIYS7~A*pPv)?s^5;6Hqe znrQMcsqDw}^IE#6E&KZGDiALnL8OwK)rNg(fl(gnOn!;nF?|l+*o(3-+e#wKAqD9J z6VWg&q*`IeX`D;y(92D&ORG=OAO)__K;YV`@itREP*oO*4;r5V=H(WMa8Z#lK`<{3 zTK=|u@1j71zOo!D4~$#_ERntoVI<5IY_qCtu{aae-CFze;^!MWyZv0XLALD>rS=>jBB4MF_PgXKagV>4APRK3B@qVGGphQB zl%9yQH{1SW7CoT@$7`>o@ZyVN7eA7pg|gTdC+VFTiX@Z#>KZGe{U_v*JcxqNU}6FyIag!kjlNc^ z;m=@!(D*4u*zEp@ax;e_BiTywrL`>SGGeT$o2{%JyA?$Re`x!No0o%r)8aXQF%n^I z9@a__>`411fwsl$FpVP|pxs(RK=^J9w>id!iJwoYw`{PFM`7)_kWH@~#@wqUFgKcK zyA5kcY(B{;i$q28`}NA%PQPyBUT~<2Nw6rY{-~sEhTfH_Qrrq?apP}?tc#siiNr%f zQvr%i%@Ikw_n@%I+D*|dOS4pm#09swQuKv)r-YO4hkQY&4E%Ib$Vc>E^AT_2T85QpD|8WFQ{^ z)e>g@N@G|X4X68yjEY^ddMOc6oL>wL9->_=HSJO=moJ_fOk*&Mme7(kfv62%S0d{; zD`T&6(KBBl9;`)ObxL{K$om|T`bnCaWGatN*16A<*`8s>TYhrGkFP*13{T@o zw>fyHjZ5`rS@R8Ok36-Bhcwxe9@)kET?h}sl=k?X$1by>75K-PZ7)GXEW+`yB;Q<- z|6xNN`+5bfD)06D(51q}dX>rMUfI4W>C~<&*wXWg3F$w2eu*{Wcay|j1Pvy4W|`a- z>G{)n1cSFYlkHL09=*$p+Wm>y^Y1J3jh_HR;SlPX*UPGA1$s17Ck6c>hInygvO?l@ z@1rww6@7>rLeac#aSw{?FE&|GOLix>R7b(6;y~vdpJ3D8k^#Ab0G2#nD(X*wWcMiP`Q*?2`0GBgq` z%`;H#{)2SFh@-0bm!VSytf_%kzaM_^$wnugyzf1gShK|hamfZL4W~|fx2@<>UqT`_ z-^+EMUP}Qy33FA_3f#KOm!99kJ!&Z!esP*n7dL=}5oqE|RXM!Fp+Cw(8N(u9ISisw z6f)k8p+Ey9{ByHDhx-#I^B}9WcZUQzp(=sS-05yPqMs^9j0rsmKglP10VVPQ^YT}& z<&WVes7>vNSuful>F^ycwG4syZpv=6H|d^9E?gamV4B4HTjcT&&o6%LZl-C^a|a{7 z!l9ZhNe-4O5O$yIdU@LSL<)@Ml>ZV^EPJtDuF!4TwX-4TET4$ZFN-2k;Ch8FnjW9S znk7i19kthgV$K*I<~xqI9`73)U2Rr_e#DKjQ=HQGnjkap1qjN3XL1Rzs&cVZ4DC?X zw9)A1MyXdjsH#=S*p6Bth6T@l{KM^`(LnSHInPlF0i4x|Vj(}v2bhtAYQsYJW8ZI> zw0q*^gPSQVluRfa{c?tc&mK3vhn3~RuZK+WHgmT+3TKOa>Zt`3Y5~FqEJ+q%_1!Z< zFmf=eR5KzvD41+`NGi2MLE#&G>K=K>kMooyA*V)iNEr(rNH{`R3N=WwQEanx-gasz z_D2V$0#-Ov1cW4pD&iI$CV+2!dXw1i&?`bdOkgzPEQD5=-D$KStQhX#zqrZOI$Z*p zjQW!q(-b})GKl|?+Qm9ql_L8!GMSY+?75F4#EWX8eEW5%KkEJ0bYal4%GQ^;?CR?x z_h%%xp815Cy4DX@=cX`0h2hjHN?YXA-Zo#R@2YP;+gh!pTk1@%tZsA>cF&5c^)sgN zuZmXiUKY)CD>Syu9s6H#a<_t+91Ft=hDYD$SQ!7d?*K^VoSps!&7R^uzI#UtUjh`S zbfj{>x%b((cTTi+T1(p9Ua3FlsR(c!@|T!QvQd7aK2D749Zd$Ggk2H3*K-KB*SU?9 zMy;8RJ&F};!B7)2HfuB@l8X*r7W*S<1<@ z-W5&$Ry^J!n})d;7S_dw)7Db#qstGa(hm-t&kSQGqFt(a`4A@j+IlgpG?&hGdPlTU z4(55wVN~zD$}7np2pp~SAH&;4jN7ukQb9Hl{*4qtWY{e3yUW=d+Qo(GWBYvAe;wKq z2S)gH3oO>Z7Y)jS$ZQISPXrs^to69qJOi_sqzi+!^#YAJ6I|C74_mgUKh6f~`uJvu ze3v`IOF~5BH#G02rrbZw0J9>@(vpR>2wFR@=9bm|ExrkETr0i%Sv&VOr=W-4yLbNl zBJ3j_&z>@~tt@y3sea(w)X`g5##_)eh1ayOQoTKMH2tSDoOy29j>EF=xsXqzkeAN( zE5f>yCYk)$7~11|>Zl=Sa?9pPWIiFx7!o&_Y|vcGnQOQcx7!XN@3 z0u+`a4uDet7G#!yl~8Fa^GJjlkTW(7w%eXY8xhehs0;;x8=SF|%{Iv2-3Pd)!-*ZuZ@4Sq@LWL% z6)F8_`znRd-b(`0>q^pDLqqieN>r~Hp%SEyk#r~W)*d0>-dw5LMRhzIuY9>6n&4R} zcb!x@LnyFHg?#FU2JEP-!72$?nzkocGdo$K*%@WVXZ?{L(Epq?g7P~9^^eXO&3$~* z+CT)Tyu3UK2I9)ofU~Hm60U6NrWs@L>vY^MZ1S$AAQ#S=PMD4k8&pTN&o8J_D8!;E zBP^>u0@Jz3LthcOwJ_v|821iof5V=Jbqra4AD!q&xQM~EW_Q4{Bg2NyC#?G6toS=-=URCb&L>(-h*V` zYp1vvoz3@o z9FD~)9H8>#OYQ~McP;8d&+U(V+Gw&~bQXRuS(o*olr4Xzph5^yO!p*!@Q84;sfhczEvt^4E`( z)O*PN>8=W2Oy)yprWI&ui*+LBVg_rC9no&IHqWUF?=@x=E8cYjfIOrdBI5Bt+{PFU z%%Y4}jv}A=<>h z0`=A7k6$BSttBAD#z}XuxzYafmJtOS(SrQN$qSuSTIInY=VHZocEG;XbY&^DRD^Pn z$$k@n3Y;{$Tjj24PH{(5Y4yGpYm!s#V^Cc;an}#WcG-@r z#fI}wrJ3|av4fwW19aY$SsHDYJsd$cMilYU#|Wd`3y_2G5wMSMWeW~b>-dz~Zniy$ zLuJjV8DW^2nd>IQ$JS}X!Ul* zV=+0WXpH1WjSsaN*rB5hX)f;~9Dqb_Q_V$PWv~p1QwEB5j>b^AUUTw(bPAlBlaE$U z5*EUc7FB<&>lI#UP`OwqwXv$VI;3>Ki#T_PjV@5Q2@F z>bDU_;%8T|IDvt{Ap`YqZ$)rP?<$FkK~~inL^TcJOS1xGGi$4eAu#mGo&owP+_hHT z;k`w@{X;F*K^BdMs2j?t!pY(f)R5Q!jJ@%l{2z%?v#5SSl`95rUr+PH3_E(&$8*(i zgHfwgew3AZ_)Hs6yaK4YV||wNY(I%b2c}iG&Ur*A!Z|6-av1u&*F;l|#iX$HHZ`)= zNnB4$EM-~wLrrm>g1DA~PJC&+EQ(y$+ zKJZ#`M;qXUBbp`^Q<2DZ*Af*(HAH>Hi!^g-Q?F}Ygrl6{O`;EK+FzCT)Vu#$7Lp7Q z`NW}IM=UPO)B4{Nt6mNX+;}q;pGKvZ%K|u%iXd}-*vIU>)z?Q-(j~xe@G`96qp(Zd zZ|~H)PDKfq^HQ<#o(MS<^V#B3o_udgGcMWgt;>Q2e!&r=p8Z@7z|!;?Cb*Egm><2F zznh3CvO-jNzA$C`WwQ#a`uD#Ahw7O5 z#-+v5<`ZW;YS# z;97=CHp&u2#9i6q%qLqeEM%agsC1DE=bh!Ek@*K`RQ2tPF&LkXBWLt|A5N`dTlNxJ z>g1DF0Xj$rfJ#HA*Q-(J0W{l5u5UI7q+$fnRY-Ms{E+F|d}D0J1B`clb*V3jtC zeQulZA6yhEPo?|^<)u+c^)L8Z9C5j5;~E-0>Nz>XzBqVPR`zc>%X5`9$+mj@no$Ak z)~|v7Xelu)t7L7vmzXd(qL#PDl5_wbx_C{(!XmtFam(L#1ofol$VR#t4&dst;B0 z%z8axc;K9>KS-w}=Y~XEQKL~|4XL?^()$F0&qR63yv?HXAsV;SEjd8N5AvRcfw@Qy z-)e5LyP`pLbAEhs!}jZO47}?-zk)AcG3!V_ohyI`66~sy00;} zhvc3&HJ=BeslzI(Fl&D&G@9e7<4tco)VS91jbAKrx%mxT6LR_NKp{b;iKWzMhfre; zgX9|d=*54?_ogPMj}T|9?;)!5@fW(z;u@TJi+cJqDpu~O%*PKkeF@fTGkU{U1eI-Z zrjCr&>X^X%$(AU>WjOyo9C+&wdN0l#Rq6?EAQ3}P&+Zp-6R87JI-lIC%N?uhaPpT+sAs8~l z^@14T!3PqgLa$QBKG(7@ClAcJibkU5iF zQ12Ju|M|Zu8NM<^nSAkS;mOa|$&d)$A-|i=H2=A|e|kn=<%El4e6dQPnhQ3{n$)q8 zj=VO50u($C1mBl&Z;rubqOMzi8h`qhiXpH%bVe_E2Y4c)Ihh>}Jjv1fISNw5pW)aT z3;G<1+`N>|5N-q!I@PNE=BphwBp`oQpQ*2P$3bN)qUe^;Yw}WZ))qNm! zJJDh@0CuaJPagP6{bO}(IdIgG-rdChC490Bfi3KO>YIPsrICM_UN>mrl*4~fm9G6^ zJ4qeVhz)B2@h_+zRctL1o$jYAOB%UY&@JfHVlwbuLaR4}X1vUbsHzmk$b5kCBjys# z1{+Qd_xDU+?NN$bVvDFPWSo=Jaahd1T;^WwvgR|I25i3#T!B6U?wa1eVvbuX$wB&D z+T`4mY#U0?`X3V;IjZFzHCHN16BW)5`V@TklKhE*IZ(1~30giND`sC$ISdIs!@zJba;PGnX)MZ3OKgLEu);CF{u=YBH&&& z0v(=3J)=nayV5vWz;On`@0m!4oH!ja@4DiXP0LT}W7sIzIX{E~NeKzavF6x+?l<4q zuy@43Sp>U~<-(YpS`?2fq*A*9oI$3w8Kz!vPa_(+l!-6Qyc+O*!7y-yYhkUQ+R0}pYh2_?A-OV2F%mk- z88slKjE)~YJ+<2s#46M>BMl-+Qcg*>j_+d zACB;Yv)AFM3UO!b-^L)A9=>OZ_f4?#74U>5EjwBUde8~;fDcJB4&0Lp2o28?*WJX^ zdji}ArwvEw>#OBmlt)>q4WnqunBU$7B3h1@`_U+@(N7DCC_a8+sak~mLhEJU5XlKB z;5twMf@}N%$EA4pd|qFuxixK8VKBzBi0)Y}COu^#n_pjA*XkWuh0W}ixIc>je=yIU zZHLrf)ixqAMiJr6%X1p%zC451Ls#nmKh9%Ks?m>KYD?-)6vLv>5~}Eu>ay{+j)A8;Vum^@I98KzxzdrL^}wcvK_jx4IVLicLnziYbyNRot=SWW|k56rABV<&vcpdZZ#pm`i9tu!omH9I7+i zlD1E(!_QB^9_Z(S7{PwU_Al#bcGCUGZLC;5zys?}tHEUFnV(dd(NHC24%)outSM?0 zQd#0dzz59j2S6Vl0 zWS5>7XNz7jPjFOK`My^WLGMwdih|Y5y_cr{0t;EEQ3b8q&aap6b8tzKtL#{g2rSjq zk{+gxFgNTFXLEX}hqdR72ev{?o^~tQd8;R!GEPwW%Q=|7hr>WKe&DzCD^P!E9|+ud zbkQ^W$V#(+SX2a@#9|th5dp%-$=apv4?}2j!LbU-StY)Rgsl%nC+)Gupgt&$LCPSV@# zm2fsGdk(Ilj_z5Pfy15<{Yd3Bt*rhcU2S!x)y{O0TT0r`q`YTs5yynqS;=)JxhDU^ zn6pXOLCQkxt7zw47#n!khH0vdXe0ur4Vu#|>uorx44& zD-A%p?|)I1VKu{j1;(j1IdV;aEj*>XU1^~gz^5lB#SYT zqs7KEFG{Lgrh~HUIpIQH@y%f~CbzQ|Yn+}2I>jCl+jz?&M4FKnq+A?TwIewQDE15! zk*b`6+R733bo~%vll76vjm>v10fdPeszo@!yte+Lp3thW`~vnU{2sVh7Si!tvw+mc zc)@e~`qy0gsVJwbQ^SPAy&*~g;^d@NNhDAtT_c~IKYBCiXIMA!i>m*-C{)Zs?W^!V z4hY;<6gt;);bR0>$fCVwdUpLo#GbO;1mRDyJwzOIREoM|Jt)MH);z;N(uA@?Allt) z@gfwkLQI)p%6)W#+r^%R6>VBJ@9TFcc|lIY$*aU&^^X_0+MG_sA1Ld^d>3$^s`(S=qv&pY1fS; zkl7_dGoLuIj}1_$WB+Tbio-qcz)k-(Fzq&nZE5R zW(i^@Jz;-<=Qyw>#f>P1k6mW#XN{!MQ>uxucPhWLI{EtA$_kPd$d5t8wJ;y}#AeYLmO zt`>8&rNW_`RS*A9gGU=DVgU-zVRxe=+;;q2QgwBl9fnLF@5TAOt%#V%JQ!nr1tKE8 zLx50X#3sgnt9cy?PAe}Gxx2N!rkz|EK^F6VwHfv+<+;K0ee0&92@Z7HuQMS(0WzQb zQ{n8`uCb837guP@M$VE?2yIlgSvo2&P3aX)l*){5T!1JE0t~r6U2^%y&78U#}BY_AktoJ-UQ5;d$_^^yio3pTuANx~Yct zEc@O!Aj{2=2kFoh??)VAE{q7f+{#!GjSn!@oEFSwMvq;RIcimt|CiT5AZ;xKg)F^9meJ zabdaAtTc2>4U(|~nz*5pvFAq>#ZGJ2-&COq?v5RKJpUNveu0SAO|SiiIbV?XvH$g= z8vp&l%0Mt=lE&>}WA8QAc$K=gUy99tyC!`abj19@Fg%EZR^cR0J zgoc8Ij6tY>?2Cl7)YPhwmGEdAY|aD-Y*hL}!zw}UqP235JAi+RsXgQ!n7BoaB{ezt zSxs^{+Z2MA>ck;)k44XKtVOL_u5WFrg9o z^LBXiw&^gD5^YW0Nx#9_8w*UuFn`_=Efarps1OuUv?%~jp)CF?3mH7Ie_KywKr-u` zaor%Xh$6(CNT*C>9gfjTx`(gE{Mh2fNPJr^)5A!6_EfP_9=ZF2CUj-OWaTP@2@XSh zxk`?b8rbNKL0CYlkk_g2?0(kr{#11ef2tURznA`_J^%=b4Q>ZDOqD@xDeEpac_3aI z_B!gRxa1g4iVqspH)Iu{{W zT(9+3A3f52Of2*lL5Np6BT)wSbmu{qK4UJycIfCbzgh$-fr<@*?DaNjN2y?N1*l9kDi?Sbxsj-DP&_Bam*h(JRsY9AGAL6c$Fp9CioF+Q~j zU%|!fv7QPo{vRmHRNMa=DVtQTB=J#`S)D7r!#&1U;y$%2y4tL*UdnrDNnNiTC3bRk zxW!O<&EbN6*h`Y`LI70I2Z_9w(Z88Kil}gUag6ZIj_W%V)7B3C}WRdagM<%-tI@F4iQw=H> zX6HR8TaasKuas6pH4Y}!uD6P`=Lskp?AMK}C$M!2yraQ=0oE7dI~l6xwZiT`%xNRy z;Tht|3XRU4Z7zx4Th2bc(}!UO1JNqm!wpqaT*52wrecN?0*#>jYh(rPE!~{Gs{Ms+ z3db}nTYb7Wevd+?G#?Zw{_tI0?y9(!wNABlutuFKtgX8eAe2>%Z+%pqf(L8@5JZ-l zrUkOO;D*sIy?D@S%UZr92V2y)u;}1wP1B7vx;+^$AmZM|a#_XcNnfo7$mu&WpJ+(u z*@(xxdYp}n0rcdw_9$FvIRMRlVzK(N8o9z)EVAM+I>6B#pn<1){4;#ib1%bQSkQS$ z?>uQ5nAH8<0})JxD2%NV{G9}*Pk1M9SMQSzm#4aSm&%W!D@&~7tw)eQHWdHdZS^ouVXo?+y5@!FX|-Wh$<&S` zT+rW-TGEL>l`S>6;*Zp!cqcFXs<6#JWboH+t5_zw?sedPOvo0ZWf`^CFofg+X&9~0 zqu2j4A@W0yEnF*3@($~zW|z1mpNK$Jli$o}F1ii=!Iet(wtCDpjS9(uu7j9y(U^O4 zz{PLwcs4Q|%1AVgq@Q--CXF(ZVDo?z-}FLoeJ5_l%fOQ-hghD)^Uwg+{zh&DV=`CLg(BmC~e#Jjd#@y zFUs)lewg7pxhUS~BhxRqkL`3+5z92_N>xrwqRRdeYzs#Zh(MS>Z}mO#OaDW~B1Yw~ zgYi+giEM?x&A81yF>+%3l9k7PXGDG`XuMMk9}x@hKHtex!<+As9SvL)MAPM!=LP?qBRvyikN3%GIFGv_LQdjni?zoF2|2RZpEAz(!IOm^c4Q81z$tgZa!Zxpfl_XeBmX z7SnWumeqE5Xx%lk+dASHbzn`BTt`|}GIJCFu z#PSbtje;wSVeD=8xQqnV@7=A$ZEWva5ePW?dAbf>4i5*X!1*{$3x&H~+-ZYRLe)Mv zhh3&4OZ@4A|FKN32lScg#qISrsBJcA{8%)6ZQo&)UadIGbn%5C`e*p_%?Q_8ha~U9 zU12qSyUOc67zuyrPs_?ljtF(<<=Kw5B$iQc$4deIw@Sk2w+i-YSiVcQiRXu3Y7|0q z>=t{=ZRZDh@$WbCd!%_6Ja`WaSwOL$FuC|(H(7{k7W(!Y#!W)+U53!i4+lW}r6#x| zrGwTtKIP8*T{I=@CB935PClJoC6$!FFJ~rN)Gl;c=|R9E@Y4BTXJrV0m8QV_F!^w2pI@ zx`3OgvV(niy@~RHlJ3=!X+hTHoY&{**;)letehXcBgE6IrSOt2=J!%8zZ95iUQ6GX z{WGI4UAcEdTvi>}7@o9?7RttPMTNDXv$PJ&X>QJ9y$TVyKU0^Z1UhOeBr)T)BfjQU zgPB$h{dNj6t+xMDUTJb>u{(OdT#AJ*@1oTH2H9;O;3scPGQ3jwa-L5RL#G{@jRnsB zHdd{t!mo1Vx}<~BZtBr7-_JPhi*sRD@RvD$rP+@X? za!e{tr)|R?YxSAie=+@SEu@p*+i)TXFH%xjQ+%O5DmK(Xt3j%xaC#_%gbh zja&5wuYe@4@26N}scLX)WwetIY<5wjK%&ntj+Kq&KYAS3U~5b8^Dpd_~5@b0;= znJF%;8a*<2-&7!M53>o zgHj1~BMEsmx=O{xXBI2Wc+0=E3mvIvN$`mnsYU>}m!wwe(1Glj8dMfeq;@3i^lL=d z*{F4G-v&!}dPl>AAW(_zqEW=5B4Pc6ram=|mz^7WvR@WKq0H;WF%Pi``r6M>^pf8G zspQn2RT@YBJk_A&{#rM~mSqm=%nXT&vaGIEvQ9*Dh#ZXWPY47>lBVh8@=P0V|R{p30}-+XnltkfgV60vpi7=I`u482Y!X(4?y!B;8$PYh<4g;xrzz>2JRk8?W<^XP zR(|AwO*thRQeh;ck0MT$X2K;HfRRmEQ5IQVd4)7)UX^|DcBg+J{z71jT)wAqm{gRI z^3gA(44YT+5ea`J-*QXx9l1uLngabpUrVJZF*taSMpm-`x2}6t_A?BtG5{-thKNN% ztl$`yf{43TOIt{%D&5|-meaiDoHh2J>O8`v$Qf`LZMroh;hBz+O8B;%7EU$+W-M7- z*HUU+IkO6YDE(u}DOF~*@wU;EO%7ekSaCO`=)O(#^W3!Y47}m`z?1kWQ>B9r@8Y!k&6be>)a^GuBnhOFw>$^g#I3ij-HX*5RXqfnSxf( z;2Loic}@8hu}e`HE3>v0+tC_YchNbaMTB;CvlE%U1f${oZg1>anKSJ;_DH=&+A znzDI?D8BEEV<$!I0jk+w{n&%OB#6Bs60^rSQM8)I`;wTrr91b9;Y9?nZ;v`$d5I)g z)s}H21e*XMDqEXEeWy~G&*?Ji zy?3&ZL|}$S^j?lT0@Rh3;o88{Lbuv7Nbz(llp{flF8}u)6S(sVI%uI^w8E(pDo*Jl zQW*fg3FMn+++ZBr)RxDqwI?Lk6`F&RT_kqd!PNw=_({`3tVV-rgV()$*0S1r=dZ`J z)VSMVV#eEcf1&9?kJHKFF&Rw`A(W!%S{Rf?plwSU$sUBzLV!6$tbF5VQcw>eh~Uje z!YI`>n?IrOs@#y@al(j)CmZmrd@yz-7%|J$Vc*aE!VuRHk8NT*s=bWtbq?>F_hvrJ z*>B`wm@)3&_`}9@0FYi%3Dq~)FoVWEjv{0859@sdD3N~Xep=uu_B)>3M`w^3-MeTS6#5kvzIUnR39&=U z;qUl4j@xlN99urC5xoAIb7kM_%RvLPD3;-ux)%?L?^@H`dXxR$8;8J}ct$rmZAwUr zYOH*L{vabpp-XgYmq&C#K>fG7!1UJ&jZg0P4~Eva6c~ng>Mq?Cy*~G2AQLNF;=6m; zlDZDbvT+1oKjk1w$^6=v7uZZ`i6ynVnLBdt4>`1PaP*bmh5U~hN#w$X`jHf&Cw3KG ze5>mIBDWK(`AXq~P6>ijdWdP~Q#_)otzo;7jJH&Sy>;6 z8N%2%;SAq~>vM4PLCr^&|Vt`gBnhOTR9si9Vw9 z9o|6GkTzHtZ_Jhc@F1VOurIRTunJb-L% zQ!Sf4ObBv=I{y8aNG%-bIS_&5EJ8e0!v~$?yXkZ^(uoEDf>%^Jcb|6au1AH#z5p23 z--0L-;j~O`vqT7LAQiJXar4Y4_lXcTSpn#i4Oitk;={p)aaO{wA8dV-U>oc4=N}bnSAgOH77Aj(j7` z@^%-6-@ZWiX>ndE{2n&_a~tui;VB|x2j(!3uX?Xq^9E+6rV_)FL2NJO4{8`&btaC5 z>k}T3m&_L@k|&n35O;0t*0@-oJg;{$PQg2JSxa)srCet%)<-Q>ozS1h@F$LaKM{iT zq`QV`WbR)J85npr+a`wF~HI@KbN*9Hkwua zcE&H&bN8c9G)=tp3)=hy`7eNB@XWYo=77ooyJJx_yfx4MjoyStBDs>9ocUwmFK#E8 zGeL8HitKbSGWtwcnOvByGWkqa8GFTkv^m=KYkeKUKL3O7@PbcRrW zlTEPY8*U^MW?lC$M0qFjWU-Jw>Dt&Gkut@YNWj)P`X>FPGIj6@M_#Faq{5#u+&}t#*JXs(Njq9$*_g>O27os4DStIr~VXC@U39zPI*r@FTJI9?v zufFl!GuT8=3}-Vh`q8jYr7kxj)y;~QE3enR@#agWtCc2&H_9D@0qi|9B}&Y)SLpg; zgi=z8jI818xqKgem#0C?R|N6-xDUlkXM3IIPJxc6C!po(WbDf`t})eOiw5r>6XszCKh0Ch zxZMTp!70(H;pOj)m>A}gotIZMRVyITho%)TYL6+iTcssDT&|?*DPoRlyPaT0#DAWA z&gQ`98Z*SezPFq#&f3S&G*UEW;EyBDrQIYyYPCXp_1c9W*TpZ#Z+ONaBW3kdc*9rQ z_K&v?oEI8vQHOKikp+TIri@&r*tT1xm~@9iKjsf~<_OUp4imZyfR@V@vA6mb-8At@ z%G;OXdUu-s)|uW*+ab6PYyH3dI%p=hcF7K^^pF~Lwa;M3Vo&%6joFvflgAF;DU;-z z7srfb`4vjAtD{mBL34yi8xI8OeoTsloZtoEPZ+3KJ=+8%gcd?R^js2<+hSsI*Vr zhEmkfaa=s*o*U+QR_ZV=XHE^4|kf}F!7?jD)^Z&Sb#&2 zZ~-7+DYN!RxmlDKEG;y8ASAx3JBtkZ#-+uVsNh_OcJ4BYA6;fr(l86$yw^S_6$$&a z8itQDGDqU}zdpOAbD7sU?R>Z?$%^?4oEbGEhImrLSg8h zmq_#QO7muqakznvsV*O9&Zoniu{uKl62W&-x2(~q33))6*RGDGqbg?Cg za^{g7bX36xE*eblR_9Vav;daQ^~mxA3)-0Z*?G`caK9K0<6|30{r*6ToRDj`p7_(9P5i@}E51?a{}r3lYM6JS0+vD< z^z~e7WjM8{53*>+<#&0^6UI2*Z%ai`Q zbF?_}?rUU+V>#9nl7@IUa1vcYCLaKOGN5)O2c`|&!_DCR#|=PDY*)}1fL~$g#%=MC zA>9#^9`KcZ%i%2?oX*^!$Zh4%p3gDo&9z8k_Usf_V)i_@p>4iHUO2%N4vnN${2Bt(?bh$bt+-VH&VtIM(SL{ zmTsoZ8RX5J*@U6GoiJ!_r_3cy)e(fTy3d$Pn+p7LV}^nbwI_2E_gnOF z&Hsru;>ZtU5kAy$L3ADkZXIOOnV22pDZt0j(q-`lr z4O&d&?N>@bZZO!qmWCM9VZW(HuZC25?Z3vDLk?KNj|f(mFr+t}sfIe7v;6K2!Ra5* zK6V6gvz9RIu!U)Z4H>-U%qfkCt@dEToZfm<4H3Nb#uTRWHc`mgZV>--bZ?8~wAr19 z9QYM!_tg8UC~=hfeyeBU#%xavq@9W#Ar?VF_&DSdhzjM=tI>357MOP5h^@^ue1y5= z*=<(l=4u({=PFp`=4)2xDzj0@@ssFtZBc)}IbqLS>y{6hua1}{^PDp8*3$9(WSfi* zv2pxjdHh`@Gea5Fi;ofu;q{i`tUj5O36oZ2!!jP*f~s9>hDm-><;Fhfum4VeFItv& zU<&?YsfS#SE$5dE{b=)Bu!epVf&>DK)KB6}*9TcDHatvhFv)Q7`}_?BYs@%U6&3~- zrs`zDgYL5?41T_VdgBp5B?Y|We<;x3$$ATG52AekF=J{vX9(RKr7$?Gq(dGhV{BDy zq<9GeM~*m?>E)RO_@*7Rl<9E-&<KGbR{}EF?1~42|O`Pt+g~4fGdJG_c?hsZx>{OJDw;wJjag zK#cpQKXBGdWym3~Gz4SjSfS3kmZSTiR;Un00iEUh%8URM0O|j8Yw-s|ZuvNn+mI80 z&)eFc`u&Im?*z`>iJoTL?H}d1hgeVEEj!{lS#eT&D!gCf99_Rt`zUE>XzG>jmVGks za<6jlW?trA%DtO=n^t@is-uG{qk>AKfp@-q(?<8Qd!&2Xz3ra%?*M8*mA`dQd#Ad$ zs6E&{sEF{3FWM-p=ItW&R=w|@_z!#+z7yZh_r-hr9{BHf4}BN4&wWR>W~09?*{%E@ z`%ic8cu#F!@m{+!{s6;C=Gs2D8ST5?L))jkx3SAFIK0&Pu#4bhd1h~A9<+NZ_F3$^ z+^gKX*_XMOvu|^6XI{_VW{B3$y`y{CJ<>hxUiQ&i`B;T+4U-1`nMt&A9ci!iz&bD;Kf=wzbPL)4-$LK0aQ;+nfa>Gq~Vj!7}Nd>V`+4$qm zKLcwO^^b;OVGjW>&}CTg=?7NqTxQady!^NPukjQ1bDm#D+oz>16O6itO52{qQyECx zs3mB$x4=^uvr(#IFNs;1hG*)~7W=8esex|#r`V@$)zXD{*1n9$3tyIfpe?Ez|X z_%$#p_F|WvY=uPKEA0x1I%nFIFqt-hs#EX0fm7%oXbPD^`#@Bj^X&mqsGoTPq4m$T zMq$^RU6F@iZD|ZM=JVQ^XbrB|!$NI#<{gQ(sxX^3p6J4G+SQn5jid}3n_B}6*}T*k zb%yWpK2O{18(Tv@wA!sRogZjr1=MSHeq#r=p24s@13cypTfsBVn_dx~SDk-HoTt<} zLubFvh6ptZl*C-ks{xThThVP;FNk%^M21KB4?M zoErkn&#C&gyEE#Iui$6Z;SKk+XO=d%=5q$u2+uBUTAAhz=Za_2n@-I7V`|XOWZL5y z&zsG;odLDTGod!FjPu6VEY67DO0<}B_Po0PsrBa513tjoVrQRy<(Zy<+LSZUn@tS+ z5v$4Y=8JfxOy9SyMK@R`>HjMtor?to9KOgA)DxZe$>hJqZ}ByB$Qi(5gsL%otoy@ ziH~I*T*uBcuBIT7;UK2R82u3b&>>m6*vEkllaJYiNKsu9w$Lkd*63iZrbW`^2xLY= z&lgQM#hA$z8|_P5)eKo9p*Y9!y+`GN647QRX#Y(_!>vB@>K))XFkmgyDfEidQ4P5^ z>IO;g!hvrQH7D5!15igHc6n?i0IPHOXwHD-#Xq+)!0EDn2=k0iL(Zt} zIQ3_4?QzcUR4mSF9cJNTKcl10bQH{+D z0-#L>MbNayLg2zgaVARpDHYL0t!(_9pCvAqNcvGmpqa4zQ8d7=btqc?CQi)bN8+APCXIYeSWbC8X2C|IT zIU2$nO*IorV6xSHh5p2Tx>8%IoVVvCp$Zbk%62+dP67!I|n{do`ghu7uH&4 zc#fwvcZN5CUzMn;(e)5#D+K$uZV^iOz?#i6z95Rq}59J z0RA@&{6#yem%u0^(G_EW*j&auo!wNJGQmZE2o6Mk0jyA<)elP$!ufX z>s}_g&v>z|-p}}UgY5&<3->h)sL;)I1#uFjx2YtKG$4*9=VlG`?pvPJe<0#Suk(58 zcG%5S>zUZ+bVos(g{~xpF?eWFI>JTY?D&x>&uaG;KPo8MKUR51(x%4GET}cD(vyex@ZUQ4hJq0%MWR)55H( z@6Y^x8-l)Jch!9*Z4P^-w5{%V3Qnt3Lzly+#*Q66PcePb;`JE(l#CxbsB_iw%hZ}I z_GKYN&z7Yr*kz{j7imbwSEKsPOid8s;?qLI zW&?|!?mX-B=u8L$r!VS8hV){D^lQ(|i;vX$8}VS2jM?B{QG_%(0h@Gsj$ArF83w?! z2AcB)-{efw|HUqh&F2b+>Q9%p!XLDeLnz2W)EVW?<)OM#fbsv>KKqBGwKUbkFFHuQ z6DJ_mAEV@W7^W<>^;}y49l}@P9eYeDNN5JR}++q@l z!08ViI;Xj2%v1!j;r-3LG)+lBWzbu=tsqEm|o1U09kqrnJN;s%mj7M;PD`Vu!_%(|q`=<04v6T?1#0f^HmT`D@gyr62SUf_g5 z&>fx6O>VGF21MLWQ0pv7EEt*eMmkjSR#XRoFEM?&XoSelrG(}mRb`2Bez8t`xa-?* zOzyMkiX+D0*YaNYrr&;I367kD4N`!mQk4U>1cz;-P=BB!hauZhE(vM4$I;Q+V)08X zHafzW;pGAv97tkphMru(7Ii^p=*}bHK3aQm1Vl*6klMmaOfy@rND_UVuf!0{nl>BD zsfkZkbb{9uK6J-AvKa!2V_#!u!iH9vB5%j>QH<2e-+6ZnmzkfVw*PbggbNoeSBwML zpwVf}wq_qr&d|j<6qo%SxLiZ94^qKIF8f2{mpdoA0uE%6W{CL=CqUu3x;J}^v(w+O z>C%<;XT#$mYk>nWjtRFLJX>46mNJxxPO%XBhAwl<6%`Ae6#%m4o;;tI_EoxP))l25 zw+#wI#4JhID4EPW#kA2w)hj)|;v!Ps$h^@~mk|X;e}C3aemnJ(1xo&#EvhQ&1w*mR8r(jNrOn$z_*cJ2{R^jTDs_?M$M@HK3RpN&e0g7v*a{kw;psE*xDwdJx#WK7@G~S|LFMCKeLGHUS z=QFNJkCx&Q>_#b?qstZlV^4}_pYqR&Xg@(>nLOft%41j5#WYPIC^X86t#eHriJ7baLv9>UD{`Py<#LRoUSqjzjR3kDGb|~@FX)*I{SL7=} z9i2?~n{HyZw-htpQa_NGV`nd0QP|I{c^#xr{~|bD3V)lN)AllvV&qKVB1BHFE*tyZ zMjdfTq|wzczUq|ixaObm6q_u~>&rI3RVtarnlslHS`o9GCWx=SlaNwoO`Z&|Q+0tU z*ngT+sc7WN8A+E?xSW|s+f?jCILq*N=cR|8q>DvbRXciUDN~sWYbakBr(zJ;xQ#9wpGtLzvs+s58G}UP#ywjYU zMzrrXlZI&4k(05u_9R!sPI!xxxjYz2Z`=Jdtf3ZE9cIYdtX3M{k%%)JFYzKL5cf=* zkh+%{gj*B4gr9r|EHymDNAaOPbWR&l^F>hr$ zn{=UmlqRp>wKo)F`}QGv-IK(wW-}*yZmz%sI<=2oZcxhY;x#$jZ@eQ2Cs&bEpSx28 zKHGzvkekPY3;ebM4q5AQaMPASkWYy@RkcroIU(^L8fjDx@)*h$WY9(TAOJ@+Q<9A7$N z@lQEfy4ZA0aOZou2)WW`DUw`rbJ2SZH`bVp1Cb5JrKb&dYH93};3dg*^vA}XBCq8F zE#{v|P|}V;y|i`x9dq8f?J<=z+GAMkcNvjPrk?ZX+8UB|47Z-$(-mMU=SqW&Y)4_^ zVj675T+=FV480)`?d@lD*fXu%KUrDyh7Sc_;KgIN+g_O7AC+}W}J&UnVTm2Aw5*z-iZiH(|D@t-xw z%JdMC9XAOnM<+EvseNMThn~DB>MNPYo%b&}Ibzsoxg0B|fLJA|I zjXPe;9UoQ7l0YSlTME{5PaM&#&m?^N%b}{-VuqhhSkJVNfF8|NTlE@cGk4pt3=H*Z z+~i{J5o<#CP#4)rBxVh6h{jdxNL|J-H4UV+w}!Vq|H=P?{%Fk0e2pp}fkRpZDY^Ca zNPVKxm3+@WbGDiI2aBH$YSd^;A7Q-t2DNE{Ar&)_KwC$-^(;EtMwy%2`tJlt+jK0- zsGc*HBUt~&dQ0Rg$u3{}(i2p6jZ<7_qzyHr{1gnzv<}xC*VtwFzi}yO`3t!zW_HR# zT!7v}cNE~Vk{;X&ebUYIV=-OZgII$0E7Myq^wx#Acu8A`4+r_Tyivs3@N|N0htiiM zII+h;%X3bU!&b;p=dHZFK|anc6I-opsd7Xv33ztWT1NIuU-h@VJe9bJ7oksJc#F>w z*nQ<1rpnl`6;s_1>8LFdb=L>{s@NJ7XpqT<))13$I*fRB6X>jDF!U)gQVzdJTyyd1 z^UYDWL|6=I32TWl57Dm6ip#wTAkuw+2*;e&_cUfoFA)BLa|(zm?*gj5RxsPaEWSMK z3NgPxbf+J+kx;H%cQJH8sLHUeZ-_~bVUCAuA+)a8Kn1tD%KxTbZFJW6IaRm@%jo2B z>1nOo@|V=YmyfK(XmgM9L0<|M#vCEsp|hYw5~sp!v6iC`1ew;g=&xP#r`nJPMF-j> zI=DB`lsgLWTU$|ySIDBSP|b2UgJ+_cf;^?qxRrZlo*s&h97h!9C;*z4^A|hEWQJDL zwvJHeyDO|$=0VUBVb92#-8H*qwsg7~MmVhIJ|CH14!D6wnnYb;Y`7G(8Mj$XA{B5(0s+hj!40Cn@vV0W{7i4x0%2af#C z)XPw4RqJ2&S+T9K%J|VsDh(3r> z+kZSt_~XnNc2S=Rn}kdw5NbYK;wgq7PY3XG5YZWzA-mWq5b4cn6zGXDd#D3A4#V%{ zoCQ>Abfreo=0j@Bz32?PqM80A@xd6{aE~*4vuu`#dSRea5U1xUGqrnsj4o%`ZAwxq zzBMF#@;Ib2Z5}kg!yAJ;`plkSP42$yD$VyOxL&*dgS-rfj=ByNAAyGXPWI{e;Uqf>hFf?2&*Z zG9&h=)H6>Odgc1u{|OI4CMs|B*9Kf-@+iG{BQN~DRp9H4Qri>=1wXc?J5j|R(${;z z=-TGg@3PGQzB!F<+vPL<20K8($P+yA5jvztl}i8AM%$d_u5U@NWXsa8W#-jd`O!*% zGIR>N;MunQL&?47CKds z5{^4-9D4ZR@msr=!b*Z9{MlAx-%&CxnLeZT{VX4Ps^w*&l>@l39rw%EU~WYKgS>9# z$#qE+%{flc{u<*Fk1iB7u{TPU0?ASGC(NUfcr|Pcj}Ug-v$otLb;314C$2(*^wl9Y zqeFbVq$Mu~zW)roLZCPP$_2#Vbc-3&l>d&P3V#ZJWuTJysL$HRX8NRMQrw-Zsacs5 z2eLU(+NoAPZfY~n)EbDV*7`ekTTl4|SLXiZ@A{0s`G@=&B4PffTLTTLmXO1}P^X?i z96)rWs2_MyXxVwS@lC9AYHH9^!cFb(QVHjJ41j*_On~_NRg=}VgskA|Af@@B4gc1$ z!vyhyQK$-pU&&+ILr_0TAyE3Mp0tlJs;`!^I7@~Ma+5Ad@*?NV3mD%5TViMV@d|`qvRzz2pn(Qt*6k@_l?RSbU-Wr~ zn-N!|DXs5ashnnnh?7xdk;j;^-d$TTm0oh6SCnRktcrZy8^c7ojtRsMTzGm}L___hf93J92iD#cg0ZwM68neyXC8U2TXCIYORvqvs9; zD*SH|DIc;lr;v3LDdT((eUny|?_fo1f4GNk3V4}I)9>HS)(;wwa|BbuDEWOP_+Mau zk6n^DFy3_z99wO`F1~2bk_L^Wk$1-@Ix6V^?x%DD-_kPcYF?V!o2buqT02HMO72@;STaC{wx33C+GU zR|-V0*A(vLjY-F)*z(f5IZoc}&)9o*YZLo@%e5zz`lTEE7dwcc+Sb!%HK#P?J5tx^ zcPR15r(|{`>y#UP+4eouq@welOiB*lGk|ZDk=&;=0)RRd1P@TBU)5Gu8Z#OfhgY$X znNKAUu;P`9awKg)k9z~kGf%5#(Z|f}r4cNxP$V=q@iO9%R!5 z)l8X@PSmJSj#4#{*;ZF<_9=T5N=9Mul@x8H2Bi@>Q)E&6Tn!#*^|OakL#tKiM!4aQ zedlCR=p=U3J!Fp7250*xm2bLupt4Ei@R%V@4h1B2VQ1x&5IqboCZ81+$sT~QDww#X zH}X=4<~@Hb@Iw67F&TIkvduaz1!?i zS+m8A4C7_x0X)A zMhv2l05Po1me$a6>vY`98Vk4Rq3-N&wkhnUAHOZ{Fq)@2JD>qNweR;uNLL1T>3K@0 zEe`(YepGqOghNhlgOJN<-WRVrkAB*}BtqJ(M-)$r52C?4D68g9R{KFvDRNzV>?G|l zFbcfppXkW%=Zsv>dS!}4Zt7VlP~*F=$r=xVKc`Tiw#&WdABcwf{djSh!9eaNrI+6K zK6YBZ3?gxyA3SL#UQB<3es|Wh9GR`}9hcu^|NdR?H$!-1>zI3fwoc6!gZsKLWw~^^ z$a|Ae3?H+5CTZGIj|T%Mzus{stEL@52VIl(`$%g^_+M_U3D&IMp*a7pY>CQ47W`Q? z^`GEap)H2Wfk(ygTr|#);vRu%hC4NSEsox&tw%oeE;;_(#xI$f0bs|fsZhD*({rpBxea~ zR$Q>;L*=a-0m>wb%ZwvE^?s4)Vn@MlDq041G6K!7WS{3W?)uEpRZY$zb9Wt8 z_BwQ9-e(u5&r+yn-KC~f&9yXh_wEvEPxg=ZJ_?3a{|$rjRL^0))X>w=u4zntPF=U7 zciGLK0;?=?Rb+UZtAWEp)A=3s1PS*R0@X|uma#z>Sj4toLTxNYb9DR!d(ZW6)r zK5L!UDWc(~2K`GYW(vKn_|#mH|F1eMm0533eKpyG@@5cRqH(-(dHjI0k^IRIhV=j8S5_G)B;=XuM-DM`kO;8G{?bLN z;XU&@`7v(2`8hwG*An#OxIUpn>sPpwg2uz57ty$-*9m&nc26D?!N|${&R6r!7i>k_ zBm`a>1|fGRbp@XBgj+y739f(vNwiE{jJ z8&l&uTRJ159uth~240m1zXqmWoC23M8~C8sI;p%IsNu#b8?b<58>-uJxOljq`ktFd zH1ccv9MX%j#pkF779Qt+bM80a$2ba(4p01*9!X5_@w7FiOj;;udT31p?miExp{1dn z;3dywU`sdQyxw=FUm+y?Jn?rI?(#+7)pfHs)BTOcPV&n1S++Ba&gFEs6{s$X@x>3h}s;h+$-gjgA+H);EU9YNRwY7|RwwzvT zCF*mpE!sJ2?E{=W{ek*ZxG?6t50b$D$95bY$k@#O5AQGAiqE)XI)eos9F2mX)to5w z1Lv@UCK9~E8dH%~d+xfzn@Ml;*~IpaUCFB4o+Bz@`6Rbi9M~4eA{AfT`j)Ejimu%w zE<$){irhUl(95W_48Z!~C}GfXoRvXVqx@h-(?W5VICK|Un!S?>kx4%T?y%ip3e)@w z?guZ0#D&ZpI2QZ|aGKzAID88MG$BWr_+DH3)jE+lX$}W<&Fnmj?maK$Hv*41>kbru zfT?;S1M`dWkA=NYSYME3;jJYW{AnyW8q^>4NH4jWHEo6-nBnN9m4?9C|>nC<_}Cb za)7@v2v1Q))j3XeO%Aa~FHsS=%NZk*H8eAC%EzH1t9tLgisEqN{Spnm(2E`bj9w=T zALNek%l#XI)RsFg79VyL6ZGIC_#402YFuNk{RSSPm-`QH+$<>iOM0!yWs1krr-Iw|=}> z9pQM?P(QnEk#VN>yk|5^5_RGD+I*k%U1;l-9{)W`z9vKnMX`_To9?Y=raoXV>w#J) zu;1AOqBdQpte@LkslZB`C*gBwUFolc2HEVEaj*2K`YoOGrRg)f@ZiCv$?qVlI)ibP zQM96OXKOn#W?QqzI|I;$6<9#ZS_?JL%y6chudh9J&ovsz_OI(&eH_d7oCTL(uo%6b zjO*WAGo0)eH3gCALO@U#4fb|F%s$8|!RGwJe0dW+p~ezidt|`0fPHVqIH)%qIhr$>5E~llz<4?Q|2kZ86K3j8Y{rP+>~?vRf772d(Hq8^Xy5Vqa29trtx;nkJTItH!X|WB z*?1*N75jb#JDruOZDg3;?XukiUnX*bUkTF=hh1olEgLkwXBrPHYa}crP-S{ykR38X z0?ossyEvc3{xg-j58Vm*HeZXpT3AV+>DW)lIiB`&Y&G%_Qqpzl@Zl3KlyaxKoYMqj z+ehgWvSsNyZth_WjTI6YgWo~}u(+hbKi=7Io>da*Ano8M;@?Z(O!Pp279J_veRq$8 zY*&jrpC%G8O_;qi2y{BR#wKJU9SMRa*aibxjcI}bvl(F7iUR>-W$Iq4 zIIQ#$v(Ven&1z<{om#CsODBW; zJgd&{+>-oKyEzxcPSJ$h-DJl-Ao@ckR_`}O|%SQ=7}OlG63t%$Y0hv8NN zM0?H~L%Y3a@S&2BFhoIbHNJc4ZRa7MNL;Hgi>qw22{woc8-hD&wq5WA!8`)jNMsf1 z7y+Lxtu^faj4^bhxQ0csXr&>ceM@@#YVBKj#@9J%?IhgZxS+J#4oC9e8|PR8Ydp|H zcs#Hq+os+~45~qkj#s^tskpX}B&mes1^>Q!7CX@q%qNdV+II{;%$)rqo^GnHItjd* zo03OxM4yP#>8!6ijDYu=4aJhwt4yEy{pmLTH(@L^SX&{vfPXP~V$gakzOpZ)iGI^R zRn5xRhS#<5Bw*r2l5IywP4=amlY*J>FxRFR7|4;}zoaN~@w3?i&fJDqzW}JD_24&8 zO8e2`sTQWOs9T{;d4o3076F7JLrULAy%1%4m}obHyR|v+mxZVN zpRWiFh1jq1Cska}8U+k4jh}>s&0`CwL`tyL!w;5J!B!sbzilG?GYm3Rxv|#rO+Lf( zwss2CWo6h;OW|>)x{9rhj4$YNmc@wajI6DGP`BI|vHhB!_NpKAh8*>J(3PP+Q(!q+ zX2LckMtZUKPs!MhNcQ**&eZ&N8JJ?-vD@~4bo&wDB()EJ(qm#v9G4SSU|F)G9N|l3 zrYvaaY9Z{E(qPIjU(Gqny)mIvHdF4qr6lq=!0e}hUZHDncu+g_G~%Qf)?%mB?+g6# zkcQcZpG%oznUopm6s5mSor7cOMev^&zGDUwv7>&by$e?F{F#e{U5h`RImW$j`J4V! z4@$63)w#&e@HP~3Dm8ydtXXyUOz^f{W;;CtKqXIvBT&w-SX+hglWdQ=!sn{{hr(Ia zH||QgU^MuAG4KuWp&vxHWgO6=pYeVK4;i1Jve{+187?k0qRjL_g!rw_7drg|2(;l=Ho%<$9W#v%_l@6Hy>i=t_W5a$jBhRZyN%$7XG&)GG+ zua-X+OpOYi;Yc9i1q#Snx>C1S)t8wmM7Q6K9_08&@^O;pm^>q6-m#q+KX@|vx5k&$ z3GwzqWTanOE^vg>1h~km9=;A;j-E;eFI?ZOb;Yt*Bk29hXy5HM2-QSXQjBb0=j?#r zn+J^u_kg1}ZH@@)z|fjN-O-+E_UjsQOR$@<(fZ^H`8~o;W7gkzbP;rgI+b7s3!-nd z_4kAdx}`Veik8Vq3Fq>I?|eVc;~#rAiiiD$9H%E5MqEJQmFfXm@cMOi;F(4eZdblj zWHOnQo1T$xs5dCy91 ztLTOh5*(78SjT6i^zF`HbR5IZn_&Xm*kGhNWPx%N{`@^xxe9|zw{k}79OmS3ZvV!t z);B4BX?l>VdnC3YPxwi+3d?=|8y)oHI59rPLzH(~f46dnzx>SLnBOXbFKAY!DyYiy zt|ytidKljubh~V@5RRU!)7pSDWGi|F8;v-Ax>jG4kvRqFSj_-05;dQTP8Pq-{3=%aPhk# zf=#gFQ2Q32T({4}rOUM^&@#zNjq+R=5aDs%7`9Dj!|Xb-eTit8@=vC6neJkM9c*}E zb;me;I8)>AZWU3QOIE*FOn!FAUewS_u%?$)jhFJ(rLL8BHCWmr3A-OK!!F%#xnveD zsjN!NtiwZ#>y4&!KsSh$_+)&PBXY9Mv`s9ZUn51rg;X^+!#C7{{{F&KV)ysDEQz|) z2-C9pKG)y56T{~eR0|`_=P0T{QjJA{; z;~NJKv1Cv_jo6m2efWUH^S&{Mfc$ZvoPEW{6g}g`gS9@H9uoj!ZmWF)s%PZyU4YZp z;7IYfA>~igGLeDP!1F}r7$EQC79U{VErg1Uxb*5PfuQi4{d77zrmK#FUv$9>@2G!t zjRGoO5O$9mK! z3bYuJ)UZ4K|KV91v?l&;BM+EjN6Q-R3x$@-MwO&g-<{+}c&(P2aatMqIMHkKx$Iaq z9GvS(>rDllqxPh7ZD#OkpyoTBR%08ju(ZvHL-N*Y{^MX%I&&gZJ5n=;#53@#@=l>E zi60J5xl=z9s|72Tenb;uq><|~wkB#6%MdM;=P`DxnOBM^T;x@@!T6xR%43;jn;L$p z`NmhJJOON#KT4j256=TgPFZbU0}espWx-7(=3#6>D}B#L>lg`ycGPxu9h$J_|L_-^ zxYwa7P(0oLC|+fx@C8;NAsBImS%msibt3{|f=TwHSg z0^7vL(QKP^7?t*Aq^QnO*!>tIz_4+2YzjA+0iSkH`HLUfDXfXC7z?pIzM3ti!b=Z_ zV6J`h1>RV+5l zZM@%57$$qsc|U~uZ1~mT8`R$}Ui?@XC}+D%L>!w6wePSr18W(-6|X!t(0F-Of_yUI zjlorj(}<@8uw?rk|HM^<*9Cp*ABMi`5A!d9hv2a4>=m3dMU~V*0;z=vD6{oByYBNf zm(_HKnYr+2;`%Br;|{1GvbefVh9bDRL?fLR<-pqHV&j^uChuusB{D0r+d;M>H){5S zY)o#|Z3ft=-M;N1OM~Xoxv%=I*$b9QjGgNimKl!?COji2UXAIv73-#zv(sZ$&{73~ zG`PU;ni8;B_N(nK$fERET*w^wctBjXnMd%E2G#D8S`{cN0UZ&l9XNO1XwC=e;rXj& zJ(A1Jom6Q?3Y*IeHh({pQY<_%O6qW(1eiW(CX6bK)MleK7$Mw`uJZf6U)c#OA?6Tx zp0}(nqLezhwF@j2&Jg>@30#YaL@Wx79cXxTKT(2D$s^Xw607dLDORO#x0$FfZ`M+8 zN=3i^2p&Om{|FHWl~6*kr_lwE2gbno0%h%uC&W$sC5L2aR1f3CKr_MUiql#_b&-g_ z6MNxRDi0WpM~MZ*NJDOrSy7WJuxPh*IuMLfa&27<)M z5C}A>LT>?PXI{CmQE8M=#~8ZAT?pt^y0o``et$29$sxZxt~J&%6R5Bej6BH|%`UVL z|5i1!({e1lQ}qskgUynxut2JH?zwBKZ?IPQyc#}P3y>&-nFd+0wvfBEd2F)y zDL(2HWYmn!jGHYc1r<7A*6Z){z)K9Ox~{d-&4@w9NX4Ad;n>(oTDsLz-CVSKug+J8 z$t+vv7SY=GlG!E0QR-u=8&bjl6Z8>FokBhL0yAT!EB)AW4FP7!ZxDb)oTmB zPjRI1N7qgu?gc&u1=*^oo|mf2K-9K z?C*{zg-=i%OCsd-u0!6?c%5SSm`xQ|8T zGQvH2FKhnF@^Eo$5saz@im)qX@W=z8G+u8(ET zg-Pk_qdv${*w};6Rh4{Sq!dfb8Pf5rR3K0Ak`;Ldc_mv?dzILT@~ zC3UhdvbiOaxto;yUCl;SrNn07^D8UZ#ljy?-lkqQszpgq1*}F|bPn@t&N9^ytmO63 zZQq@|T~hmna~sqw?Ssp>t?JXpd6G8~(5}14$L;6;l#BITv;l7-xxq%lZt(eA7d7*e z-T>xiS6^jMfvE{!bQjIHqd+Go#(?)KnQcXpAh$UzQic$NiYCh{nqF&aaca)Ev&d;bfW6q$%jxMk<0HL1 zK6G<(%S~feh!Op6-T?quhMxqU9Y(SNemYhq@Nc)?ivCw}57e8EkCA<{GT~X=IJ|+Q zA|bdiq+@L*2pfA*XJV}5azj&EQcA_|n2kN$=O~KQM+TZwD+aN<;8*fm`;M;&38$Z_Z8IEJ@X|1Y7Q5Rhn-G z=`k(pwqyWFXS}4kH8VuE|4^J5LolAiIv|!>tCOXMux=!HU@edztl#qe{2c}~Yp(FZ z8#H8m5;ghDrE#!Q-BhkYQz&e*rx213_iJrC{v^qZcc0kN`uvfAO_bhNz^UQ7e%!kv zWV~Y9OSVlQhEXNI@7OS?GY+E9li&YRHrJL}C@T)V$H!L5C)d%%X?>8q65RfZ_xxzu z>0LYrM;ntyTX!iZwcuT5e4cAII4N1qYB1>tx_(H*+Xb?%qS}Ss$cK^K)Uvr~!H#i+ zn?oGT&idRz;5cf^K*OJHLs#K>AzmUJx~^1# zn#2UJ)EFhm3yUQ4?_onC~6k|lm>E!V~ z^w9H`G8So(85(!JrNnF3Rmk)&((X5WmvBn=hP3&G6DHveFP1$Q?usFx-=ga!>2*#N zigIl?r7#YbULSGu31!~so9gP!F0TYD!2&Y=Y7|a#5CuAQq9Rqd(It|tzE5hWe1t?r zXztSR#ZpV310P!q^TO9hXGgHhZ*aaVJnX8gxs<~ z#B9B<)E5VfJSAu!$LUYme*Os^8c`ILTebU)T-A*G5?!TZ)7I!*P*U?o|a%4cL(?=U83y8&Q%?Z0SD&?;;w zc>P*nocJzCdE$j_fie#|2_Tt(T(I+r)da*4>rQ_@Z<-b5flwZ4v_UaIszc0fj3m7@ z6-V=M(gf)ND0m^-W7L2pK~i1TcOp-fKQi$}E3)wiqIDld_r{bx)|GwSvwBVM7!pY2 zVUP)PK37@LN#oPy%y;8o%B7fOShZ9Sv^0YdSHf5M(30w|a=sKSwt;hJSzN(Ocd%mn z%j~V^G{+uN*?mGbqC9@&p7)-J&)H(l zYxTevfRq%q47;xlQa3XlC8e+h1K})7){b%E3S-MujG0KCP983fa6e>>K(qctP%Cat z0>-OOtZN&F5O!BOVMhzX547G$+LWhf|=#EpLiEfWMYN*~9@ z#jh-XI(-_Arq&lUe;Sx={vsYFV-LiC#p*>SItPJ^hevcJ|>g23(i)kdCjG{~w$ zXGb#e^QG{j{g;7;Q($Lb1*#5n8(B70SQ;;kdw|{XsOpPKV)cClUH)OH>vwB?4@h~7 zceR5dm(bIXMzgQR%I9EZIW`6Th0_-YDK?Ka5=yH4jg|S8<)8J}w52Kj%KMFcb=91~ z@<$_#2n=gIW%&~If9cC;Ua`&P%V_%B=IjWnRxYgxL|$Iz_SNefCRuu{4hp~+9H7&% zxYH1w5;J46c28-)%S9rNaC96x#gZN$JL?tXv@kVw;0PMXGX{{Aq7RT-a;h7-g}|qL(pem@Ok5OlPp~ znnNV0yMZOiy)}v_s&XHsw_Bp>R#sPfbwf$K{3^x^MNe@a!}(}LpP7zvdx{6Y&qjp* z(Q8+i{e^!jT5()qK)4B!&((&P9YVDJTosi-_*nImdnjG2Xyb> zSon(S^U33O@mQZ%EN&(jOsf;9)O@OXEjNDv)CFTtRK|t0PBVXOQe11)mhNq(_P#8W zpHp8}nwm?cVHfJ+!cV5KK&Q={6loyo4T@PLA%XFGo3yvk@{zX6md?)dSZc*NE#es! zg=zZa#rTVh`mAXSIx1q}PonwptvF(uvaE1#TRb#?k$wq$UIOIAb^?bMvdQ7LrHS#+ z08K!$znWVl$Y?Z_&>64EkdCQ(Ahb4S+BGA0EL zdKvFElVZXw2h?M}m5Zurer+oumaL{8b~A~k#f%D4MNNS!&mBy#z3@(08=?DAWK#R% z9L#wr7`P4x_+hr(DLIfNT2=WLI5On?>FU z$ub;4f_QAY|5l|Kj+Jzs0+x^jpGv@Ev5@~hnt_P!K8=b3vM;tjF3sRKN_oRTm1X=C zvubDgXOUEci7p(&AL<7+{N-TrxwO7dqfbqX5uy;vWMM|;Zp*?eho#V_eGyqm^3q@= zW76m88=h6B2z2D@M7bE^xx_8@G!oi{cnoUc8DBB5QtGcmI=C~5T7}Zts5d%+n3Q*| z$hI4-#%>t$I0GAhl2%!RIcNA7Kbzn5^5ciV5~HFLtwX#%GKoX>JK^Ehqkq0UWNBcl z57lH+>GI2#^F(~cJ6M+V+kF(A;no(2scGBCJF5ExnH`x%Ti)CllypK8j8i#e^cE7a z#6$$~{T8vq$hO3jB1UqVL7t{uQ`H~9lxX>rQH9Zue+3WUu3qR$9hxgkF0_V|%!9~y zm^~HC0bEBi#fc3T2*mHd%|qOea;t|h3}#GIw$ELF^>l{IS?|3$}))1+o$4`pk|1YdWpfMr54O%5AFq! zBlux}97H+?{!Jn%MCWK93zeBgR8JPi7h=|m%OE!H6wmu{pxy^#aiy&Ac1E)FMkRYD zms2lo1R;D3a#3#Zod%0?m7ehIdo{3NP{RvThY+2hEt6n!zmn0NWQ|W%%Zjt(e`qTT zQ2{JlCkwB`k{yeYusJ&U2#pe_nmodsSP((S0^JZ@U^zNE#+UGkuwL}iKiU%zL43@Z zf!h*ffR;E>2Um^XLqa4zVQo1w%9x7u5IYjPn}yp97`sxe6HZ7zfyoW0T;dF0g4n5c zx2T%*I6}yo0iVyKtZ&1*;(vxMEv231dK-X6ux*H$xAZkH$^7IyGM< zp2D~!4_lHO>8+m`f2bbPZ=zZoA%C`J_gFWmR(4({8g^uk(skjBE)5PshaaV2JvdfQ z)M0&^LnWMX$0&P}Ir&x*mP7TF#a`$44$KeU4qotDfGKi`1>`#4K9`1xU<48?M6o#u z52LnYom{FpFX*iul41FD=yRs3WhZl%$c7SI zD4LzB8>3{#0WQUZ2w@Q%i8hE$3AgsBK-weybQwuE9?MOjB-2Oj!9%i_xe{EY(oG3)VP6e!NfgwpPtJoL&lI6>L+Z15&$xpE@ z&OLoVkVjH(-meKZiDm8MmgOtZq=w`6jdXZz?=Vkw1@~%`ZcIBgB>_IT)$EM%j z@e5-%$l<(U1HzEjz&qR+w&gQ&%6I*RtlNzu5Z{eBzoHj1ehhg19G-9{Rxf>S(}Nzt zD3BWeJu~q;JoZgYFFa;N$eM1TCCJ!VIpAEqq^$-j(AtfvuZ9ePCGM5_PJ`TzIv5`53PrT+e~h_Zia8JS z!GEt~0gG$Y@^LudoNmoCk$xjbfiZ{5d1zdXHegE^JJDGhG=*-Nq-i|1>p+T zDmjG`z%99h@C+yN47_0z&fiE-R#yVH@C!#`eB3KV-vrt)YCeExB%!}+nT6C@`K+6< zx0{SxDYASl%h`ZSg(85IUsYSe{@i`v{NSNX_4l#`(53U>RNAC-%n}X&HT{5R1^Y;9 z-^=;BN@QP^_ngFg)%rj+rU}Z1ypjSD&uDDXvU4~v5){gMq`P>w*P;c8nfVj!;DQu_zs&DJ-aFE$OGwiswi?R>_Vb8JS#21KrTc&_^@AY6bLfKV)L{__1R;EXh=#8E*%VUsXlT zZ^gs3joK+S_II&Oj`ftLb!t!oTjvf)Pn)!`fvcA%^~1v%d(RnbIZQuo+?zM$=du=sP5OkB&RN z5WeIzBoS`jN@IN9-13_kdlboj%1XGEzG*lxd3+_laeRVP=fqYapYI_Rv-1+enwu36 zM`zm)(|VOR=G;D(T%8691l~=RI{x$1N`z^r9=B z!jLc4HBs)Z^A{E~rEj0!mihNAyc+YICa$wt8w9s+PhKh|G59OH3)T~WKNsg+9k8n= ze)|@y3Zg$xhg2M0mR;8TTXMAl{VU<7>&`D>9D2 zYuIi8u4(H}fP0G*ylhjVr^%Krnvu_qr}CNrlaye=_pXe3Ka1iqjPeI-SCNtx&j}J! zV(BBKOGS72G!FDK$>9GuL)fqryFX`ARy!eVqwS4?%X9sSVkBv16s1enUq3UBcdzM( z0(zrGv^Pvix% zF0*Ha<4-83eo>w&c|p%mW!W}f>k{>rRE-V-$S3fZAEwU}5$WMkF`vftOT-YD$0;+J zyu7?kVl&-JO7H(pc`@Qj<}#nqMlSIlCF{O+u}Ar;p84dz5ffw@EoLhb6mLwM-w`Q^ z=Jirx1+z!-d5U7wKS=v!_!PPK%)LEetzu_F!W>&CFkq*L2GiA8CIN&iuwCaZj@o}A zce3dGqbgl;t4?@K_0o2$3UlcQSso%+g2y8auL<<)GZpz5;B9@^S#guyK4AB&^b%t) z-v*a;hbq1*&|NZ&e<{vFwLe*KToBUnn->Hxxwuip0K=V^oh0Yj#^Z$E?n?+_^rZQ< zm`(M7m1?-fgfXd@_q9TvzTny~yUsIQJj)FF(uX%Mi>$EiaaWr!_ox$80ba%eIgNO) z1_4)v2in2o!D$j$7YVeYyqH+mj2jS8LABa7dI$({PH3My_U080!>>#fRt@J^fN+KS zGon?i7vwM-#K|-o-MXueA@zh{y6!5M7bem3MTO`#rVORqGBi1Is29%0zeCs;fZNq* zprz&nhgFFWbZIZM|Kdo0<@@o&ewI>LwxF@f!1KD)!z`S0wl+6Mj{maz4%!!^1jCP` zbdEusG?rHF;fpSl<-sEjkGcZjdy;ppB(Gt87BSn~4*&CBa-|k*;QkZiEGsCM8K%FM zD%0c~7Gm-s=`2m<9pV!2J){=l<@8*e!00Sv{f%P)V39}g1zEWHse7F4ra;ScZ=xk%fp8I;|3}1W!IY z+$*OPmhWsJGoAC51?<)p@(4~7pf%HNu+B3AeO2(F)Kwo#lQnsH_sXRJXh(e1G zHuM+vfOdn$_Er8pDtn6_RM>A1r+0CPP|)SV?*Zb$pLpWu!g9V%mxt$u$UHcRQnpyx zaTgFhj@}-FMc5(Ay=b9B)ac%H0df#ru|QEcSpPp1COD2%#g|xeR&CUB<~;dk4lv}o zd|i4qr#Ezr{)XGA4a|Yz0%6|tYm)Yc;$`vOOB+{c?t^&`6S$K|%!@Rz8}8 z^4X$}$92_bkTfG!N#(CK#3Y}7y0OGa|M+8OxO#7aX`B1TD>6n*EeHVU{rHpdZ@rL}bg37cChwSBbWvlQVp&aqbBI8N$|^#>FXV6Op=RL`~$>mKEfq(*|pBl^4oIP?&#u?yp+EK;@PwIsT4i*;jjlUV#@ zwJv>t|&G9`hww3Y_G!PCRrEi{C z_1PG#vasF&f5xyifTx#L+a$`~NP@=sX%OZ2b|@cOKuKa7qWO-+!|?PUj?u1#|SqF)}chm z`+%XrDiS*nIKvc{D{{ryZhp$#2YRj_7iPs_-C&_4)sjtCHX|7i^XMu%IJ9E0tc#Mv zN}w83%ejPx!nN@s`MN%+U932)8Xzm0y-OVY8cp_)b=EQCRK2{Z5+OK754-=tCRu== zORJcsgEg14<$io#uhU)sM{!N>`rxns>yF5F+V9g`Q7eYHKf32wrb)eaCyTh&*4_oW zx>)u-aN?LWUS@&u&rzlU=p<;bQ9=J3Q`Eb5j8jQ@lN$_&T#Ja_sw|Ce;Mygi>up?9 zk4~Hj&Tmx~6L*wj-9-s&W51DwExAP00vjHOFkDL{$KHHA{R-K9WKSZ@kFZ=yMtw!cLt z$`u-9wO$}s_%Vy|mE0Qs&bYXZxzeeGpvb94>qL{eT$|O*^1hRQ5pHXvo1r@qU@d|W z;tZBxk2CO4i2B1*C&&{?s%_7@t??<^FOwM8<`NDf41 zo3@XzG_Et6A-cTM@V@Fuk$Wh?>E}iNBBv)I8UG>_ImzYQ2ma7331AoZWX5_=yY8D$ zh69yT^n`G#a&E56vLoo7;xD)6_?nVMbJ{_C7q$cJ`N6R?Qjp>Ez z_~WP>=_kat#B{K7u*7pNw_=>z1ZLNGX?&52zeZ!uF;MOEOn>wxY%G@29wQe!S(s34 zzw;)EQh7-Uu@fC-;clMZ5#4pkm2k&FuOeFsW|@C~G3|^Y%0xbOGW`YtTt)r(P_FE5 zZmwFJmvC09!~MccfWRn@es<&pxMB67dc{vr? zq29GdN|ymXzqlXn#L%Yd_pVX7!$q=z4OqUr|!)(*nPR5a?W9Z=O&6BZo=PgGdX zxF|c<;agNg&+2dM?_$*5ay}T3-4TH=d)nw#tS^jt%`v4@!>P?Q?u$#(*WoK+{0sO* z02k|Jkuz2&^&DmLt0gXu5G_M7G_1Y2j+{!<`oiDK^^lkKw!s1u9e_^-^)Q13Ukx5(+AX#<*&?grF(0>_V8ZI-tpQryK>d09^{&Tt=xcp#g9V zyO;D%rprJSiPsH2lUkmDGC{e{=G3uQ3j&Le_DL{hlS}0(=(-VcJwQcB476UF4!n%W zg<+u?en@Y|GlTI!V-DC&b@6@xK!T?mJF>G zuxJo1lHNWsoRzP3m9AGJ5o!pK(pt^XxYimleLHPm?-jCBfVNxRD!H94_Mb?;mC2&+ zQE{3mWuo|3-Q=+RM0U7z2;T07s?}kK9FDJ#6u9Ixd7iWQ39LR##qlMxJV@d0C3AU% zhC*kg^!!e>hge&u>fs6&8)6bAnS9{Tmy=o?VzPhqEO16572yC)+P7vgbl2o^tJQAN z23zb6i#7&hIF9dhU8V6=(3r~p#Clqn!;hgy4wVEz0C-{7PsP=~G`kA8q7nB+{xG-? zZS|s&dHE-QhMTO9Q!~rxZiXA}aw$^kM=FM<@3VppZaPyZh0P?tFAq6jGLUdnDuaCR zNWSHv`Kx^4y{xizYP456;rSUW-)67**nyC8&IOym?vdm|Jdn{53KfMVI9%wfAp%SW zF}%4K)Ud=tmj4Y`(W>clJ}t^jG4TsgA7OW_94wOTn^*GAo*y9Yn{{Pa9qou73&4lg zfJA8k;$z-&fO;bn;n9pRV~~%IgdUuddS8d)diCzy|lSl zpOzkSA7!IySk7Q4$4=AgYmo!F(3OV%7n!AC1vK#VdY_$*+17?7r*hX~x~Oa$cj2`- zA>oOO>@suaDCB;H?7 zgz3hu<9`D_!EA#8M9BI^}p61w(!%ztvIXc!f`3^WUx$gbuY z^kyr=t(RN=nopl)f&~?Sc$4VelUlx^^YaMd^~XdAmO`=Ed$xv#)hv9K9xX7hL_alS z>rOnE8&X~Nom+&GujrhgXlWtv2ag$X&^My36?#8K zXFt?Mz+)7SHw{97-z~ykoXGl{j#4QMP#MbqVuH&O#&^Pp1;jrKg&xbjm zuGnarK-Rt4E|Atq*L!rG08u;YG>Qq^PaKq`Rff*A0WR^U)HXcK4BNKK6{b3P(C z?9=bfS;)HZ=dY%60XJwY_H!rib}uU2NLz(wU7ZNhsd03A?nE9ybEo544c^k*-R#54 znus=ASF>l;b6$=N#U~!nQ|~WYYo6}p9Ic8!3XV8#Wvy3obC7PiutvwT%uqfBWm)n1;GI}VMJVaZ(t)QZ#O3|+PBwA7*Au_~e=CP+TakHukGbKhtw>$v zLxf`>JAVXSs5`6kDg}2h}Uc&#mUTUt;OTl5K3FBwpuf>c(jQCpn*HKLl^5QO^d?q5?UWGt+`|2RMUz z+w#2; z#qojpI*|M@&O=4B)#hXJMk;VOhvfBpOewm>Ph*#o<-08-vC^bExp01FzX01NexA;< zu{kp^U*H1fSkB-Yf@fE>2MEue8ir=b*cN|KD`3!6k^ADj0D@t>*K!ZSaw)R{5K@FV z)Ob&5aJi086NzU7(uSD=;rHPrz&+#uUHAp&kmL1+7yp-L3qsdZEiK5c*36zNeqa9r zw*&XPL&fNkipJ3<`K1k}9-X7gzmNPaE8%>UPRtdhf7*trD`^5Z=VT4kUagv8*#J)5 z!?^`JarByJAqBQZCU~sNvXUq{<$n7>sPIyrkn!!DG61-|XQAUpI)aJ`3EN%ZEpRKxeOFlYj}qa~ z&nR4%MkPgN8SRl?ZPR43XX^iZZfY_q)3Ld1=B*^J4Hg7IS#_MJQ@Mry>2%>)#S>w} z3(a(7qdfm*LFSI>X{T)cFC;Ts7N)a}Tt^8=K3%FOs6&RzoyvBe&d1JINGA|)-dhKW z_}b2QnsS68m%N(VN`T!VKa%el^4XZz+0;BqA8`S?<+ffeSm<2gI*s$f4VN|)Esr;d zZ8P3jdFb-3Go`<4O5BXKA;!q`9iv3OU|+llQh~!@UN`(BD*nbdEM2{;BOU2|!TuQomD-Et;IbVHLMUtqmL%;|sa5(KA9^byeT zJtt#}y8PkF#Z=Od68c=o)wD=B#D_;KT`QnP5IIEIc16@DxR*T9yA=5ClS1+yCft`j zmYC|0-JHT63oaH?J$g-V-`&W*h=jyBAxt#?M#GkEY;Dte9*j_r5%Vu0FJri7f5 zckSSQVAMt0uQ;&T|9M*9FGCuRbRv!P?s$FtLvA3`HIHZOo>`PrU5OP{(M~-gv=(%8 zK?R{%`n?3wSN3~fob##(9{@J+_Bwp$PSlrW4QfXQnRh?0(TUFhUKdU3*pS`W3%YiL zNOE}&58cV=qIa7mM$QB|=C>!8G@p~Q&t@YpNf7);N!L-YkS(P*W|X|mY4{_W;DKlV ze3=htyVDL!iK?Sp@QmVmZxQ;o2yQz}9M;Rw`wFX4anjj|{>Zs9^u8s_ICT5!e8k8) ze3F{c5o=k7dk{LFouKRFAbU|9?B0UIrW-QP4u+W0IB|L6V43ekQwLOiB}BQ&>s)g= zo3u}+7&_ujkvEWm2=%I*A6IFf!N`2rHo%oTB<7Feco7iO>X1Bf3_g>>3)84!Hdcsc z>8%LzskTM@Eq^sIIUw;29ONC}%0Wi7P%1+@=ER#KWXZeC1h0U}^7%7Inr$tGoXWM~ z!wmZuZcq2#k;<`%66TqEw@f+{qaUD>DVPAf4DcVe3TC{U=<#Xzi`aXR4?7 zAw^*6Eb5HsQR^5}F>pSMaG%MD^KQA9n`ULel7xa>R6`f4#mN%sbPmq0;SSFL5UEAMC>zb0RHyG=?oIRk=km-#1oz9g=DDye4F8Hem#CbCh%xqD+9;r^Zp> zQ1|cc9^N8MfODjBut;=y@MYg{Pp=K?@E*vAIpuE+J!v)mkk;dQX&i+MW}2+QBW9jV z{&yQS3uZep@Qs?2Ge*rwhi0etc~mq96yR(6j$B`r1n~psi0hh#(o1A}a?GjHaCU5D z&Y*?#ZoQi{adA&&j|*(U=iLE(LKKjqD%7br6;nFq%DPTPIv;s;PK0+|+$&o{Ryhnp zbsWh1$GS;7cU=khBOVK=;K7}dUB&nPB4f}Z5$q)4UI|^Ni?UM8!(DS`I+myv+@-a@ z2>Nnx&{Z#3JJL#R2eE8;7Mkc6Dc((Q)ey4X+ zS*K?wgM`zh?HA}?L56gZXO>f}%paU0z-&umzi!ifrPOeCEL_a;x2Pmbnf1~ls zUXf;GoU2P=+}3tg!h0+x?rv0rdzCEBwXC9hHGZb$`dAxYgC;)Y8ynuNh{yYI$N9?L zF^iaXq1KohWX-A;7S$fq8?hC5it9-BohM$h)_;V>n2|kJ7+amF*jCKqdtT|G=bk5* z+d${bbhHgFdiwOCmzj)o!X^Qy=IhMIqWzwC#|>wa)_WyT)$bls&U_=`JOlLwZMo**IfPQqE;n=^%|yX7H5U zr82i?VllV$s~(N1DA#F6akY_j3D!+Lqg_loQfs<_;#KTxoI~+?u3BfZxpWwAX|J7| z*k#0@+g=>?;b|v^KF^0a1KT-Nec-<*JkKOVFXSAlAj9bQE6T3m~HWw z4=Xu;b@Y3fVAXoWxku0VATbk{_&LSP|1zLe0xC?OgVB#T(=t81Y0?uH{D>1dpod?8 z9R5CRMVqg==L9AA0z-~3hiA~{LQ12N-&9d%w_d#CzxU)93i1s`b)mCs7q`T zeQ<_OI`hjo;gZz`Gl{Ibvv7^|o0I|6 z4%jQJY9CPCkieu}X}KrDB{F%B0P87Q9cIoQc&84($=~b%>&!S#mGe{UmjIsuusLxz zu4b#%_gxxC65JCwp#Ilp$XE7TYFLf4vG}(WnICxfK0P;J#=J4?0`p;y$`|E^E4JZi zKeRCR{p6AM{_~=F6>cec4#UQh+)jBXzRdXQor4sCj=3|~*lm(G8zk0(H_D^q-EGoG zjN7_qxNo}KaI6p-@3=7XlMHEg=cz&Bb*(scuQ+wFJN8X5Z-mpvqcthG=H;89Wghrd z#2gW?Ccl6}jH$z{;lrr|jtQ;_m+yG|57c^hj#)XPiL-UYXu>~B9P?Vsr^F|E(lUMe zl^-25F1^ZB`tlhhFei*cGsgW#{T)JlDKf}!gx#;goI1Y=hl$j2!>qZ(uix>yI9!WA zYT8+4HvwAO(ZQriGveDyRzC}%jk7zC6g{`@$;xJZz4@G z1J&Hcb$)zGJ8m0bxa+w|6%d<))47mvaJz0&Zp^eT4g}8s;0sfS*W6zd@Tt=gU%d@u>v1yZt+Sif+!orj> z^J`wP3f1X5Dm~g|`)zVBh9~x~ZVHd@=kJG+u|m>5Oe{g()RU0>xa*Y%vm< zsP7Zw9svh3=LlH+XMRuwk@0+CUm?N*@lF?fy4*T*3(Wl+WN|fN@X~Vv(!9W}g`gn% z_QLd*<2c;Rg?%$EZB=e5b#Bj?!Be%u93E0-A=mXxx^B$HxU7P9f-_-mCm$0rj=49N zFX4IXaakhl_9~8OVJ_^Pz=kl+(E)O&#^&t^i9_S|CkN-=?GS{;xTVM@ax%%C4-Gy( zG4IK@0Jx;rjBp2D1#8M~4{QHB^k?hRj}M2D&I@U|!CKouL&K9YPcWdK=LK>TjbWm3 zt{f;<^kkaR!VG*|giBqu)(4*zW?`PEzU!^7qq*T&o_KIN+vk!DY=Ua z){x=Xu$rP^-xIM&#M_In7#lNlP12ln@(m@p1?%@t)E+H_+Am1$Sxji~#C5Re`Ar zxB$MSD-&8Dmbf0k+aMaR^40CYaVnttCIfL=6J$@OnCT`6e4b0L;XLTvO;rAk*%uy2 zd@5=}%KAZ2eIUXUjvol_kXtyIV?G>7L-6?$@ASS$N?oT*^lX*!`xY7T9fZzUI-vai z>K8}D3)8pbxRkaMr~plle;<)0<7PZaNcRpCW_%|I!ahTUk$RsB><%4Z&K-A0961+l zZVLo=ke`w8!*0T{m9M`5yZK-muMIx6DWkxE=5xp8Z@mL!ZZ0(mvX404fxmqD>(!r5 za1?lwNBcYE&$?+GD{*C{OnjvP>yf*3lTNaY>{1pb^^SjuTSmYg~g@p#tJT2qHohYr0I!lcAa9~=kD6@;x0q0aH35#Q|r%)R{U5oI2(lI_aD`e&B^JI8cT`oJ;avRceLcgt~vY?<5?HnTkJw_EpM(N0^ zpY68@{uFN1el5i3NH5|CtBFQ7*5Crf#usWhq?HtD9gfb7*lIIlD9zu|n=Eka#G`ck zEGz(Fss}7@-SVWiY)&0)&i*I>i}xH z<19IW&a{=Un^AW<4uatrp;*$^ry#=1!`!TJV4G!A6G~8#$wbyS|^oY z?g>7T!c4~;EgVN~w-A!zZV5$2zuX>Q+-iyKjh(>wb^GA1+kBjLjq-3t4;3dz32e-q zA`Kv)UW5W_8iR!W32pFJ*x}UC-0%lfM-I404!*O8Uvg=VVtjSrHCq#hTQi4SQ;r%2 zlH+Z$TheBE*&DY2>$~aBl1e4v3z&0KPxY>0qwp7llAaJPoE(16mRwj_(F~SShuYan>TS)a6P{BkP zcA^gafMx%Gq35+hA64GlS}>Q3Z6BN%>MtSMkUPp=t+fhxQ{i{Mn(KZvKVTiHL%*3G z=$?7b-1d~l+aea7J?D?#xysqr8es1Wm$t?qf0b>c`kD)Duw1^|Gm33ETh(^w|3K|l zVf#mGqs2QU+DDFVyen=zX2w+d>8FQwFr06d!dHE;kDNgKU-_;KD%8X=cWkd(+6p$ zz4-ilY*96(h!K>gdF9gN${d zSq*jy!nF_5pg8%!7hZANHNA=`c{T|#^QuSb_xBK09SYH7mMh@rd{O;UbKhrlsdV@m z{O^=K1^S-A^^fls!TnT}muW!$s(J9&=VE-X5y$GKxc?i(OZ7^sT-eJBXV=93vHYwa zN9$~)E0N!Bw~?Lj^e5Af?mIfZFd{-b!_atsOODxoMeQ#0j>&VQ^~M@H;V@i9DT-njaav)-Y$kWO$4GquB(zqtxk<ki<%dmV=3STOw3{`VadckNz2JtrP5a^(AzJ*CapEriY_#IWwQV zsqP`dr-J;Bxt-EyRA$}3aKd+m{&`kVL}6P*Uz8t%|6+R8mva!Jpns~2qYMzg;4suE zjvm2j|DXqyK+52d|KESc58ydvdD=BN zL&sr^xBs;%|JVENd)VU|`Vduy!1191x1+p{$t#M3|8h|O>VBhqJg#f|Jwl)Mpg+pD zKP^U_TX>7wRaE(W-j$DAn1jv0Euc54F z{)r!>1{^pvyjpIMM{TG{R8N#$Z2s>8;;0BT=v8h>(5ze&iE6N@b`#@pHN`YI5WUqk zV^p;;!sPpXP!~l1i@$pZ+o#tOY+<95Qur-gdVF$;gk_UoJcGX_FAt+Wl~GHeOl*Hm zB1tjVRG%L;GhCJ6n&b|&>x>-CcmY|~hOb9?EEDAPyzj6V|cEOsWZiLqK83_^+_ z{-ieu)TZJZnB0?c%}{EiD_#)<1R<~Hz?%eYDX_-Gnjq0ej5a*c#>ks0Y~j3vFHIv% z1fjL2*PCQ*p|-}GH1ViS!ZRZ{g)*S!QI#+VSk!_vA)$?dHYC{dW(}V-p|$4P8er2V zn>7ik4N7WbGBr7>Oru0BfygspO@=d76g*>^nS*%-k~X;8GfbLnlLt74RihOHgQi)3 zp@j4;5#~dfhGN%r+hYP}mIe9jG#Q6p13GK}x z!m0-j6U~x`I>T#BPkQUlUCpsEJvp;DPwMSX6WqIFmt##D_-W%`Yf;E!Q5yVeLv`k* zGJo`v=%+35B%=iKV6MMo$gTeg@G*T3>Or_r*Y)W;RH0dXs;>KV;1ESlu}V-t9QL$> zP6C2$8kcbkWcujyXkVRk^woyqHY*JsI<(N$7eLgP@7P^U3pKdAg(}?c?;eH}7p?cv zQQkLP9{wU0pVjxX_zkD}`9G(P5lNZqU%t+_(C{wpB;q{3-}8Ey%bWDSWA1vf9WBnv zEAQ1^Jsnq@@I-ELKl9n&R(F@JC5IwEWc@a^oR;q$@cMg5nXO-slI$?@{T%%^n-?|p zdK_Mt^!%D?J*z}jj?5_NeUmJ4H-Ig%bdCW9hxX9eDFO&WKJUl;dGw%KI@xR~f%=cd=W*v{K z>3CI{pJt!dg`3Fx8s6u_-}M;yOlfb~nQoWU;`?5uPd~8S|7sl1)g|R)_kYj$LhB!V z9OU)+gH`g;erjL$<%;tAtB=j==ga)5#duyMKiA+({|_qZC-~y0csLyG-;b5Md;9)w zDv@pWQyqB6ZGKPh_+p|xoxhFbdyn5AbLTY0VLPd;UzzrQ&3@;H_hPqQPNg4*Db;A` zzt1NX+T-&4XxZ(?ztsD8c&|!&J{^Qt%LTapUgj%{;`}=NJYV{}|GoCV6%Bo#Rl6afR?B{klIM{pjVDZ07j8tv}?-e)H=6(!Lf`_hNT3 z(s#%{|Gv)tuB4x%?mz4F{Z)f_zt)d|LaXZbXGd^(|2`)b)ax1hGx}WzjpE2J zg}?s3#uv83;qZN)4+Vn4!v3u+EO%+%_Lawx;jr;@x(p02k>h^6@0Fp>_=JNM<9S{? z4<|?A=rgUK9>2t}EKWZk3*h&d=**0Lbr&BO;N;@syGvFH$t_5Bo3nMkJR^_hp8H$L zVcPeJwc!P))V0E-Hu%?`yApoU9oevPAERDB`PPgFj})W4AMX^}vwG&7H`Z>UuO2`~ z91diNMar}r+~9CyBaizdy{(Mq^(Zh;oRBt<#U2FWfDUU@N8JIhHq0E@8&gb!`3tsk zkR0d~rsSBsX$LuGss}&2Ly$0BjIP_Z?XPXywr$(C zZQHhO+qP}H?|-XiH#O^=q_Q}Rr1Iv8`JXs8u{7{Ue+Kiz9s(4x1Ke*u2WdIi5umb( zvw^lfIy^U#kDoch=-@(ef;1S(iCS-xIC)HhjQHi+D_{za1MBi#IoSG={uRLAk9fj5?#3zRd@_(xfCJ1dD2ju%3jIsEe+hOs z+U@l{KM-{gm~?r%b2fe}nf>N^84!THoGkDaCnphV;le(XEJB%nIU?Xb9yJ{OAyj!d zl^JzAWlfbEfBt9-0=R#an`F$-+Z-JsjwLz(0093`Zs*lmpPQfGVf_@?i%FvQ zf_5OdZrqyBTVL0gw=5L#eJxQ{9|fKiJzWWLwkR*j?7$`we*J&9Dh;OB!{%dwY=f~d z5uQeS+gTyh$jklx6n%sK*2c2+eZ&AUq9N;IiJ0>A@i|fNDV;vzRDrQzCRE=F{)Qhe z7W{%kALt*EFgqaBm1iA+KmZ*Tg1izEqvU_X(gENvrc8*9niA0f_yJ5H95VrQdHf`z z9?iZ}c}8(?i%bq56=bp!*|LS{y>InK9F9RBOR0G+VU;No=f*ZJu<*>>EB-mp!NyFD zj*w+My1h@Y>Ppd{J>d?axh+Pxoof6~V|yy8{6Ttx8P5D+wHi z0)#ESc9i25>JOU`6_F$8Ui4EiJrBf>>F)us1Vn=0jX)3r&}t}y&2<}9bA;9R3#{kI*2P!QhH*#ku$`HM zC+q)6@`{6g&kJ-8wRdd6Z8Z+|j17Q~%xIQuR>yHaklhD_g9tDY$c^OxB2Wo7j!aMh zOwaQXnzK>aFBs&B#NJw$?sXZY3>(g-e*|QW(q99-E{)!l4&Zxl42T2Ijtvn19mddj1wVWJs*Dvc94c^;`!Uw*ulJplhl4RM81N47?+J?k z#C)20FVGB9&O-3pp9rGP&_4kD2HXZbj^PQIntdQS!Y80bHb)Z{?RyS){!35>N!54o`v!pdaA#Uq}S{ryz2U4IpJK zfAfJ;U?LcPw4gVjN9b_O?0MjLr#7%|ym#jPC17EQd-whQ?85=NGlaDmn6(rEk1)#W zQfA&Bdt-@G#Pb&Cb7`LKBp(*OV9G)?ZZZv&>}Mc;xaf=Kl`KGibr-kO_6}gFj+W7n zGBPTe>UmiPGNux7`a+KEhnVV&%lrPB938|OeVQ6~2ii2VuA!Z&wsk#nax(Mtb-G&e zwK>`OC3*R^?pw`3A0JQ_CTQ>??m84^ueI9Uo2?yc1NUy-TJ@fyJ=?daot{-N*7J3% zkz?+o#|wQ`a6{~toyL}x$rFb*LyQeqF#pK;SJ8p4BQcLOlWu> zXpBiDVtqQ};uA2y-t#eI*qEe2VR5!&XIWyX=@BzgGhFxDpELvJ=SFD@66qdXNCrXW za1+O}nP$%2i=iI$57Dz?LZfE__HARJ#f1G>7=3^T6Q^ZEd`7J}oWUy zVWV;>r^Wo`VdnN91bq}?H(h=>RMdgp;YY^Zamge;Mn{8NT8!0bHOIadk^G>1^l}(k zSYj=bPYN(1UHFFV<4?4-m)y${k&RF>2YopJFo{-B+~+j6LtKX6?C(@iCJo!iny#rW0c! zR*QL{rzOWRAy@PCNi!<*clv4M6&6Jb0j&#(gGOl4seL`{u`pJFCirD=VU zXA)WsBKm3eMZSHVUA1w{F_VCtD0uIYj>zY7cY!YH7=oT7%xv0ak5?s-q9ajEnb^>? zW24CzKH-R)JhY4LyVw49CUJ;VuBio(^uxdk)^)AGiJ!0`40{33wuk^fW`ey}1<^MP zRnSbx@bC39XJ_43uV@O7=m&wt$QV#Ig`i7WpJj>l}@VXSpb_iBNy# zpMlK8?*hl+Mk=fRo{ zc)+v{)P_qYkRAc6Zl4;vlvd*+mAS$B%H}wSdB?jIXN}5&v#?~?Y=3eBLxEpx9 z7_~!D!?S6I5ZD!}ZKe1HwF5sDLP6nIs6GxvSVy;Zx5^b`-KTXFYG}3Bb(tA80V~U4 zw2yFdK!S}P5js2)(RrR!D&+#}k3 zd^RQ?7I(B29|H?(CR}ek09!q$q@|)y{D^f6kB)v!Jo*%p-2(F^jA0c$Us=tC&zF<< zPwK&~v9=n&-&8umy@_W6e#AIVo+$gS1L~hdw8U9hqTn+C=NMaW|AC9^08A|w9FG2t znF3CF`ueXM_F-Aoo_rQXc$n?bIxbkZ=ulwcAqUCsWUbPR*7Ly`^fuxcY5IA4nz@KU_2!7OY;_q zd(9m zbFnR)2{YmeVY@jZkgXM0R<`S9W&N8&G`?9uwItMq`bA>WFz4BOIm))TP%k4(psMAP zuAv!IF!Lxor*oxTYL%g(Wr|_#VO8vn9K(4*9lMQV56fD8If*}Y>ih|mM(=VUYqhfw+-i0q z=m9^`gYU})fdF#}Nek5MBLb+y<6y*#1d+nblMIl;((?dV4itmb^VmxVDT3~=0$!Xi z>07?T=A#8_BLW-((?jM<0=Z+^(}9#@25Q5z1xYk%&Ff1E~5YKg-$yECK4X01OB1fk|WSO9UCh(zEWb1o=Yh zI|4F7*3*Fk;B_g9g4Oxg0L}BbfhB;o>6-$2g5>j=Gw-WI$_oT)BkX5^F~bPN1MiG4 zQCfL}*b@rmfbk>w$AQ0sMdQ`85WE34fK?*{tOa^w6JR~k^@u!^3f@7%7O4@G|MjrMfy^_TKAdP&1eo+4O@D?pU~qAJeZ8t zwXdUwW~LM7l^$#vy+w=kHf*t;biLh~(lLL_M;m#r5)7+00trg~n$*@25TdEmTNlxu4A4i2Gw9}H|av7Wly3$3J_l4`vDV&{| zI*iqG8#5U@u+{oqHn%6SA}ddpwk+N2wQ1JQB)w}JyLzyAur*SvK-S)cn)S`e%-t#W za|&!6z_CFa7kYv0M`e4`c+yqx=O2vh6Pa2ukQ`F|GbD{L&LFF(ftCYWr$U-P2#Yfm z+h2qw1Q*-;(yXK^Mz61#IyV@LRMt)*CES==l*MBg=d*t~td8$C(nDAVGSwW_2`%fH zW9ZZzW$iX@WdEvr4Q83Z)jt`t!4n$Q1yXuCnd;0N>*e0Kfnc@Ha!p3|%=E1r_gKuye{1 z$V?-k1t6&%IodmC^JQfNz$Jy0o*-F$bo^(;kC}M<-F4ya$4)9fgxIbDVuS#GbpN)M zO$wIGhn*N${LcrM3|tm~H!f|-@f-Y}9}p7^uvQMP>;Amr@zYk%{}%#49}o!m))`k2 z4?m2S<-cdq0jR(L+oP-aG81c@^k4_5Q~(^zAAW4~0R4dE$A}%;w)k5~dRr5S@9E~DU^OxE8Aa*S_bdC-@LuZg^`7w9Nd_Iq2fV~$tq zTuYJ-hjA9vn*3p*?2QZJYv{8O1`9Xp9`bpm>`F4OtLZ835LH_T6}G8#?J9yFgaki2QEoS|gSaLc24V0nwgW}~tnKO+iHO;Q6jb`{XxgSIEk1N86jbgKPqwKj zfA4&*SR5kneI%izq?+VY;+gCUe_#G4r0xNMX9;&s$EMMF*9?{E&Iwd;)G%*Sy@8=@ zBrHl4fEvk9fl&gKvWIXiHWxyNNDJIMcq#F{<3se1MOZ9Nsm6d#=%X?j7k@x$Xo63& z11b01YGch3JRq)^&Au-Z_ob}{V#$j<&^Ilyh?zu>(Q0c_{Y}7z-(zIC-iw6I(9`ic z>OFr1fxP(@)RXm&bcJ@2ufAmiBbcBb6A)4Z1x`Mqidw`>~E3LVU-q&_+{?7WzNx=+}HgUJ^?v&cSkZ3dd*=g|6`k{dsi^y zjrFxdJzk!pcpqzL5gYI2KKQ1(u zTdn}&*E1)to2uA-G5d_)ZCm(>6&q;B-NPNHu3h+fGRKJ4ZA(u0oFTYAfqkVZhqgAN z;Mbe82RoFnkC>hn6rL1`o8ff<$76w{8X zwg)W^dBdoNK7jPByjr;W^wcOM;o$%V5NV!WHDE))M^W5gU4wDJzYW8Ebaec{6!NQ<_zhIXC!9;u#{>nrWdZMr!(wWuV+5VX6^u$ov~+S@sr3|=m+tf`sV z^XvPU&7H8(H@nUqT@g4zY4k3wh~uM{b{5(+E}!1B%^dy2u5A%GF9j_fJl39l#$QiC z-8kyFE*ANY_8TxabYs0PVN!dc504Jy2=1$mZUH?=pjR_JYi#*y_zHd-{`s9QWdbw| zzs2A<(v<@OO}Aw7=!_hXCYAe+xpMb;_TFYVMjBw}(11=&J3%Mp^?XpU0*F?gk8}e= z;L8L|xgu>i{U$o@X?oSjA&{Maptzl<=k4fs~L$a3`?^Wq8XfS&-__ z*UTb$K$G)hTRq8UP^hJ=l0)ABbN*wvJh2+HV3kZUo>!P^4)aaWGMfJ|UI3yi!1Xf? z*-{Bn-ZWl()$M?){EnZ^7i-{CUXGDduBB?`gOo3SuRYYCIut2=wF(~_rD*r&!X=LOz8JD`nXNVZ17PGh^ z?!6%aQ2M=7OS!-_DKK|Qdy2Y?&0#C#L;#2}3WQHj8mUUPIw=e`DW7#?=jEYf4CPBQ zfpbNqfHlE+u!EEP1iet!%vW+MY5~Ywj@(pb`3+os`y7txvXR)Wx=+# ztOCw^z|#VXQfJI=ksc^CHm~6|C$s5f0~m}s{4{?)HvKLSJ>BSf9C|FM?|I#wHnjI` zOc!PmDELb(o&po2+SQW0AmnqZ5&$MPp~`}B4l8Hek!s2f8nyXFQ;&)n?`QVP(;kIUf@D*07N{Rm~t@xYaO zQfgM-wA3%=5?a{`}_oHowLu;|0=xWMiH_C?PvLvZ*kn2%ccn@Kz?yES!4DYSlGwf`CD|YK{Yb-X&024lr zC!64&pqqWFxfZwrcEe6CEJYq_GXGos#3?CLryHSM`p7HTA+xlPZdZrEdfJshoe8lF{dS1{JhJou5aSA+&{d3n3wGwi3n`(N7$!1fh+tu zRR8D-H-Rr(whMnpX;M~udQXPzR5h^1z&xkTdc8}~6H`X%)?u4yDX)-uE3M=97hA%k{ZP!rI+j-o`3gSQ)%h;l=(U4hyD1% z0{~!qr3B!20vYY+U)CC3eYRuuTl9U@TYe{gfy_MnA@(`uqNOMHT{~iPvBx2rTcwv& z!c@=7hwBw`XX3n!^@S{CADW%F*Zos9qouZq+qz~k`Et9uqF6b)xjDi$Vrf0cq`Q1aqHlsA^R$O7rDccbvN~5G|x}a5X3E9cKeS?)ENY}IxUDIl=*d&Y#H}q!Z z;d!dCeI*}F_ZSABGYx^M+k;u!;M7V_$T~@sezkAVFytquKQS#(;me{oPj=Izlch=L{pY)(0RGHngAX83;VY)nlKzH{ z+~X?jsmFCc-Qb-U?iwT#&3#%U-i*Ttc4HSLAtJ3lNhPMfvzgce5B9SDcYa%2JHjTz zgCQ@@)&$YuEzF9{OX*X*S2w2FAoMmF1_VN!mQbEzn4DQK1QEzS8HNOLEx~m_C!PGeDmSBQkpijkbgv9}H4{eJrQ*zPi z$yP=ymjgdtm~1QwhZFV{#GDOpn?DqR_7{O~qLy~ZU!C^C#QxW@;7ufhJbWybZY~)! zA^Sf}Yy>s?1$p<|3!c1_e|*rB>E8tJK%(2KPF z!25o*8?u57BzUm|E=uUP!3siOC@~uDcl!YZmgYDc%t78YqgA*P5`WLM?n#Kc{kYnq z@CM?2IL;LJY}mFyBp!rW@Imb&xvs^s*FR`#o^mc}!ZbGU7mA`3rhi9;G!3!xDvFu114Y;-o0QPnF-Lxp_Xu>R1EsAh`!UKBjTpVP97FiFR@MZu7DYRXL{Cl z1{~$v&BoDb;Tpb!tP~Fq9Xul-p!kd$51hQD^ihwmV&>1h%Zyk8Ew9wkk?@;g|8)>F z0fIQDjT!L|M?+uy?m^*x5}FRV+-;gt8OR z&mn3|*yi4vjZYdERH>lg7Da{wKwW-?nXzo&weElKJ)rOy95U9&4*-&E+O1#WH|FOi zpqZNz>K6osUIIbH+Gb8)DY7|^F9(;fXMF8gl48m8yt&usm3=prdS&2)yA_hU3yJ1B z#g{(s*3O10t`4`pu1ubU?|T+lkIQYT0Ds>gk=(9Aa?8$LdotMVQr(5KOTO9RxQEO`S@F+kL=g&B#k zWxT}2vQ%LEZw=aA_jkA5ndnTw_XiUm-C;f`-rj(H3XHrE$7zzp6Wo9tp0fqb(ySgHb4eT*KV2|2qMl1)zHe z_}&AfC?>*kfZ!y&)0&}efF4#{{dvh`SW$rSBxjbPCB1nO0=m}9;Xm@jiBXXzL+A>h z=XTUTW=TyY#m+i?cW>NM1;|}V?5I;&Q%DN6b2&K zL4qu-p-p34fx+^(K~%?bPr28U}5B?2WN0$DOLTF4l7UW>-B!_h1PWvM`M zm=y6{(!Y%YQ4`2a8Q!kef+!M^S{R{*yq@_e38JukNTTR2Y#n%!(G$jru25KRsR9t6 zI4!5AS_0g9=!{&0Bs%I2=z}vrkvk+jj%T{rEFvD$@KzbizK0ce0CI(Ls=oRPOJGDG zv}$aC0z`CAA84-~XbL2f40v9Q*WhxqYIhE~C`gRTvUAPsX%RJN!gYeWbY6;997RphEnisA+k}f@2-dYj7ovq zq{o_;KKDdv$!bQmRJdTMasC#;s11(&iNTQJ-0(%%kA_FGGZ3NDBYeL4rPWWdz10$x zot<2>`2VLo0RUk88*ytk+@V<~$bC%?ZWklZTXp_9T`7Q^79?slq#-ViU|V8Dfnk@^ zKzw2_*2(OBM-&F!=cYH#W5|KruVfkN`x{M$_%@+vLF0k!WsMkxur2rb&@U+X`XGuAFBie^&!I0< z7iD|eCZCFjK(?AXUw~mhAOJH*S)~pq5(l{?p@U-5FBRZBkk73L7P5yRT)=M+{@3o1 zq7P1rX9yWR#c|#j!wA_%DP-S_Rv2JmkUL|ZBJ|7B=lg6;}Cn{aABU@ zU=a}?ls&>7{+S}KD4~xKF$^=({ZLL}!8ZSiytrC4C!#!Y0Z{@Up(0T{e|{AGIbAjoYLA~FFaj@2kuW`Q zzF{=dt5Ec+(BbIyCi>B3$>5G_^*8N0ZTHIF)M`HffL%N1KB`tqEQWbDsdVrT6sk9Q z@LqbszN9o)#UWBNyn&?|8tB;omInZ*FeO@Lpk@*gy=(SqZEU!Zad_xY5k_udDC&>e z-lk7Pti8Hw!YsQRNwgplj++80?|@0H0r0y)EbTjSQXGZ>6?q3YC>AxPlR46QT(`gv zqIG-&k2@jkbs%9=Hzo@?qme|m5bUYXAOi}uhLH#rL2jb}5?40A+|+bF$tw{BFd`u* za-@t%WPD-ouqF~CnPnTbV+C`D-k_qbg^Ne zD3>9ZwCdFy0d_*gM0-`ng0_kWk$QAhp3HofwKAn9UU8W z5R=nopl93TBY~aG{kR#_6q>Y(N^`cM{MAx@=eTJ2yUi23Kt5S~FZ|=TF|il6)vo@I zFvUFtMj^gBze)^U(jpCQC+bgsxnQ25$QXG!j9NS**aV?bd&7)zuu#6|1uaoo1TJ*{ zi1t|!6G*-y^B{pWQLlKim8b|&7}32XXL#YEI5=VeR;jcDBgbi$sVm307pa3RrFHna zKxPY;W2zpCEHC*9B(#Be`UI*ER;8TXNfDb;1VTelW$|~RF&fl}dR)vLP@?JlNfttc zwCDtDri=s}nPAq7Rbb6vvlmMAwJ;hPs+fSOyQ@a5o#!PMl*rS5p@ZY&WEsk9v~Br_ zrLdf=$0j-Y!FuRBx+C9P&AMXM%p*A{t33*H1Ml<02iPc4@z^4&>`1drdA$use;OPS zDO4&2XXT^v-k`_^5=scA1eG!+NMiA}O_&#!bx*84s*@42sv@gydkih4YM>Bcm^()T zp}hnmWr4D!WM6r41y!OJCZ0lj4xqvsF-fMZt<@ove;dyI+M>#jxKeX4U7c&KX(7dP zhs+4~oy15+c!{KY42O#4vyvOLsn3j20i@*y*}n&E5kCE3v-5JGN>~vYe8CZ)?tS;| zYUXR@Mf5r<=K)`v1Vn8Y4(33y(9XG)e22PFS&OsSx~L?Pb%#63hZ* zVjZ+VmA6G4(F9BEIUQsi_t=jjTb5kgu;))`Kw}c@IolU(ewL{ks}@W>K&hEGCh6o;#Xqm!M^0i73=G8daS)zh&qUsVF7iRlft1QAZN|*52isfHaa59Q8UA;eg1$p$0_+NqNQA2O z^OBK>EE_#hI0#{?MoPts#MKi^SRkeaQIcg*3`ft9pAx00fiwpZ;&nX&Nh}to!P7-_ro1%F>Lh~)C0=GL-t1*_%}C)6~pbKPqx z8{~vyt@Bk@dqvw;%yYK2se1KwkWf4hcx7Lun7<%wKWQi zm@4uH^jFU1jn@e3y`q}zF(Ks(!QaV}-7S{gX{~GVrZm%=YiN#CyOm^3)(D(kAT zdLb(ACszJRREm-9(MXlj%Z(v=JL(@5XuuVt1>M+Qw-cG0H1=^aGcnZKTaor?c#IXH zy~63H6oSM|7KXXbD(=#?B>j{knm^5$qXvrM{$%6X)-2JK^qVIuG0TM@~2wq?}q(bk5rOr+53h0ghmH*3q5z@*2P zR;DuqfHiZd#pvtf+~ zyDdJFIh7lbN};;qPA+d93e;+wPo|7Z1tMp)(7Mj`+@5W0wQ6ofYr5XDH<2iqnA2)< zgmclQZALQI%>Yzs)5>NW<#vUi97u*!G(oYNqVe=bZA${eiWXaE&k&%3GZhtaJTrvE zQxP_dv6gCQ|5Y+SRW|ttXRn=O{8T{7ZdKC}cw{t96K2|K_M0grQDy)>I97j;s-1K`RoP=`D7m4jJnh zrkj*lrOyN|{EyuTs|VtR=9uu-?@(ep0wz5brIqE6=eQqOW8+wFrAe6-W9Ppf4`Pro zuJ!^qc_Y=O$bi2?3o(!?c)LMZ4#ZxK-$^8YuT4}qM{P>oh(;AJ0Ibe}TlW!kvwBbJ zQI61?WdVZwB<6Y~KeI{LiJ%5F#ug)9ewDN9%L1<&FKGD4UWoo>!(k9_3lN+Oi0Dzc za)L+!(vty#B!#vwCR3;yD2X_cm5C2g5NIS`(FACjA6$SID<9qQ6$VB~jZixphm&qn z$_rh8g!G`vK{lcOX0{$M8;E5jOk=vv7mY6{&^~bLjqullFz#^x(h-SKbAwzHi7*M|C(#(aSHu~Uk`j~a()ov^n z7GE9DUpva6$WFz`KIF9!1r_lKj>yxwU|1{2tfd~o$O8R~79&zRz@7^2AqJAb>wa0i zqe8FQbYNs>!Sn{fE&%B#K0$`1o~j*ykwaRBRWDkkLsKM2OLhVnC3R7PV7U?{PhN}` zgcLbw3bts`C>Z*)FA z0K-%ke}EWSC`fj0AczJb1b&9b^-K8mYVvJStHKhWaziaQ9Y}(a@{(aNfjDJ_6^bWe z*c^VJeA3ytJW93WsZlNjl&C?!yvNdKJA;M_x~GA5KqJPdb!gxNB*LN^Zc`ac8X9a< zuRgd^W~Kt*IU=SD2}a9qBgmUnV|kT60;`!( z4m2#+4G)9t(H?!HIKW&t9=%vwRKBpiA;d`O(6^D%lBWJmgPg}{N( z*rZ|+fMG*oYSHBoSv{JjMp@zPgI%nkT=#mUCK%NEEV;bi@bKSepd9GJFf+b#h9AOe zuJVp{vnJ(f+JueWA}%Vbkdzy_Y!GObh=j1pQrA^%T-{L@5Mon!4CEj@bh$IZgj@6^ zCLKz&L2$pU1gjk;=^KGlZ8ZErxKs(il*?iOF|pJcyBNnMzR?2yy{zGNb52o};ZMra%Y1;y_7z)h%*lOTi|4DIWbHZvi)f`&&H!t=pLb(OJ z#4mhusyp);(Be_<9Eb_SqKpU#LOH7*k)p2@4utMaC9d2o!bSTa8yLkO7%E<|l5hM2 zRczbRu*h($K?yICuLN6P09CtKv&RBSR`K?fi&e5ha>03QE^vRKIl(eV^f{FG~$ z?6^3Nl{br2xo~v^NnjE(GSkuUqkt%IA*(2X0D+z{kHSiJl#^}~Yej<0Y`QO@{gxAhBKOURHbMv`{HQ0u=>rv$;qo<)D>R# zeEg8T`o8;Mm@Q}aqd8^Oln6wmRiIoU!}KjXHmR1BCc^@1Qt38^qM{A7H?*P*>g=55 z8hJufDQ+1v6|Xu_a2r!g8z@3#8XR%Sg#bGI{bZ9C>t|t;+DnE=jnMFg{m4TxR{QR- z@P-n&HwP}EicZ3Xm(m((Bo51ku^QsS7@k1A@@OX&{IuW9B8wtr`{7!c3BiKKXbhA>Zh1twLv-?phVc6ekFwcTK1Zfd~x_Vso=n zDhuY(S1)Q!t_vLeBt{JNk3(7pr_J}^dG@iCxyp+CYC0b1m{DbCZxU^=n`J%$LCGG+ z$180Q(-aT?tykXVO=f{xO7SBs*7lL2LZeiCC@ghW=m?Bi$XK+HH!K>^?E62uOL*DZ z%g!*r@<(>lxc@%s^yI%S6c*ysg7?TwA3Bl3 z-bJxyhk#vP%PdHf6O0iI(q!6 z?@FI#nsq&x2YNhj%(?}Jb_<+HONQv@NVYIZ4p()wHCZxR^-JR!XY81fHaX3X=|w(d z5~ZtIX)C&UmuxmI-^I3Uy=*rbhz*FK3kvKN^)8QFZ;8_y?IWOZ(->Xl{ue3z1xj+W zmbs8Z3YA00J~YCn36}vWD;6T`k|&fqk|9`B5!x3>En22Y1P9(vvXq3>!?B%?InsLC zX`l(1<(zn}wGXK)=A5!fE+$m;u^!;*YLqTvsuyf-x}*KrhGS0G0t*uJ+B z=qP*n&#FIcmI{kwkt_HLsDy{}a&8B1iI9Bnr4N!caCaEFMlDax84+Q=^E@{VYaA3# z1bYRDu-ZdIhYh`8LIj~_e+NhKmq+t{$t)h~&yB|oHzqqK2PPLrhqE^(4<;`r4gd|7 z<1Xnb=`9J+M5@MUBGuE>u^QA(jyOFJCsvDFiEAxwE^Q%gC3R6=Eo~!hTj(_Yntaz2 z-}qal)~eQFkerP^&2(*K>)3#)%y1zs+fjf~qi5n(eDUDZdSEgtWsna!?TCA-u)}NcGRjc(jnrA6&&`8Gj6;ye%vUf)>f_hR-p^#kLMXHPV7rNcBIf+cyFyZbxT-i zq({g`9mLtNf@Ds}&exwYlpZ>Ke^dJ@I<3zy)thoEa$Y&5Pb=4NtD%)m=?oh3s%oiK znCD_7I!+YK@0#H^p})_*&Tf5ueIMh@&gu&<Na)jc3 znhxq38NHJD=F-oeJNQ1nSY1>&c06Jjv~W!ma*|xQU%hIjxJBql%gWSLL?mZ|{~lhg zk*}YhufI)wpLp;`X3rPau1M9LF_m3%lSrjGU_PQbJ+HqMTw9a2PhTopy&`LNFWXP= zDJoc`e?4dG=f{nq3Z zo+({9_oN)gjcM9@t8C7+=xQ1_ns}@V=T^|6VV`*F*x01#^qsBWUKK-dFMPaoYVWM) z2RAE!bcaPh{mV{h%!sPG!q|Img}+m&nuf;;EA!{rH5$_TZOxy>lQZ z+n`I`VP)n!l5*EkRfqi^dtp@p>?=HV@SU_xvoS=iOY#Vq|)b8^kNu*gp7%w-%adHbHQZPk61lAd#BZ}b}P z3Hs$tT@LR$?Hw)uQn$M-58(@BJ@FXv%BrLx z;IQ%;;V;iYUyXgj^6d($YKaYI8%W4br3r8p=6rwuq7N{=`RvKT!*&|Z)?}3XQFQWw z@@=mF(aCt;osqG3YjSFu;yl&N9|(OTj?~nlVIMJPG@G=B}2lFE8!2BUe|pyUB9#Qt_hQNzJ^v zwBxvdTh3+AY;iD+jACGRT`mmO?|XYmlaif0d^CSr1+6tz@2`G7?CgDq`wzP}uJ2Wy z^~*3VF(rP;=|C za?y1h%rJcUR*Xttnzuo3d@L=kxZC<0c&J~S9=Dry?yz6~K^0CHx+Hw4NkK*zfW&C`q^pcHF8Zh zAnRG5mX%EvmK;7l>x>H7n%E5`#AepAZR5dheh`GJuo%`kdgK-8NHM)O zf7d;YJvlpShFU)$ZeQ-03OzL)Ki&R`$$3c*vj7i%Wn6A3UtMIZ?MlDsy*!???bRtv zHLZag!@S|OdA2$RT6(RURhoT!wBUBm{ML>5oZWNXeNHZ0SPV(^eJH3sjOu=T&nD+} zzEFI=ySgd~hplxf%vYW2omZo4&)Lre;o-WwAO3y$ohmEPeVAjc_DQ>czTyj?iG9y0 ze16>eFk$ih-la_#RG84sK623%@haa7hF8~#+Fg}_k@Xrb@vv!B{4j#IQQ+L zh4|%&E#w!b9m}a`>`n&hJU2aiT3__sW}gXKn&m9)%_%7_PANWb$S%ugXoaL6-1o}- zt|XtR(OESg%rtE=?mColOumT72?m;h|^A4u<8>b(~#g z$S{_CY<&L6Y*Di6jd~`X7v`0ng0D%>*}7WJn6ltp%F2j{_3#h2aTT9g{m!zmM!ijq zem>{DVoQbY%1*A(HR3z`lb)RPh=k|#N-H?)ow|Kf+T>-$2JPMOLG`jRL%+;FIX~re zmM*X8PI*q&*4&!@g1z;1XC2(r_!w@gE%goUx&%!52d-XH-)F0JF=Ay-@zF=Oa6Pk3 zzrEzbv7+3~%f_{~&)OL~K51zq#F1H<^6I&EDJs40tz+nQcrGiw+~SGHTV?lj*QUMk zS810v_{Cj`Wox2*{Ck%{*Us4XC2{Y%ca<_z%d!7_>36q(blsY5HHW-6GUmruw3B$u zn13d_&O-$!hy3k`8G3L`Nq2fkcQ~)n!@*){{*Dju*P0ud0AA_3_H5(N?IL`ndu0@5NN5^4fc1OX8Xy-Epz(0eD+dt&Il zS1AEPfY5R||2uc)KHP`9_sp6-vuD29PwQdNZ@xv$os+i9#;3Lr$J3MKMRi6x(W%Q~ z)*Y#NRArKm1isirKCvLuOq(z@K0p#NRw+ry4qK`GC(_K;ZmN5wRH>}vcQ1H6JcK|$ zkc(+>~mRc?waUKB%tf0y3vUjJ}2WNU9us{9pHlN<6FDye@MDc9CS3ElC$je(B zYwys4={FbJecN%v%GFNcj%@pEXPGAsJE+qv33e|uZ_1r=kK8}bN}5AK6kvN~hsu1H z>12xHBP}jrA$7+P$vGPZ3^sB8MALiY&FEfT)S8}NM_E}INRhDo8(x28DA{mnY-mL3 zM0s{T^S+&7%2rf)5~+3uR5xpKRrrY3i@9YMRZG}fB^0BVHo+#TE~;oXrFLvyQmM5H z)UdIqJ3R54hYm)&$yZ*jn<*B-*@wFQmI*LOYU~sEHVwGAWS8^v_LCJey&K~YGh{Kw;`<%))&-JGIrR8UhXBN-$79Rhd<=o4q06!!Y0AIOl3V@?#*^Y!9KE=Kec84uqP?$p+*Vyhiy86fgAdza7nS>-q&~!+t_yfW ztmP}^!hO`L73-&@w2Lr9)YoqP9FsDX6@!yO)T0^P>dx5i(U1Dgs+Z;{viH;OJnE6I(?@H92^kn=gYB=bdJa7c_4^*3yQ?x;sy=<;Z(K)M@$n;lS+%sdTJ-B?>2P9 zPv?1Hz?aG$U0e`4Gjjsr+CSc13q~<3})b|JH;W@Bn_=eW6PBma0Qg zz=FKI(7~{$9AU3TRnY($^|+M#Rn+1be|_30A}nksJ$MTrrH>2yRr<=a8S2j zzHg6hH8wGQu^$h05oko}PXhEJ?26R=6O?|3}D{j^6V~hRD}R%>C#UjpG@9n^yXH z!yD3sDIv#%pJy-iiWZj4z^l!6>TJ)|B)H4EAXBO!*eG^v0{<4j493x~#q> zRTi1q>#NV*aU0b*zb%)vX0hH&t%e$qBYG#VE1$X6p*p5|7IysSDvu6RF=C^W&e9W# zI&>)F{An_-D6{ui_LTdRH9;bxJ`L{tT|1)zc4pH!GB|mf%qSWKOeoox0T_HZonj+Y z^8$_s-`R?|G#<*_Rg7vGu1MMxEqiq?`HP@1Me91E^M4FDR^Ymd-S+9l#rK?LIhod7 z%t-ku!>6&jNDtG>v=6tL7S<*P#Vzj&SMp?i#tPpV(X9PNJRP)Xx0X`2l7K(R?&;#a zef^kmR>!_^Sj<;kU^lbtRa^ZRFn_B)$Z~dmS`?0JKT!)em9}~;_c1`_FazGTxPIrX zLbB=e6l0rj5?>(wY8qYC71e8)em5=P!^S(t?M7BS>IcsLm;0!a^}uvVg?uJ+du`S4 zv>fQ{?dtj8Q9Km+1pe2F5y3V+pkQ<5wX4m(G6E8-DH;jkdyD`Tki4|Z1F6nze2I~* z#a^_PQmQEk+R22WXx8WI2B4R#T^|&=&N$E4zsl=J2)?a~3(Pvvmc;wN%{&oG(#|a} z_$YY{Q*WhnXFrho0ia-m(7I{COZ3@M07{-DE{H6u@Q7uH4teuhY^MV-;IznFrxQqAME^Dwe9t<`S4On#P_9t(>n6xl#ejSs?sd~cW) zv(Ih?5CybVot#*bNw-SYFHxm|Ybg$JB6u|z#p|0FM}A&!BCrp=R?okdRdD^R3cw+& zntl8QguVB-OEZVlk!71PN}TtE2x<qOi9A3aevoTSopb^k~)~IGyg~ zadMmWJ6>euM!C6};q~9ix$IsVxpLR$D`dZIveXN{Sa>$C+O?Y?pw=&Cwn#3$4*L-= z`F7K>fd?_*6UWMMz<3_h7+6qw5fZk-J8;9yiXNE|GOvy-P?7wTg34W6e|DqhZi|wb zf|BZ5sAP8TdlO8lluOAqs4b6hdG zvrw;KV==Wzc{7oA6Hx2tt;2B| ze-PTbhf4W*ufmjC+gDMZ7jp{Po(+zEccFVA`KRK0rM*@CL>yyv(QbI?Cjz~G*vmNH zNr9bIM>hSl7SVL*i#o%fN#y5Yi%ay1D#&a>`629WUln;4!eyt*@?0M+cDV_YppcR)qexN&-q;=g?9XoHg0CMl-8J)%xzY0HPP}?s?pDF1L140 zv9afw{qx{`sclktzt@@@Yz$*_?^S_MHg|NWiA=^~L8x8u!H%e)3T)oQyjpEsUC-~N3j?jHq*EO)F!+-%hn4UAi`CXyehVpQj!na*B!#39bs}(MXj=71; z-MXwn9{i0MX1!&ci@QmQ$-+{H_!zTfS{XK|CNmS*K)LTp?qiXRzUBX13YWdEq{`DC z(t%_X3ibLU%_QXUa7GV)e}XqOM}=fNepP|j$NxJ}ozQxqdGx5?2>!4}DegeOO}a;+ zmNESA*SYr9Tr6FhHdYxo8}Z>S^5~X+UnqT05FooyteHFY?OY zm6HkNsF^by&IZ0^^Q|h})oQ1lr$AdU*l7yA|LelJzbB?yfm&=cT^UYk!kXHxOOB6G zLt0F+bZgxAH-toKl+0lN+tm@>{$4Ni*_Bek0>DcG_EPMuhU$#c6&YT0;fvZJNq5&g zd7JEYv;JypEO=Z!S+=^mPSS8%_)TmmhaH0;vfP4g``cIN%gk7XocRiEThfGpfU#6l z^Qdkax<`5RZ5sZvMtFQTvF7Pf2- z6(tr96~>sAn2FSyxi_!H3^-v%fTnHlzPjkTxO#q)=>#oubV?Pw7JJ3Zep2|%9mt}> zkQGGvd71<9W3gf=4T=ql3rY!+_=^%yH)|;-R?V4u2}GCmYi%3Ed2NLb6p;R_g@*|8nOQCPjHlhe0m#FHv$(F6i1H)s{WAM@5DblYM_Y9|svj>!uCT_3AEdxhFDMj0)9hRN>)wjr~ z-6Apz8A#UIu;~5Z{h{Fr_=)9D9!uVP_kZ%=lXSg%`ReDt%m1$byOn|CFUN~Wy6KB= z{^Gj`_%L9}@5;tbf5;roJb87W-sZ})E68hs3_5fr0kHuKPx_wVfBpVd6ktVXY_$#h zB+x0mcypi8hILfL^oHgwZKjvZYV^BL;g;E!7|T?{$=K;zBiGko4|fy{Jlc=lh}}}w zd|+5&V(CzNRD02b(OrHc@cet)wLfoha%#347bIXbJb?Jj-Yv80WW+=MLCIqw73a%z zC73%&KP1cGv~G*E(ynZpzCrJZGqbb;;)VM7uS{+XPIK^u zU~>)mR~^w|4%}ip*?LWQx{%;feeURCTOBf;s#8U2om7ZHL21PIs1K+@F%|-8 z8@O#Q>s5Rq0Pa1!!Ae~@MkgyP)_cnrg)k z=x-*iiO=gff;J)hhi+%R(gU?E4Nn(^@1-MOY($ZJ;Cwd7BG6R7X|b>0Xdmg)wt;%#*KCc;k;>|9o+q;XHM1jC1Xn3(|Lrh{IMPz%2`$~m4mEu=2H&!{>VHIaj|cfD(4ub~aXlgfB1lDE1*e=TyJj;V4-C!R zpfDOAj)XFz(n18!1b76NsEJ7FQgyl~-2zp!^InG{W*rGvKT$-@U2;!pgpE=0Ee~$s z$lb5ByK*i=Y^}K=3x`FGK~>=#{-fJ@`(<}V8Bbw)^dek3UrRR7C2lBBqu2PkT4q-- zRL!l1e*CEbCT?P)XPM+XduR+9>k6*6%^da|D+(GvnFLCkJ4J-dEEPdbKa>JoZ|EJ8 zSGqkXjV=7m3GZVk$O>b<&fn=0VBULW9IGjSlE$qP5T<%#D}uhof7esN88g(rMw=|- zjNTt{sLe zWXJz4fBjotvbw6=5R<%c{rs$jfV(@m!fiDj-n+klZ2HvI74BedA-g{V(vn{}=eeHsmM06!aV-@js0J{km)a T2js%`@@<}0Mc)fg7%u!5POv*j From 1b7e4c71f2889bab50b4bdba99bdd6957b1e715c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 7 Jan 2021 22:14:29 +0200 Subject: [PATCH 295/312] Delete excerpt.cs --- .../MultipleListsC#/excerpt.cs | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 Lists and Libraries Management/MultipleListsC#/excerpt.cs diff --git a/Lists and Libraries Management/MultipleListsC#/excerpt.cs b/Lists and Libraries Management/MultipleListsC#/excerpt.cs deleted file mode 100644 index e094fb6d..00000000 --- a/Lists and Libraries Management/MultipleListsC#/excerpt.cs +++ /dev/null @@ -1,51 +0,0 @@ -switch(listtype) { - case 1: - CreateContactList(siteurl, admin, password, itemsno); - break; - case 2: - CreateAnnouncementsList(siteurl, admin, password, itemsno); - break; - case 3: - CreateTaskList(siteurl, admin, password, itemsno, useusers); - break; - case 4: - CreateEventsList(siteurl, admin, password, itemsno); - break; - default: - Console.WriteLine("Didn't recognize the list type."); - break; -} - - Console.WriteLine("Done!\nPress key to exit."); - Console.ReadKey(); -} - -public static void CreateTaskList(string site, string credUsername, SecureString password, int itemsno, bool useusers) { - string strona = site; - var context = new ClientContext(strona); - context.Credentials = new SharePointOnlineCredentials(credUsername, password); - context.Load(context.Web.Webs, wc => wc.Include(w => w.Url, w => w.Lists)); - context.ExecuteQuery(); - context.Web.Lists.Add(CreateList("Task List with " + itemsno.ToString() + " elements", 107)); - context.ExecuteQuery(); - context.Load(context.Web.Webs, wc => wc.Include(w => w.Url, w => w.Lists)); - UserCollection usercoll = context.Web.SiteUsers; - System.Collections.Generic.List userzy = new System.Collections.Generic.List(); - - if(useusers) { - context.Load(usercoll); - context.ExecuteQuery(); - - foreach (User uss in usercoll) { - if (uss.LoginName.Contains("i:0#.f|membership|")) { - userzy.Add(uss.LoginName); - } - } - } - - Microsoft.SharePoint.Client.List taski = context.Web.Lists.GetByTitle("Task List with " + itemsno.ToString() + " elements"); - context.ExecuteQuery(); - - Random rand = new Random(); - double loopno = Math.Floor((double)itemsno / 3); - for (int i = 0; i < itemsno; i++) From 527870efe8c5b93821b6132405278551be35ed3a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 7 Jan 2021 22:14:45 +0200 Subject: [PATCH 296/312] Delete description.md --- .../MultipleListsC#/description.md | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 Lists and Libraries Management/MultipleListsC#/description.md diff --git a/Lists and Libraries Management/MultipleListsC#/description.md b/Lists and Libraries Management/MultipleListsC#/description.md deleted file mode 100644 index 3e3b1b33..00000000 --- a/Lists and Libraries Management/MultipleListsC#/description.md +++ /dev/null @@ -1,38 +0,0 @@ -Zip contains an ```.exe``` file which runs a program to add a list to a specified SharePoint site collection. You can choose the list template from among: - -**contact list** - -**announcement list** - -**task list** - -**event list** - -You can choose the number of items. Each list is created individually with different columns and different data. The data which populates the list comes from a Random() function. Some of the fields, however, intentionally have the same values to let you test filtering in your SharePoint Online tenant. - -The program is meant mainly for testing purposes, e.g. - -- creating a test environment for your company - -- recreating big data and a lot of items without resorting to Excel and QuickEdit - -- troubleshooting issues which occur when your users added more than 5000 items and you don't want or can't test on the real data - -As it runs, it will inform you on the percentage of its progress. - -## Error handling: - -There is no error handling in this tool. It is designed for admins who know what to do with them. - - -## Expected errors: - -The lists are named after the number of elements they include so be careful not to create another one with the same number on the same site collection - you will get an error! - -SPO has an unchangeable view limit for lists and it is 5000 elements. With this tool you can go way above the SharePoint limit of 5000 items (tested with 17 000), so if you decide to create a list with 40 000 elements, expect some issues there. For your convenience, I created a default view for announcements list with 70 items limit. You can easily switch between the views in the GUI. - - - - -

-Enjoy and please share feedback! From 71f3892dc93ba002fcdbe69e82cb0b1739cf1cdc Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 14 Jan 2021 22:17:41 +0200 Subject: [PATCH 297/312] Create README.md --- .../Powershell Module for Managing SPO Lists/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md diff --git a/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md b/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md @@ -0,0 +1 @@ +. From 60db3ac74738dee26feae20a557fff0f77bc7878 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 14 Jan 2021 22:18:04 +0200 Subject: [PATCH 298/312] Update README.md --- .../README.md | 104 +++++++++++++++++- 1 file changed, 103 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md b/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md index 9c558e35..0ee08862 100644 --- a/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md +++ b/Lists and Libraries Management/Powershell Module for Managing SPO Lists/README.md @@ -1 +1,103 @@ -. +SharePoint Online Powershell module including several cmdlets useful for SharePoint Online lists and libraries management. + +The cmdlets allow you to set several settings available under Library/List Settings on the portal: + + + +## *The Cmdlets* +``` +Remove-ListInheritance + +Remove-SPOList + +Restore-ListInheritance + +Set-ListCheckout + +Set-ListContentTypesEnabled + +Set-ListFolderCreationEnabled + +Set-ListIRMEnabled + +Set-ListMinorVersioning + +Set-ListVersioning +``` + + + + +The cmdlets are using common parameters: +``` + [string]$Username + ``` +The string specifies admin of the site +``` +[string]$Url +``` +Specifies the url of a site where you have the list +``` +[string]$AdminPassword, +``` +Admin's password +``` +[bool]$Enabled=$true +``` +Specifies whether the setting should be enabled ($true) or disabled ($false) +``` +[string]$ListName +``` +Specifies the title of the list where you want to change the settings. + +


+ +## **Requirements** + +The following libraries (SharePoint Online SDK) are required. If those libraries are in different location on your computer, please edit the .psm1 file! + + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + ``` + +
+ +## **Examples** + + + +**PS C:\Windows\system32**> **Import-Module d:\Powershell\SetListFunctions5.psm1 -Verbose** +``` +VERBOSE: Loading module from path 'D:\Powershell\SetListFunctions5.psm1'. + +VERBOSE: Importing function 'Remove-ListInheritance'. + +VERBOSE: Importing function 'Remove-SPOList'. + +VERBOSE: Importing function 'Restore-ListInheritance'. + +VERBOSE: Importing function 'Set-ListCheckout'. + +VERBOSE: Importing function 'Set-ListContentTypesEnabled'. + +VERBOSE: Importing function 'Set-ListFolderCreationEnabled'. + +VERBOSE: Importing function 'Set-ListIRMEnabled'. + +VERBOSE: Importing function 'Set-ListMinorVersioning'. + +VERBOSE: Importing function 'Set-ListVersioning'. +``` +**PS C:\Windows\system32**> **Remove-SPOList -Username admin@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -ListName docc -AdminPassword Password** + +Done! + + + +

+Enjoy and please share feedback! + + From 48f6b79bc239f9747ad4d78db9c4e5c071376791 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 14 Jan 2021 22:18:34 +0200 Subject: [PATCH 299/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md @@ -0,0 +1 @@ +. From 752ac843c60e2f86a02b8a90bd3e8ab76d836782 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 14 Jan 2021 22:19:13 +0200 Subject: [PATCH 300/312] Update README.md --- .../README.md | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md index 9c558e35..3c927c83 100644 --- a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/README.md @@ -1 +1,70 @@ -. +A short script that sets the major version limit for all the libraries and lists in the whole site collection or in the whole tenant. + +It requires SharePoint Online Management Shell and SharePoint SDK installed: + +http://technet.microsoft.com/en-us/library/fp161372(v=office.15).aspx + +http://www.microsoft.com/en-us/download/details.aspx?id=30722 + + + +It uses recurrence to find all sites in all site collections and then goes through all the lists. + +If the list doesn't have versioning enabled, modifying the major version limit is not possible and you will receive the following error message: + +Exception calling "ExecuteQuery" with "0" argument(s): "Specified method is not supported."For some lists, enabling version may not be possible and you will receive a notification of that. + +At the end, a csv file is generated with the lists' urls and the status whether the setting was successful or not. + + + +As the script runs you will see green lists' titles for which the setting succeeded and red for those which failed: + + + + + + + + + + + + + +In order to use the script, adjust the data inside: + +```PowerShell +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + + + +# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false +$Versioning = $true + +#Number of major versions to keep +$VersionLimit = 14 + +# You can also enter credentials directly: $siteUrl="https://tenant-admin.sharepoint.com" +$AdminUrl = "https://tenant-admin.sharepoint.com” +$Username = "test@tenant.onmicrosoft.com" +$Password = Read-Host -Prompt "Enter password" -AsSecureString +$Creds= New-Object System.Management.Automation.PSCredential($username,$password) +Connect-SPOService -Credential $Creds -Url $AdminUrl + +$sitecollections=Get-SPOSite +$Global:csv=@() + +#Uncomment the foreach loop if you want to change the settings in all site collections +#foreach($sitecoll in $sitecollections) +#{ + Set-VersionLimit -Url ("https://test.sharepoint.com/sites/test") -Username $Username -Password $Password -Versioning $Versioning -VersionLimit $VersionLimit +#} + + + +# Specify the path where the log file will be published +$Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv + ``` From 3a07adf253a4e13425330634b5452491a0a57e3a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Thu, 14 Jan 2021 22:19:20 +0200 Subject: [PATCH 301/312] Update description.md --- .../description.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md index c95d7eea..3c927c83 100644 --- a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md @@ -34,7 +34,7 @@ As the script runs you will see green lists' titles for which the setting succee In order to use the script, adjust the data inside: -PowerShell +```PowerShell # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -67,4 +67,4 @@ $Global:csv=@() # Specify the path where the log file will be published $Global:csv | Export-Csv -Path C:\Users\Public\Versioninglimitversion.csv - + ``` From f7ac72311447f7dcdc4e5d3ef5647ef6ed8c9364 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 15 Jan 2021 11:50:30 +0200 Subject: [PATCH 302/312] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md diff --git a/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md new file mode 100644 index 00000000..9c558e35 --- /dev/null +++ b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md @@ -0,0 +1 @@ +. From 2cf6e44abad358f1ee698d96af96bf0175930c08 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 15 Jan 2021 11:50:45 +0200 Subject: [PATCH 303/312] Update README.md --- .../README.md | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md index 9c558e35..30147480 100644 --- a/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md +++ b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/README.md @@ -1 +1,45 @@ -. +Powershell script that generates a report on available file versions in one SharePoint Online library. It iterates through folders and subfolders in order to retrieve all items + +It requires installed [SharePoint Online SDK ](http://www.microsoft.com/en-us/download/details.aspx?id=42038) + +You have to enter the library data before running the script: + + + + + +```PowerShell +#Paths to SDK +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +#Enter the data +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +$username="trial@trialtrial125.onmicrosoft.com" +$Url="https://trialtrial125.sharepoint.com/sites/teamsitewithlibraries" +$ListTitle="Not-Empty-Document-Library" +$csvPath="C:\Users\ivo\Desktop\testpath4.csv" +$csvPath2="C:\Users\ivo\Desktop\FileThatShowNoVersionsAvailable4.csv" + +Get-sPOFolderFiles -Username $username -Url $Url -password $AdminPassword -ListTitle $ListTitle -CSVPath $csvPath -CSVPath2 $csvPath2 +``` +**$Url** specifies the url of the site with the library + + + +**$ListTitle** specifies the title of the library, e.g. Documents + +The report generates 2 files. One - the main file - with all versions available. Second - supplementary - listing all the files that have no past versions. **$csvPath** refers to the path where the first main file should be stored, while the second variable **$csvPath2** refers to where the second file with supplementary list should be stored + + +### Sample Report + + + +### Related scripts + +[Create a report on file versions](https://gallery.technet.microsoft.com/scriptcenter/Create-a-report-on-file-816b1bf8) + + +

+Enjoy and please share feedback! From f41c1fb05a32bd8d08b1fdf982db5de06ec45d96 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 15 Jan 2021 11:50:56 +0200 Subject: [PATCH 304/312] Update description.md --- .../description.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/description.md b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/description.md index 30147480..c095101f 100644 --- a/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/description.md +++ b/Lists and Libraries Management/Versioning/Create a report on all file versions in the library/description.md @@ -4,10 +4,6 @@ It requires installed [SharePoint Online SDK ](http://www.microsoft.com/en-us/d You have to enter the library data before running the script: - - - - ```PowerShell #Paths to SDK Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" From 0679325bfa1f644cfd38df494c38dc5921d8cdb5 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 13:49:24 +0200 Subject: [PATCH 305/312] Create Enable versions for selected sites and their subsites --- ...ions for selected sites and their subsites | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 Versioning/Enable versions for selected sites and their subsites diff --git a/Versioning/Enable versions for selected sites and their subsites b/Versioning/Enable versions for selected sites and their subsites new file mode 100644 index 00000000..6e3341af --- /dev/null +++ b/Versioning/Enable versions for selected sites and their subsites @@ -0,0 +1,102 @@ +function Set-Versioning{ + param ( + [Parameter (Mandatory)] + [string]$Url, + [Parameter (Mandatory)] + [Object]$Credential, + [Parameter (Mandatory)] + [String]$Versioning + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = $Credential + $ctx.Load($ctx.Web.Lists) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + Write-Host + Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + + foreach( $list in $ctx.Web.Lists){ + + $ctx.Load($list.RootFolder) + $ctx.ExecuteQuery() + + $list.EnableVersioning = $Versioning + $list.Update() + $csvvalue= new-object PSObject + $listurl=$null + + if($ctx.Url.EndsWith("/")){ + + $listurl= $ctx.Url.Remove(($ctx.Url.Length-1),1)+$ll.RootFolder.ServerRelativeUrl + } + else { + $index=$ctx.Url.LastIndexOf(".com") + $listurl=$ctx.Url.Remove($index+4)+$ll.RootFolder.ServerRelativeUrl + } + + $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) + $csvvalue | Add-Member -MemberType NoteProperty -Name "Status" -Value "Failed" + + try{ + $ErrorActionPreference="Stop" + $ctx.ExecuteQuery() + Write-Host $listurl -ForegroundColor DarkGreen + $csvvalue.Status="Success" + $Global:csv+= $csvvalue + } + catch{ + $Global:csv+= $csvvalue + Write-Host $listurl -ForegroundColor Red + } + finally{ + $ErrorActionPreference="Continue" + } + + } + + + # go through all the subsites recursively + if($ctx.Web.Webs.Count -gt 0){ + for($i=0; $i -lt $ctx.Web.Webs.Count ; $i++){ + Set-Versioning -Url ($ctx.Web.Webs[$i].Url) -Credential $Credential -Versioning $Versioning + } + } +} + + + + + + + + +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false +$versioning = $true + +# Your CSV with urls +$CSVPath = "C:\Users\Public\UrlsToEnableVersioningFor.csv" #make sure there is a url property + +#Your log path +$LogPath = "C:\Users\Public\VersioningLogPath.csv" + +# You will be prompted for credentials when the script executes +$username = Read-Host -Prompt "Enter admin's login, e.g. admin@domain.onmicrosoft.com" +$password = Read-Host -Prompt "Enter password" -AsSecureString +$credential= New-Object System.Management.Automation.PSCredential($username,$password) + +$sitecollections= Import-CSV $CSVPath +$Global:csv=@() + +foreach($sitecollection in $sitecollections){ + Set-Versioning -Url ($sitecollection.Url) -Credential $Credential -Versioning $Versioning +} + + +$Global:csv | Export-Csv -Path $LogPath From 707f87b0c1a394c869ed089719c3c6ac2f2d0c70 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 14:00:00 +0200 Subject: [PATCH 306/312] Delete Enable versions for selected sites and their subsites --- ...ions for selected sites and their subsites | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 Versioning/Enable versions for selected sites and their subsites diff --git a/Versioning/Enable versions for selected sites and their subsites b/Versioning/Enable versions for selected sites and their subsites deleted file mode 100644 index 6e3341af..00000000 --- a/Versioning/Enable versions for selected sites and their subsites +++ /dev/null @@ -1,102 +0,0 @@ -function Set-Versioning{ - param ( - [Parameter (Mandatory)] - [string]$Url, - [Parameter (Mandatory)] - [Object]$Credential, - [Parameter (Mandatory)] - [String]$Versioning - ) - - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = $Credential - $ctx.Load($ctx.Web.Lists) - $ctx.Load($ctx.Web) - $ctx.Load($ctx.Web.Webs) - $ctx.ExecuteQuery() - Write-Host - Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen - - foreach( $list in $ctx.Web.Lists){ - - $ctx.Load($list.RootFolder) - $ctx.ExecuteQuery() - - $list.EnableVersioning = $Versioning - $list.Update() - $csvvalue= new-object PSObject - $listurl=$null - - if($ctx.Url.EndsWith("/")){ - - $listurl= $ctx.Url.Remove(($ctx.Url.Length-1),1)+$ll.RootFolder.ServerRelativeUrl - } - else { - $index=$ctx.Url.LastIndexOf(".com") - $listurl=$ctx.Url.Remove($index+4)+$ll.RootFolder.ServerRelativeUrl - } - - $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) - $csvvalue | Add-Member -MemberType NoteProperty -Name "Status" -Value "Failed" - - try{ - $ErrorActionPreference="Stop" - $ctx.ExecuteQuery() - Write-Host $listurl -ForegroundColor DarkGreen - $csvvalue.Status="Success" - $Global:csv+= $csvvalue - } - catch{ - $Global:csv+= $csvvalue - Write-Host $listurl -ForegroundColor Red - } - finally{ - $ErrorActionPreference="Continue" - } - - } - - - # go through all the subsites recursively - if($ctx.Web.Webs.Count -gt 0){ - for($i=0; $i -lt $ctx.Web.Webs.Count ; $i++){ - Set-Versioning -Url ($ctx.Web.Webs[$i].Url) -Credential $Credential -Versioning $Versioning - } - } -} - - - - - - - - -# Paths to SDK. Please verify location on your computer. -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" -Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - -# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false -$versioning = $true - -# Your CSV with urls -$CSVPath = "C:\Users\Public\UrlsToEnableVersioningFor.csv" #make sure there is a url property - -#Your log path -$LogPath = "C:\Users\Public\VersioningLogPath.csv" - -# You will be prompted for credentials when the script executes -$username = Read-Host -Prompt "Enter admin's login, e.g. admin@domain.onmicrosoft.com" -$password = Read-Host -Prompt "Enter password" -AsSecureString -$credential= New-Object System.Management.Automation.PSCredential($username,$password) - -$sitecollections= Import-CSV $CSVPath -$Global:csv=@() - -foreach($sitecollection in $sitecollections){ - Set-Versioning -Url ($sitecollection.Url) -Credential $Credential -Versioning $Versioning -} - - -$Global:csv | Export-Csv -Path $LogPath From 5bf5233726ca74f27ea24eebff37c87010eadb36 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 14:00:06 +0200 Subject: [PATCH 307/312] Create Script.ps1 --- .../Script.ps1 | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Versioning/Enable versions for selected sites and their subsites/Script.ps1 diff --git a/Versioning/Enable versions for selected sites and their subsites/Script.ps1 b/Versioning/Enable versions for selected sites and their subsites/Script.ps1 new file mode 100644 index 00000000..317cc5ff --- /dev/null +++ b/Versioning/Enable versions for selected sites and their subsites/Script.ps1 @@ -0,0 +1,96 @@ +function Set-Versioning{ + param ( + [Parameter (Mandatory)] + [string]$Url, + [Parameter (Mandatory)] + [Object]$Credential, + [Parameter (Mandatory)] + [String]$Versioning + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = $Credential + $ctx.Load($ctx.Web.Lists) + $ctx.Load($ctx.Web) + $ctx.Load($ctx.Web.Webs) + $ctx.ExecuteQuery() + Write-Host + Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + + foreach( $list in $ctx.Web.Lists){ + + $ctx.Load($list.RootFolder) + $ctx.ExecuteQuery() + + $list.EnableVersioning = $Versioning + $list.Update() + $csvvalue= new-object PSObject + $listurl=$null + + if($ctx.Url.EndsWith("/")){ + + $listurl= $ctx.Url.Remove(($ctx.Url.Length-1),1)+$ll.RootFolder.ServerRelativeUrl + } + else { + $index=$ctx.Url.LastIndexOf(".com") + $listurl=$ctx.Url.Remove($index+4)+$ll.RootFolder.ServerRelativeUrl + } + + $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) + $csvvalue | Add-Member -MemberType NoteProperty -Name "Status" -Value "Failed" + + try{ + $ErrorActionPreference="Stop" + $ctx.ExecuteQuery() + Write-Host $listurl -ForegroundColor DarkGreen + $csvvalue.Status="Success" + $Global:csv+= $csvvalue + } + catch{ + $Global:csv+= $csvvalue + Write-Host $listurl -ForegroundColor Red + } + finally{ + $ErrorActionPreference="Continue" + } + + } + + + # go through all the subsites recursively + if($ctx.Web.Webs.Count -gt 0){ + for($i=0; $i -lt $ctx.Web.Webs.Count ; $i++){ + Set-Versioning -Url ($ctx.Web.Webs[$i].Url) -Credential $Credential -Versioning $Versioning + } + } +} + + +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" + +# Versioning will be enabled. If you prefer to disable it for the whole tenant, change to $false +$versioning = $true + +# Your CSV with urls +$CSVPath = "C:\Users\Public\UrlsToEnableVersioningFor.csv" #make sure there is a url property + +#Your log path +$LogPath = "C:\Users\Public\VersioningLogPath.csv" + +# You will be prompted for credentials when the script executes +$username = Read-Host -Prompt "Enter admin's login, e.g. admin@domain.onmicrosoft.com" +$password = Read-Host -Prompt "Enter password" -AsSecureString +$credential= New-Object System.Management.Automation.PSCredential($username,$password) + +$sitecollections= Import-CSV $CSVPath +$Global:csv=@() + +foreach($sitecollection in $sitecollections){ + Set-Versioning -Url ($sitecollection.Url) -Credential $Credential -Versioning $Versioning +} + + +$Global:csv | Export-Csv -Path $LogPath From 4abf70a5a7dd5f72f5834ce11ac2de7ff06cfdde Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 15:40:00 +0200 Subject: [PATCH 308/312] Update Script.ps1 --- .../Script.ps1 | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/Versioning/Enable versions for selected sites and their subsites/Script.ps1 b/Versioning/Enable versions for selected sites and their subsites/Script.ps1 index 317cc5ff..8749a741 100644 --- a/Versioning/Enable versions for selected sites and their subsites/Script.ps1 +++ b/Versioning/Enable versions for selected sites and their subsites/Script.ps1 @@ -26,30 +26,21 @@ function Set-Versioning{ $list.EnableVersioning = $Versioning $list.Update() $csvvalue= new-object PSObject - $listurl=$null - - if($ctx.Url.EndsWith("/")){ - - $listurl= $ctx.Url.Remove(($ctx.Url.Length-1),1)+$ll.RootFolder.ServerRelativeUrl - } - else { - $index=$ctx.Url.LastIndexOf(".com") - $listurl=$ctx.Url.Remove($index+4)+$ll.RootFolder.ServerRelativeUrl - } - - $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) + + $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value $ctx.Url + $csvvalue | Add-Member -MemberType NoteProperty -Name "ListTitle" -Value $list.Title $csvvalue | Add-Member -MemberType NoteProperty -Name "Status" -Value "Failed" try{ $ErrorActionPreference="Stop" $ctx.ExecuteQuery() - Write-Host $listurl -ForegroundColor DarkGreen + Write-Host $list.Title -ForegroundColor DarkGreen $csvvalue.Status="Success" $Global:csv+= $csvvalue } catch{ $Global:csv+= $csvvalue - Write-Host $listurl -ForegroundColor Red + Write-Host $list.Title -ForegroundColor Red } finally{ $ErrorActionPreference="Continue" @@ -67,6 +58,12 @@ function Set-Versioning{ } + + + + + + # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" @@ -83,13 +80,13 @@ $LogPath = "C:\Users\Public\VersioningLogPath.csv" # You will be prompted for credentials when the script executes $username = Read-Host -Prompt "Enter admin's login, e.g. admin@domain.onmicrosoft.com" $password = Read-Host -Prompt "Enter password" -AsSecureString -$credential= New-Object System.Management.Automation.PSCredential($username,$password) +$credential= New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $sitecollections= Import-CSV $CSVPath $Global:csv=@() foreach($sitecollection in $sitecollections){ - Set-Versioning -Url ($sitecollection.Url) -Credential $Credential -Versioning $Versioning + Set-Versioning -Url $sitecollection.Url -Credential $Credential -Versioning $Versioning } From 3fdca23dae54388ab1ba1e7ac82b6840f8fa7b70 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 15:49:20 +0200 Subject: [PATCH 309/312] Update SetExperience.ps1 --- .../SetExperience.ps1 | 55 ------------------- 1 file changed, 55 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 index 5e288d06..29ff95e2 100644 --- a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 @@ -49,59 +49,4 @@ $username="t@testova365.onmicrosoft.com" $Url="https://testova365.sharepoint.com/sites/STS" - - -Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperiencefunction Set-ExperienceOptions{ - param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, - [Parameter(Mandatory=$true,Position=3)] - $password, - [Parameter(Mandatory=$true, Position=4)] - [ValidateSet("NewExperience", "ClassicExperience","Auto")] - $ExperienceOption - ) - - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - $lls=$ctx.Web.Lists - $ctx.Load($lls) - $ctx.ExecuteQuery() - - - foreach($ll in $lls){ - $ll.ListExperienceOptions = $ExperienceOption - $ll.Update() - $ctx.ExecuteQuery() - } -} - - - - - - - - - -#Paths to SDK -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.Runtime.dll" -Add-Type -Path "H:\Libraries\Microsoft.Office.Client.Policy.dll" -#Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - -#Enter the data -$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString -$username="t@testova365.onmicrosoft.com" -$Url="https://testova365.sharepoint.com/sites/STS" - - - - Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperience From 8e0c0804fc5d41456eff2cdee7ce7feb72107095 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sun, 17 Jan 2021 16:26:33 +0200 Subject: [PATCH 310/312] removed duplicate in list experience --- .../SetExperience.ps1 | 67 ++----------------- 1 file changed, 5 insertions(+), 62 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 index 5e288d06..d2761752 100644 --- a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 @@ -36,72 +36,15 @@ function Set-ExperienceOptions{ -#Paths to SDK -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.Runtime.dll" -Add-Type -Path "H:\Libraries\Microsoft.Office.Client.Policy.dll" -#Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" +# Paths to SDK. Please verify location on your computer. +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll" +Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" #Enter the data $AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString -$username="t@testova365.onmicrosoft.com" -$Url="https://testova365.sharepoint.com/sites/STS" - - - - -Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperiencefunction Set-ExperienceOptions{ - param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, - [Parameter(Mandatory=$true,Position=3)] - $password, - [Parameter(Mandatory=$true, Position=4)] - [ValidateSet("NewExperience", "ClassicExperience","Auto")] - $ExperienceOption - ) - - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) - $ctx.Load($ctx.Web) - $ctx.ExecuteQuery() - $lls=$ctx.Web.Lists - $ctx.Load($lls) - $ctx.ExecuteQuery() - - - foreach($ll in $lls){ - $ll.ListExperienceOptions = $ExperienceOption - $ll.Update() - $ctx.ExecuteQuery() - } -} - - - - - - - - - -#Paths to SDK -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.dll" -Add-Type -Path "H:\Libraries\Microsoft.SharePoint.Client.Runtime.dll" -Add-Type -Path "H:\Libraries\Microsoft.Office.Client.Policy.dll" -#Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" - - -#Enter the data -$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString -$username="t@testova365.onmicrosoft.com" -$Url="https://testova365.sharepoint.com/sites/STS" - - +$username="ana@etr45.onmicrosoft.com" +$Url="https://etr45.sharepoint.com/sites/test1234/test1" Set-ExperienceOptions -Username $username -Url $Url -password $AdminPassword -ExperienceOption NewExperience From c8f6980de7665e93a18d6ec14a2120e72127a5b9 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sun, 17 Jan 2021 16:28:07 +0200 Subject: [PATCH 311/312] list experience --- .../Set all lists to New or Classic Experience/SetExperience.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 index d2761752..4a34ec55 100644 --- a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 @@ -22,6 +22,7 @@ function Set-ExperienceOptions{ foreach($ll in $lls){ + Write-Host $ll.Title $ll.ListExperienceOptions = $ExperienceOption $ll.Update() $ctx.ExecuteQuery() From a75dc0251eb9a9641f8fdf14be8d058965632278 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 17 Jan 2021 16:34:41 +0200 Subject: [PATCH 312/312] Update SetExperience.ps1 --- .../SetExperience.ps1 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 index 183d2aee..d833bb14 100644 --- a/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 +++ b/Lists and Libraries Management/Modern or Classic/Set all lists to New or Classic Experience/SetExperience.ps1 @@ -20,8 +20,7 @@ function Set-ExperienceOptions{ $ctx.Load($lls) $ctx.ExecuteQuery() - - foreach($ll in $lls){ + foreach($ll in $lls){ Write-Host $ll.Title $ll.ListExperienceOptions = $ExperienceOption $ll.Update() @@ -31,9 +30,6 @@ function Set-ExperienceOptions{ - - - # Paths to SDK. Please verify location on your computer. Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"