From ff1ab75eb4fe6437ad91aadc884cff705f582213 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Thu, 30 Jan 2020 17:21:14 +0100 Subject: [PATCH 01/48] Update description.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pojawił się mały problem z czerwonym podświetleniem tekstu. Kod html nie chciał tego zamienić tak żeby wyglądało jak w technet, znalazłem takie rozwiązanie. Spróbować znaleźć inne, czy takie wystarczy? --- .../description.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Content Types/Create/Add existing content type directly to SPO list/description.md b/Content Types/Create/Add existing content type directly to SPO list/description.md index f318e934..86ced017 100644 --- a/Content Types/Create/Add existing content type directly to SPO list/description.md +++ b/Content Types/Create/Add existing content type directly to SPO list/description.md @@ -2,16 +2,14 @@ A short script to add an existing site content type directly to a SharePoint Onl -The script is fully described in an article here: - -http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx). ### 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) @@ -35,21 +33,23 @@ $ContentTypeID="0x01200200C44754774BD8D4449F4B7E3FE70A7E0E"
d) Enter the title of the list.
e) Enter the content type id
-###### How to find the content type id? -* via browser -Go to Site>Gear Icon>Site Settings>Content Types>Click on the content type. The url at this point should look like this: -https://tenant.sharepoint.com/sites/TeamsitewithLists/_layouts/15/ManageContentType.aspx?ctype=0x0100A02B0ABDDEDC5A45AC64F100F30899CF&Source=https%3A%2F%2Ftenant%2Esharepoint%2Ecom%2Fsites%2FTeamsitewithLists%2F%5Flayouts%2F15%2Fmngctype%2Easpx +##### *How to find the content type id?* +* via browser
+Go to **Site**>**Gear Icon**>**Site Settings**>**Content Types**>**Click on the content type**. The url at this point should look like **[this](https://tenant.sharepoint.com/sites/TeamsitewithLists/_layouts/15/ManageContentType.aspx?ctype=0x0100A02B0ABDDEDC5A45AC64F100F30899CF&Source=https%3A%2F%2Ftenant%2Esharepoint%2Ecom%2Fsites%2FTeamsitewithLists%2F%5Flayouts%2F15%2Fmngctype%2Easpx)**. +```diff +https://tenant.sharepoint.com/sites/TeamsitewithLists/_layouts/15/ManageContentType.aspx?ctype= +- 0x0100A02B0ABDDEDC5A45AC64F100F30899CF +&Source=https%3A%2F%2Ftenant%2Esharepoint%2Ecom%2Fsites%2FTeamsitewithLists%2F%5Flayouts%2F15%2Fmngctype%2Easpx +``` Marked in red is the content type id. -* via another script -Get all properties of all content types in a SharePoint site - +* via another script
+[Get all properties of all content types in a SharePoint site](https://gallery.technet.microsoft.com/Get-all-properties-of-all-3a9c5c4b) 5. Run the script in Powershell (any module). -6. When the script has executed, Powershell will show a message Content Type Name of the Content Type2 has been added to Url of the Site. +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Url of the Site*. -

Enjoy and please share feedback! From be621d1547bb1fc78159ca547af1b31adbe1ef98 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Thu, 30 Jan 2020 17:25:22 +0100 Subject: [PATCH 02/48] Update AddExistingContentTypetoOneList.ps1 --- .../AddExistingContentTypetoOneList.ps1 | 71 +++++++++---------- 1 file changed, 32 insertions(+), 39 deletions(-) diff --git a/Content Types/Create/Add existing content type directly to SPO list/AddExistingContentTypetoOneList.ps1 b/Content Types/Create/Add existing content type directly to SPO list/AddExistingContentTypetoOneList.ps1 index 43825fba..b03c128d 100644 --- a/Content Types/Create/Add existing content type directly to SPO list/AddExistingContentTypetoOneList.ps1 +++ b/Content Types/Create/Add existing content type directly to SPO list/AddExistingContentTypetoOneList.ps1 @@ -1,47 +1,40 @@ -function Add-SPOContentType -{ -param( -[Parameter(Mandatory=$true,Position=1)] +function Add-SPOContentType{ + 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=4)] + [Parameter(Mandatory=$true,Position=4)] [string]$ListTitle, - [Parameter(Mandatory=$true,Position=7)] + [Parameter(Mandatory=$true,Position=7)] [string]$ContentTypeID - ) - - $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) - $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) - $ctx.Load($ctx.Web.Lists) - $ctx.ExecuteQuery() - - $contentType=$ctx.Web.ContentTypes.GetById($ContentTypeID) - $ctx.Load($contentType) - - $ll=$ctx.Web.Lists.GetByTitle($ListTitle) - $ctx.load($ll) - $ctx.load($ll.ContentTypes) - $ctx.ExecuteQuery() - $ll.ContentTypesEnabled=$true - $AddedContentType=$ll.ContentTypes.AddExistingContentType($contentType) - $ll.Update() - - try - { - - $ctx.ExecuteQuery() - Write-Host "Adding content type " $AddedContentType.Name " to " $ll.Title - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - - + ) + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword) + $ctx.Load($ctx.Web.Lists) + $ctx.ExecuteQuery() + + $contentType=$ctx.Web.ContentTypes.GetById($ContentTypeID) + $ctx.Load($contentType) + + $ll=$ctx.Web.Lists.GetByTitle($ListTitle) + $ctx.load($ll) + $ctx.load($ll.ContentTypes) + $ctx.ExecuteQuery() + $ll.ContentTypesEnabled=$true + $AddedContentType=$ll.ContentTypes.AddExistingContentType($contentType) + $ll.Update() + + try{ + $ctx.ExecuteQuery() + Write-Host "Adding content type " $AddedContentType.Name " to " $ll.Title + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } } From 5a6263609fdf8c4353fe8ebf738069b26fffe8fd Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Thu, 30 Jan 2020 19:17:38 +0100 Subject: [PATCH 03/48] Update ModifyDisplayFormTemplateName-ContentTypeHub.ps1 --- ...DisplayFormTemplateName-ContentTypeHub.ps1 | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/Content Types/Get/All Content Types from a Content Type Hub and their DisplayFormTemplate/ModifyDisplayFormTemplateName-ContentTypeHub.ps1 b/Content Types/Get/All Content Types from a Content Type Hub and their DisplayFormTemplate/ModifyDisplayFormTemplateName-ContentTypeHub.ps1 index 91519a06..c16944a8 100644 --- a/Content Types/Get/All Content Types from a Content Type Hub and their DisplayFormTemplate/ModifyDisplayFormTemplateName-ContentTypeHub.ps1 +++ b/Content Types/Get/All Content Types from a Content Type Hub and their DisplayFormTemplate/ModifyDisplayFormTemplateName-ContentTypeHub.ps1 @@ -1,16 +1,14 @@  -function Set-SPOContentType -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - $AdminPassword, - [Parameter(Mandatory=$true,Position=3)] - [string]$Url - ) +function Set-SPOContentType{ +param ( + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + $AdminPassword, + [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) @@ -18,21 +16,12 @@ function Set-SPOContentType $ctx.ExecuteQuery() - foreach($cc in $ctx.Web.ContentTypes) - { - - Write-Host $cc.Name " " $cc.DisplayFormTemplateName - - - +foreach($cc in $ctx.Web.ContentTypes){ + Write-Host $cc.Name " " $cc.DisplayFormTemplateName } - - - $ctx.Dispose() - - - } + $ctx.Dispose() +} From cd521ba49399c3e7e04846e41f9d2d3ee127c9d2 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Thu, 30 Jan 2020 19:23:44 +0100 Subject: [PATCH 04/48] Update CompareAvVSCT.ps1 --- .../CompareAvVSCT.ps1 | 92 ++++++++----------- 1 file changed, 36 insertions(+), 56 deletions(-) diff --git a/Content Types/Get/Compare Web.AvailableContentTypes vs Web.ContentTypes/CompareAvVSCT.ps1 b/Content Types/Get/Compare Web.AvailableContentTypes vs Web.ContentTypes/CompareAvVSCT.ps1 index e516ffa6..17c036f1 100644 --- a/Content Types/Get/Compare Web.AvailableContentTypes vs Web.ContentTypes/CompareAvVSCT.ps1 +++ b/Content Types/Get/Compare Web.AvailableContentTypes vs Web.ContentTypes/CompareAvVSCT.ps1 @@ -1,64 +1,44 @@  -function Get-SPOContentType -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOContentType{ + 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.AvailableContentTypes) - $ctx.ExecuteQuery() - Write-Host -# Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen - $i=0 - foreach( $cc in $ctx.Web.AvailableContentTypes) - { - - $i++ - - } - Write-Host "Available content types " $i - - $ctx.Load($ctx.Web.ContentTypes) - $ctx.ExecuteQuery() - Write-Host - # Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen - $i=0 - foreach( $cc in $ctx.Web.ContentTypes) - { - - $i++ - - } - Write-Host "Content types in this site " $i - - - - } - - - - - - - - - - - - - + ) + + $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.AvailableContentTypes) + $ctx.ExecuteQuery() + Write-Host + # Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + $i=0 + + foreach( $cc in $ctx.Web.AvailableContentTypes){ + $i++ + } + + Write-Host "Available content types " $i + + $ctx.Load($ctx.Web.ContentTypes) + $ctx.ExecuteQuery() + Write-Host + # Write-Host $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + $i=0 + + foreach( $cc in $ctx.Web.ContentTypes){ + $i++ + } + + Write-Host "Content types in this site " $i +} @@ -73,4 +53,4 @@ $AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries/subsite" -Get-SPOContentType -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl \ No newline at end of file +Get-SPOContentType -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl From 93c0f4ab90e5b1ef0c926381d2fcb4b6dcd19e06 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Thu, 30 Jan 2020 22:48:40 +0100 Subject: [PATCH 05/48] Update GetSingleContentTypeLoop.ps1 --- .../GetSingleContentTypeLoop.ps1 | 58 +++++++------------ 1 file changed, 21 insertions(+), 37 deletions(-) diff --git a/Content Types/Get/Get All Hidden Content Types added to the site/GetSingleContentTypeLoop.ps1 b/Content Types/Get/Get All Hidden Content Types added to the site/GetSingleContentTypeLoop.ps1 index 91865e71..e9a3e086 100644 --- a/Content Types/Get/Get All Hidden Content Types added to the site/GetSingleContentTypeLoop.ps1 +++ b/Content Types/Get/Get All Hidden Content Types added to the site/GetSingleContentTypeLoop.ps1 @@ -1,48 +1,32 @@  -function Get-SPOContentType -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] +function Get-SPOContentType{ + 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.ContentTypes) - $ctx.ExecuteQuery() - - - foreach($cc in $ctx.Web.ContentTypes) - { - if($cc.Hidden -eq $true) - { - Write-Host $cc.Name - } - } + ) - - - - - - - } - + $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.ContentTypes) + $ctx.ExecuteQuery() + + + foreach($cc in $ctx.Web.ContentTypes){ + if($cc.Hidden -eq $true){ + Write-Host $cc.Name + } + } +} + # 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" @@ -56,4 +40,4 @@ $AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" -Get-SPOContentType -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl \ No newline at end of file +Get-SPOContentType -Username $Username -AdminPassword $AdminPassword -Url $AdminUrl From 43e208db2fa9372e75f0fb0535dbe2c1e6f7f6ed Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:40:57 +0100 Subject: [PATCH 06/48] Update description.md --- .../description.md | 43 ++++--------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/Items Management/Bulk update all items in a list/description.md b/Items Management/Bulk update all items in a list/description.md index 0396d756..2671eab5 100644 --- a/Items Management/Bulk update all items in a list/description.md +++ b/Items Management/Bulk update all items in a list/description.md @@ -1,41 +1,16 @@ Short Powershell script to bulk update all items in a list - - - +### **Example** - - -Example - - - - - - Result: + - - - - - +## **Requirements** - - - -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" @@ -45,18 +20,18 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens 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 is installed in the same location on your computer ++ 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 +[Powershell Module with Update-SPOListItem cmdlet](https://gallery.technet.microsoft.com/scriptcenter/Powershell-Module-for-easy-5d590623)

-Enjoy and please share feedback! \ No newline at end of file +Enjoy and please share feedback! From 7e57412cb00c20d53e925ef54a4624005c1b368d Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:43:02 +0100 Subject: [PATCH 07/48] Update BulkUpdate.ps1 --- .../BulkUpdate.ps1 | 56 ++++++++----------- 1 file changed, 24 insertions(+), 32 deletions(-) diff --git a/Items Management/Bulk update all items in a list/BulkUpdate.ps1 b/Items Management/Bulk update all items in a list/BulkUpdate.ps1 index 03c51214..4e963d1c 100644 --- a/Items Management/Bulk update all items in a list/BulkUpdate.ps1 +++ b/Items Management/Bulk update all items in a list/BulkUpdate.ps1 @@ -1,20 +1,18 @@ - function Update-SPOListItem -{ - - param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, - [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, - [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, -[Parameter(Mandatory=$true,Position=6)] - [string]$FieldToUpdate, -[Parameter(Mandatory=$true,Position=7)] - [string]$ValueToUpdate - ) +function Update-SPOListItem{ + param ( + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, + [Parameter(Mandatory=$true,Position=3)] + [string]$AdminPassword, + [Parameter(Mandatory=$true,Position=4)] + [string]$ListTitle, + [Parameter(Mandatory=$true,Position=6)] + [string]$FieldToUpdate, + [Parameter(Mandatory=$true,Position=7)] + [string]$ValueToUpdate + ) @@ -39,30 +37,24 @@ $count=$itemki.Count Write-Host $count - foreach($item in $itemki) - { - $item[$FieldToUpdate]=$ValueToUpdate + + foreach($item in $itemki){ + $item[$FieldToUpdate]=$ValueToUpdate $item.Update() - } - - try - { - $ctx.ExecuteQuery() - write-host " Success" + try{ + $ctx.ExecuteQuery() + write-host " Success" } - catch [Net.WebException] - { + catch [Net.WebException]{ Write-Host $_.Exception.ToString() -ForegroundColor Red - } - - } +} # 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@domain.onmicrosoft.com -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "contacts list" -FieldToUpdate MyColumnName -ValueToUpdate SomeRandomValue \ No newline at end of file +Update-SPOListItem -Username user@domain.onmicrosoft.com -Url https://tenant.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "contacts list" -FieldToUpdate MyColumnName -ValueToUpdate SomeRandomValue From 1f797819398af4cebd102caf4ab7f427e66eb3a6 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:44:30 +0100 Subject: [PATCH 08/48] Update description.md --- .../description.md | 59 +++++++------------ 1 file changed, 21 insertions(+), 38 deletions(-) diff --git a/Items Management/Create new list item using Powershell/description.md b/Items Management/Create new list item using Powershell/description.md index 7c09a3b6..f1a9692b 100644 --- a/Items Management/Create new list item using Powershell/description.md +++ b/Items Management/Create new list item using Powershell/description.md @@ -2,58 +2,47 @@ Powershell Module with one new cmdlet -New-SPOListItem +## **New-SPOListItem** - - -Parameters +### *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 - -[string]$AdminPassword, +```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 - - - - - - - - - - - - +### *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! +### *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. @@ -61,12 +50,6 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens 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 0e7c4f51669a95e55d6faec7709a46fdc7a56720 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:45:18 +0100 Subject: [PATCH 09/48] Update NewSPOListItem.psm1 --- .../NewSPOListItem.psm1 | 53 +++++++++---------- 1 file changed, 24 insertions(+), 29 deletions(-) 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 8cf76cc3..fc64496c 100644 --- a/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 +++ b/Items Management/Create new list item using Powershell/NewSPOListItem.psm1 @@ -1,23 +1,22 @@ -function New-SPOListItem -{ -param ( +function New-SPOListItem{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [string]$ItemTitle, -[Parameter(Mandatory=$false,Position=6)] - [string]$AdditionalField="", -[Parameter(Mandatory=$false,Position=7)] - [string]$AdditionalValue="" - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force + [string]$ItemTitle, + [Parameter(Mandatory=$false,Position=6)] + [string]$AdditionalField="", + [Parameter(Mandatory=$false,Position=7)] + [string]$AdditionalValue="" + ) + + $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) @@ -32,25 +31,21 @@ $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force $listItem = $ll.AddItem($lici) $listItem["Title"]=$ItemTitle - if($AdditionalField -ne "") - { + + if($AdditionalField -ne ""){ $listItem[$AdditionalField]=$AdditionalValue } + $listItem.Update() $ll.Update() - try - { - - $ctx.ExecuteQuery() - Write-Host "Item " $ItemTitle " has been added to list " $ListTitle - } - catch [Net.WebException] - { + try{ + $ctx.ExecuteQuery() + Write-Host "Item " $ItemTitle " has been added to list " $ListTitle + } + catch [Net.WebException]{ Write-Host $_.Exception.ToString() - } - - + } } From 6376a30a3d0424b66c3dddd524d8a242a0b5d22e Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:46:51 +0100 Subject: [PATCH 10/48] Update description.md --- .../description.md | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/Items Management/Get the number of items in a list/description.md b/Items Management/Get the number of items in a list/description.md index b54e0377..c647cb03 100644 --- a/Items Management/Get the number of items in a list/description.md +++ b/Items Management/Get the number of items in a list/description.md @@ -1,29 +1,29 @@ New SharePoint Online Powershell cmdlet Get-SPOListItemCount which allows you to view the number of items in a list. -

Parameters

+## *Parameters* The cmdlet is using the following parameters: - - ```[string]$Username``` +```powershell + [string]$Username + ``` The string specifies admin of the site - -```[string]$Url``` +```powershell +[string]$Url +``` Specifies the url of a site where you have the list - -```[string]$AdminPassword``` +```powershell +[string]$AdminPassword +``` Admin's password - -```PowerShell[string]$ListTitle``` +```powershell +PowerShell[string]$ListTitle +``` Specifies the title of a list - - - - -

Requirements

+## *Requirements* @@ -37,13 +37,9 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens -

Examples

+## *Examples* - - - -

Enjoy and please share feedback! From 28b614259cf7b0eef63dd435ab07cb460023d1ab Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:47:14 +0100 Subject: [PATCH 11/48] Update GetSPOListItemCount.psm1 --- .../GetSPOListItemCount.psm1 | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/Items Management/Get the number of items in a list/GetSPOListItemCount.psm1 b/Items Management/Get the number of items in a list/GetSPOListItemCount.psm1 index 92ecf1ec..befd6e22 100644 --- a/Items Management/Get the number of items in a list/GetSPOListItemCount.psm1 +++ b/Items Management/Get the number of items in a list/GetSPOListItemCount.psm1 @@ -1,18 +1,14 @@ -function Get-SPOListItemCount -{ - - param ( +function Get-SPOListItemCount{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=3)] - [string]$ListTitle - ) - - + [string]$ListTitle + ) $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) @@ -25,8 +21,6 @@ $ctx.Load($ll) $ctx.ExecuteQuery() - - $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery $itemki=$ll.GetItems($spqQuery) @@ -34,12 +28,9 @@ $ctx.ExecuteQuery() $count=$itemki.Count - - + return $count - - - } +} # Paths to SDK. Please verify location on your computer. @@ -50,4 +41,4 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens -Export-ModuleMember -Function "Get-SPOListItemCount" \ No newline at end of file +Export-ModuleMember -Function "Get-SPOListItemCount" From 25f398058f73bb8b1718bfa673caa83eec074627 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:50:17 +0100 Subject: [PATCH 12/48] Update description.md --- .../description.md | 147 ++++++------------ 1 file changed, 48 insertions(+), 99 deletions(-) diff --git a/Items Management/GetSpoListItems and GetSPOListFields/description.md b/Items Management/GetSpoListItems and GetSPOListFields/description.md index 945327f9..18bec11b 100644 --- a/Items Management/GetSpoListItems and GetSPOListFields/description.md +++ b/Items Management/GetSpoListItems and GetSPOListFields/description.md @@ -1,176 +1,125 @@ 2 new SharePoint Online Powershell cmdlets to help you view items in a SharePoint Online list: - - - - - -

Get-SPOListItems

+

Get-SPOListItems

Retrieves all items in a given list

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 - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's password - -[string]$ListName -ListName. To retrieve a table of list names, you can use Get-SPOList - +```powershell +[string]$ListName +``` +ListName. To retrieve a table of list names, you can use [Get-SPOList](https://gallery.technet.microsoft.com/scriptcenter/GetSPOList-Module-to-view-cc4d3e9e) +```powershell [bool]$IncludeAllProperties=$false +``` Specifies whether you should view all the available properties or just the Id and Title. By the default it is set to $false. - - - - - - The equivalent in Graphic User Interface (GUI) of this cmdlet would be a list view. - - -

Examples

+

Examples

-Get all items in an announcements list ++ Get all items in an announcements list ```powershell Get-SPOListItems -Username -Url -AdminPassword -ListName ``` + - - - -Get all items in a contacts list and their properties ++ Get all items in a contacts list and their properties ```powershell Get-SPOListItems -Username -Url -AdminPassword -ListName -IncludeAllProperties $true (example shows only one of multiple retrieved items) ``` - + Get all items in a list and their properties and export to CSV ```powershell Get-SPOListItems -Username -Url -AdminPassword -ListName -IncludeAllProperties $true | Export-CSV ``` - -Get all contacts from a contact list that belong to a specific company ++ Get all contacts from a contact list that belong to a specific company ```powershell Get-SPOListItems -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Contacts list" -IncludeAllProperties $true | where {$_.Company -eq "Uogiavv"} | select Title, Company ``` - + ++ Get all properties of a document as a list item* - - -Get all properties of a document as a list item* - - - - - - - + Get a list of all documents in a document library ```powershell Get-SPOListItems -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Documents" -IncludeAllProperties $true | select FileLeafRef ``` + - - - - - -Get a list of all documents in a document library, including folders and subfolders ++ Get a list of all documents in a document library, including folders and subfolders ```powershell Get-SPOListItems -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Documents" -IncludeAllProperties $true -Recursive | select FileLeafRef ``` - -Get a list of all Excel documents in a document library ++ Get a list of all Excel documents in a document library ```powershell Get-SPOListItems -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Documents" -IncludeAllProperties $true | where {$_.File_x0020_Type -eq "xlsx"} |select FileLeafRef ``` - - - + - - -Get a list of all Excel documents in a document library and export to CSV ++ Get a list of all Excel documents in a document library and export to CSV ```powershell Get-SPOListItems -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Documents" -IncludeAllProperties $true | where {$_.File_x0020_Type -eq "xlsx"} |select FileLeafRef | export-csv ``` - - - - - - - +
- - -

Get-SPOListFields

+## **Get-SPOListFields** Retrieves all columns in a given list. This includes hidden columns and excluded from views. - - - - - - -

Parameters

+

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 - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's password +```powershell +[string]$ListName +``` -[string]$ListName - - - - -

Examples

+

Examples

-Get all fields of a links list ++ Get all fields of a links list ```powershell Get-SPOListFields -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com/sites/teamsitewithlists -AdminPassword Pass -ListTitle "Links list" ``` + +

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 # Paths to SDK. Please verify location on your computer. @@ -180,6 +129,6 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens -Technicalities -Get-SPOListItems is using InternalName for item properties +### **Technicalities** +Get-SPOListItems is using InternalName for item properties
18.01.15 Added recursion and -Recursive switch parameter From 774d9149844c6a0944adafcbacbb63f60052cd9b Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:51:51 +0100 Subject: [PATCH 13/48] Update GetSPOListItems9.psm1 --- .../GetSPOListItems9.psm1 | 151 ++++++++---------- 1 file changed, 64 insertions(+), 87 deletions(-) diff --git a/Items Management/GetSpoListItems and GetSPOListFields/GetSPOListItems9.psm1 b/Items Management/GetSpoListItems and GetSPOListFields/GetSPOListItems9.psm1 index fe28d475..3af3c212 100644 --- a/Items Management/GetSpoListItems and GetSPOListFields/GetSPOListItems9.psm1 +++ b/Items Management/GetSpoListItems and GetSPOListFields/GetSPOListItems9.psm1 @@ -1,19 +1,18 @@ -function Get-SPOListFields -{ - param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, - [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, - [Parameter(Mandatory=$true,Position=3)] - [string]$ListTitle, - [Parameter(Mandatory=$false,Position=4)] - [bool]$IncludeSubsites=$false - ) - -$password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force +function Get-SPOListFields{ + param ( + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, + [Parameter(Mandatory=$true,Position=3)] + [string]$AdminPassword, + [Parameter(Mandatory=$true,Position=3)] + [string]$ListTitle, + [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.Lists) @@ -26,53 +25,50 @@ $password = ConvertTo-SecureString -string $AdminPassword -AsPlainText -Force $ctx.ExecuteQuery() - $fieldsArray=@() - $fieldslist=@() - foreach ($fiel in $ll.Fields) - { - #Write-Host $fiel.Description `t $fiel.EntityPropertyName `t $fiel.Id `t $fiel.InternalName `t $fiel.StaticName `t $fiel.Tag `t $fiel.Title `t $fiel.TypeDisplayName - - $array=@() - $array+="InternalName" - $array+="StaticName" - $array+="Tag" - $array+="Title" - - $obj = New-Object PSObject - $obj | Add-Member NoteProperty $array[0]($fiel.InternalName) - $obj | Add-Member NoteProperty $array[1]($fiel.StaticName) - $obj | Add-Member NoteProperty $array[2]($fiel.Tag) - $obj | Add-Member NoteProperty $array[3]($fiel.Title) - - $fieldsArray+=$obj - $fieldslist+=$fiel.InternalName - Write-Output $obj - } + $fieldsArray=@() + $fieldslist=@() + + foreach ($fiel in $ll.Fields){ + #Write-Host $fiel.Description `t $fiel.EntityPropertyName `t $fiel.Id `t $fiel.InternalName `t $fiel.StaticName `t $fiel.Tag `t $fiel.Title `t $fiel.TypeDisplayName + + $array=@() + $array+="InternalName" + $array+="StaticName" + $array+="Tag" + $array+="Title" + + $obj = New-Object PSObject + $obj | Add-Member NoteProperty $array[0]($fiel.InternalName) + $obj | Add-Member NoteProperty $array[1]($fiel.StaticName) + $obj | Add-Member NoteProperty $array[2]($fiel.Tag) + $obj | Add-Member NoteProperty $array[3]($fiel.Title) + + $fieldsArray+=$obj + $fieldslist+=$fiel.InternalName + Write-Output $obj + } $ctx.Dispose() return $fieldsArray - } -function Get-SPOListItems -{ - +function Get-SPOListItems{ param ( - [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, - [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, - [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, - [Parameter(Mandatory=$false,Position=5)] - [bool]$IncludeAllProperties=$false, - [switch]$Recursive - ) + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, + [Parameter(Mandatory=$true,Position=3)] + [string]$AdminPassword, + [Parameter(Mandatory=$true,Position=4)] + [string]$ListTitle, + [Parameter(Mandatory=$false,Position=5)] + [bool]$IncludeAllProperties=$false, + [switch]$Recursive + ) @@ -91,62 +87,43 @@ function Get-SPOListItems - $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery -# $spqQuery.ViewAttributes = "Scope='Recursive'" + $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery + # $spqQuery.ViewAttributes = "Scope='Recursive'" -if($Recursive) -{ -$spqQuery.ViewXml =""; -} + if($Recursive){ + $spqQuery.ViewXml =""; + } + $bobo=Get-SPOListFields -Username $Username -Url $Url -AdminPassword $AdminPassword -ListTitle $ListTitle - $itemki=$ll.GetItems($spqQuery) $ctx.Load($itemki) $ctx.ExecuteQuery() - - $objArray=@() - for($j=0;$j -lt $itemki.Count ;$j++) - { - + for($j=0;$j -lt $itemki.Count ;$j++){ $obj = New-Object PSObject - if($IncludeAllProperties) - { - - for($k=0;$k -lt $bobo.Count ; $k++) - { - + if($IncludeAllProperties){ + for($k=0;$k -lt $bobo.Count ; $k++){ # Write-Host $k $name=$bobo[$k].InternalName $value=$itemki[$j][$name] $obj | Add-Member NoteProperty $name($value) -Force - } - } - else - { + } + else{ $obj | Add-Member NoteProperty ID($itemki[$j]["ID"]) $obj | Add-Member NoteProperty Title($itemki[$j]["Title"]) - - } - + } # Write-Host $obj.ID `t $obj.Title $objArray+=$obj - - } - - return $objArray - - - } +} # Paths to SDK. Please verify location on your computer. @@ -157,4 +134,4 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens -Export-ModuleMember -Function "Get-SPOListItems", "Get-SPOListFields" \ No newline at end of file +Export-ModuleMember -Function "Get-SPOListItems", "Get-SPOListFields" From fc1941a59c7f8847595210574697e9c76b3395d4 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:52:57 +0100 Subject: [PATCH 14/48] Update description.md --- .../Module for item management/description.md | 227 +++++++----------- 1 file changed, 90 insertions(+), 137 deletions(-) diff --git a/Items Management/Module for item management/description.md b/Items Management/Module for item management/description.md index 2c3d9a30..7ee24a30 100644 --- a/Items Management/Module for item management/description.md +++ b/Items Management/Module for item management/description.md @@ -1,5 +1,5 @@ 5 cmdlets for item management: - + Update-SPOListItem Remove-SPOListItem @@ -9,254 +9,207 @@ Remove-SPOListItemPermissions Remove-SPOListItemInheritance Restore-SPOListItemInheritance - + -Update-SPOListItem +## **Update-SPOListItem** Updates a property of an item -Parameters - - +### *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 site - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's Password - +```powershell [string]$ListTitle +``` Mandatory. Specifies list title where the item is located - +```powershell [Int]$ItemID +``` Mandatory. Specifies item ID - +```powershell [string]$FieldToUpdate -Mandatory. Specifies the name of the field to update. In order to get the internal names of the fields (more often than not they are different from column titles), you can use Get-SPOListFields - +``` +Mandatory. Specifies the name of the field to update. In order to get the internal names of the fields (more often than not they are different from column titles), you can use [Get-SPOListFields](https://gallery.technet.microsoft.com/scriptcenter/GetSpoListItems-and-a8ecd5fa) +```powershell [string]$ValueToUpdate +``` Mandatory. Specifies the value of the field for this item - +
-Example: +## *Example:* -Change the name of an item (file in this example) - ++ Change the name of an item (file in this example) + -Update a column for all items using Get-SPOListItems cmdlet -(Here we will be updating Title column to be called "Title" + the item ID number ++ Update a column for all items using [Get-SPOListItems cmdlet](https://gallery.technet.microsoft.com/scriptcenter/GetSpoListItems-and-a8ecd5fa) +(Here we will be updating Title column to be called "Title" + the item ID number + And the result: + +
- - - - - - - - - - - - - - - - - - -Remove-SPOListItem +## **Remove-SPOListItem** Removes an item - - -Parameters - - +### *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 site - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's Password - +```powershell [string]$ListTitle +``` Mandatory. Specifies list title where the item is located - +```powershell [Int]$ItemID +``` Mandatory. Specifies item ID - - -Example: - - - -Remove the item no 16 located in one of the subfolders - - - - - +## *Example:* - - - - - - - - ++ Remove the item no 16 located in one of the subfolders - + -Remove-SPOListItemPermissions +## **Remove-SPOListItemPermissions** Removes all permissions for an item. Only the user running the cmdlet will have access - - -Parameters - - +### *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 site - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's Password - +```powershell [string]$ListTitle +``` Mandatory. Specifies list title where the item is located - +```powershell [Int]$ItemID +``` Mandatory. Specifies item ID -Example: +## *Example:* -Remove the permissions -Remove-SPOListItemPermissions -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -ListTitle chc1 -ItemID 4 ++ Remove the permissions - - - - - - - +Remove-SPOListItemPermissions -Username trial@trialtrial123.onmicrosoft.com -Url https://trialtrial123.sharepoint.com -AdminPassword Pass -ListTitle chc1 -ItemID 4 - + - +
-Remove-SPOListItemInheritance +## **Remove-SPOListItemInheritance** Stops inheriting permissions for an item - - -Parameters - - +### *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 site - -[string]$AdminPassword, +```powershell +[string]$AdminPassword, +``` Admin's Password - +```powershell [string]$ListTitle +``` Mandatory. Specifies list title where the item is located - +```powershell [Int]$ItemID +``` Mandatory. Specifies item ID - +
- - - - -Restore-SPOListItemInheritance +## **Restore-SPOListItemInheritance** Deletes unique permissions for an item - - -Parameters +### *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 site - +```powershell [string]$AdminPassword, +``` Admin's Password - +```powershell [string]$ListTitle +``` Mandatory. Specifies list title where the item is located - +```powershell [Int]$ItemID +``` Mandatory. Specifies item ID - - - - - - - - - - - - - - -Requirements +## *Requirements* From 31b7b08546820548c15e2ea06f299c04b55de374 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:53:34 +0100 Subject: [PATCH 15/48] Update description.md --- Items Management/Module for item management/description.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Items Management/Module for item management/description.md b/Items Management/Module for item management/description.md index 7ee24a30..62713602 100644 --- a/Items Management/Module for item management/description.md +++ b/Items Management/Module for item management/description.md @@ -1,5 +1,5 @@ 5 cmdlets for item management: - +
Update-SPOListItem Remove-SPOListItem From d81d2560cc3dfddb99b89a40436a8a51e8a13e13 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:54:48 +0100 Subject: [PATCH 16/48] Update SPOListItemFunctions.psm1 --- .../SPOListItemFunctions.psm1 | 210 ++++++++---------- 1 file changed, 92 insertions(+), 118 deletions(-) diff --git a/Items Management/Module for item management/SPOListItemFunctions.psm1 b/Items Management/Module for item management/SPOListItemFunctions.psm1 index 715d157e..8e8d9ed6 100644 --- a/Items Management/Module for item management/SPOListItemFunctions.psm1 +++ b/Items Management/Module for item management/SPOListItemFunctions.psm1 @@ -1,18 +1,16 @@ -function Remove-SPOListItemInheritance -{ - - param ( +function Remove-SPOListItemInheritance{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [Int]$ItemID - ) + [Int]$ItemID + ) @@ -29,42 +27,37 @@ $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery -$spqQuery.ViewXml =""; + $spqQuery.ViewXml =""; $itemek=$ll.GetItemByID($ItemID) $ctx.Load($itemek) $ctx.ExecuteQuery() $itemek.BreakRoleInheritance($true, $false) - try - { - $ctx.ExecuteQuery() - write-host $itemek.Name " Success" - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - } + try{ + $ctx.ExecuteQuery() + write-host $itemek.Name " Success" + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } +} - function Remove-SPOListItemPermissions -{ - - param ( +function Remove-SPOListItemPermissions{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [Int]$ItemID - ) + [Int]$ItemID + ) @@ -81,42 +74,37 @@ $spqQuery.ViewXml =""; $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery -$spqQuery.ViewXml =""; + $spqQuery.ViewXml =""; $itemek=$ll.GetItemByID($ItemID) $ctx.Load($itemek) $ctx.ExecuteQuery() $itemek.BreakRoleInheritance($false, $false) - try - { - $ctx.ExecuteQuery() - write-host $itemek.Name " Success" - } -catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - } + try{ + $ctx.ExecuteQuery() + write-host $itemek.Name " Success" + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } +} - function Restore-SPOListItemInheritance -{ - - param ( +function Restore-SPOListItemInheritance{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [Int]$ItemID - ) + [Int]$ItemID + ) @@ -133,41 +121,35 @@ catch [Net.WebException] $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery -$spqQuery.ViewXml =""; + $spqQuery.ViewXml =""; $itemek=$ll.GetItemByID($ItemID) $ctx.Load($itemek) $ctx.ExecuteQuery() $itemek.ResetRoleInheritance() - try - { - $ctx.ExecuteQuery() - write-host $itemek.Name " Success" - } - catch [Net.WebException] - { + try{ + $ctx.ExecuteQuery() + write-host $itemek.Name " Success" + } + catch [Net.WebException]{ Write-Host $_.Exception.ToString() - } - - - } + } +} - function Remove-SPOListItem -{ - - param ( +function Remove-SPOListItem{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [Int]$ItemID - ) + [Int]$ItemID + ) @@ -184,48 +166,43 @@ $spqQuery.ViewXml =""; $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery -$spqQuery.ViewXml =""; + $spqQuery.ViewXml =""; $itemek=$ll.GetItemByID($ItemID) $ctx.Load($itemek) $ctx.ExecuteQuery() $itemek.DeleteObject() - try - { - $ctx.ExecuteQuery() - write-host $itemek.Name " Success" - } -catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - } + try{ + $ctx.ExecuteQuery() + write-host $itemek.Name " Success" + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } +} - function Update-SPOListItem -{ - - param ( +function Update-SPOListItem{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle, + [string]$ListTitle, [Parameter(Mandatory=$true,Position=5)] - [Int]$ItemID, -[Parameter(Mandatory=$true,Position=6)] - [string]$FieldToUpdate, -[Parameter(Mandatory=$true,Position=7)] - [string]$ValueToUpdate - ) + [Int]$ItemID, + [Parameter(Mandatory=$true,Position=6)] + [string]$FieldToUpdate, + [Parameter(Mandatory=$true,Position=7)] + [string]$ValueToUpdate + ) @@ -250,18 +227,15 @@ catch [Net.WebException] $ctx.ExecuteQuery() $itemek[$FieldToUpdate] = $ValueToUpdate $itemek.Update() - try - { - $ctx.ExecuteQuery() - write-host $itemek.Name " Success" - } - catch [Net.WebException] - { - Write-Host $_.Exception.ToString() - } - - } + try{ + $ctx.ExecuteQuery() + write-host $itemek.Name " Success" + } + catch [Net.WebException]{ + Write-Host $_.Exception.ToString() + } +} # 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 638d1a460caa4c785e8eb822652fe44c037d5527 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:55:24 +0100 Subject: [PATCH 17/48] Update description.md --- .../description.md | 32 +++++-------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/Items Management/Remove permissions from SharePoint Online items/description.md b/Items Management/Remove permissions from SharePoint Online items/description.md index 3a7cd73c..42166af2 100644 --- a/Items Management/Remove permissions from SharePoint Online items/description.md +++ b/Items Management/Remove permissions from SharePoint Online items/description.md @@ -2,31 +2,15 @@ Powershell script to remove permissions for all items in a SharePoint Online lis As a result, only the user running this script will have access to the files. - - - - -Result - - - - - - +### *Result* - + - - - +
-Requirements +### *Requirements* -Before you run it, you have to modify the last line of the script! - - - - +**Before you run it, you have to modify the last line of the script!** ```PowerShell # Paths to SDK. Please verify location on your computer. @@ -36,11 +20,11 @@ Add-Type -Path "c:\Program Files\Common Files\microsoft shared\Web Server Extens Remove-SPOListAllItemsInheritance -Username "trial@trialtrial123.onmicrosoft.com" -Url "https://trialtrial123.sharepoint.com" -AdminPassword "Pass" -ListTitle "chc1" ``` -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 ++ Enter your credentials and the site where you want to modify the inheritance. ++ 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

-Enjoy and please share feedback!s \ No newline at end of file +Enjoy and please share feedback!s From aee4b14d964dc4f33c49b663b373bf59660ebef5 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 00:56:00 +0100 Subject: [PATCH 18/48] Update RemovePermissionsFromItems.ps1 --- .../RemovePermissionsFromItems.ps1 | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Items Management/Remove permissions from SharePoint Online items/RemovePermissionsFromItems.ps1 b/Items Management/Remove permissions from SharePoint Online items/RemovePermissionsFromItems.ps1 index 459fc801..c2b6cb0e 100644 --- a/Items Management/Remove permissions from SharePoint Online items/RemovePermissionsFromItems.ps1 +++ b/Items Management/Remove permissions from SharePoint Online items/RemovePermissionsFromItems.ps1 @@ -1,17 +1,15 @@ <#Powershell script to remove permissions for all items in a SharePoint Online list. As a result, only the user running this script will have access to the files. Before you run it, you have to modify the last line of the script! #> -function Remove-SPOListAllItemsInheritance -{ - - param ( +function Remove-SPOListAllItemsInheritance{ + param ( [Parameter(Mandatory=$true,Position=1)] - [string]$Username, - [Parameter(Mandatory=$true,Position=2)] - [string]$Url, + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, [Parameter(Mandatory=$true,Position=3)] - [string]$AdminPassword, + [string]$AdminPassword, [Parameter(Mandatory=$true,Position=4)] - [string]$ListTitle - ) + [string]$ListTitle + ) @@ -36,15 +34,13 @@ function Remove-SPOListAllItemsInheritance $ctx.ExecuteQuery() - for($j=0;$j -lt $itemki.Count ;$j++) - { + for($j=0;$j -lt $itemki.Count ;$j++){ $itemki[$j].BreakRoleInheritance($false, $false) } - $ctx.ExecuteQuery() - } +} # Paths to SDK. Please verify location on your computer. From 8661821bf3f4c9210fe730fb641aab2bcd802757 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:08:21 +0100 Subject: [PATCH 19/48] Update readme.md --- .../readme.md | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/Licensing/Check User Licenses using plan type/readme.md b/Licensing/Check User Licenses using plan type/readme.md index e63ae021..122e9903 100644 --- a/Licensing/Check User Licenses using plan type/readme.md +++ b/Licensing/Check User Licenses using plan type/readme.md @@ -8,15 +8,13 @@ EXCHANGE_S_STANDARD available in Office 365 Business and EXCHANGE_S_ENTERPRISE -If you have multiple subscriptions in your tenant and would like to check a particular service, e.g. only Exchange_S_Enterprise, use the Check user licenses using Service Name script here: +If you have multiple subscriptions in your tenant and would like to check a particular service, e.g. only Exchange_S_Enterprise, use the Check user licenses using Service Name script [here](https://gallery.technet.microsoft.com/Check-user-licenses-using-461b317c). -https://gallery.technet.microsoft.com/Check-user-licenses-using-461b317c +
- - -### How to use? +## **How to use?** -1. Make sure you have installed Azure AD module available here: https://msdn.microsoft.com/en-us/library/azure/jj151815(v=azure.98).aspx +1. Make sure you have installed Azure AD module available [here](https://msdn.microsoft.com/en-us/library/azure/jj151815(v=azure.98).aspx) 2. Download the script and open it (in Notepad, ISE, whatever you prefer). @@ -40,40 +38,24 @@ Plans to choose from. Please enter only one value above * MicrosoftCommunicationsOnline * Exchange - - In $PlanToCheck="Enter the name of the plan you want to check" In $CSVPath leave as it is if you don't want a csv report, or if you do, enter path in inverted commas like in the example below: - ```PowerShell $CSVPath="E:\technet\UsersWithDisabledEXO.csv" ``` - ```$ChecksWhetherThePlanIs ``` if set to "Disable" (as it is) will check for all disabled plans. If you want to check successfully provisioned or pending activation, enter "Success" or "PendingActivation". Important! Disabled are only the services where you assigned the license but not all services are active (e.g. E3 is assigned, but Exchange Online is unmarked). See example below: - - Here the license is disabled: - - - - - + Here it is NOT: - - - - - - - + 4. Save the script and drag&drop it to Powershell. It will ask you for credentials and display a list of users on the screen. From d12c72c6abc0c8d8ef3192d070342e76590eef3f Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:08:59 +0100 Subject: [PATCH 20/48] Update CheckingLicensesWithPlanType.ps1 --- .../CheckingLicensesWithPlanType.ps1 | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/Licensing/Check User Licenses using plan type/CheckingLicensesWithPlanType.ps1 b/Licensing/Check User Licenses using plan type/CheckingLicensesWithPlanType.ps1 index e2cc800b..04e46cab 100644 --- a/Licensing/Check User Licenses using plan type/CheckingLicensesWithPlanType.ps1 +++ b/Licensing/Check User Licenses using plan type/CheckingLicensesWithPlanType.ps1 @@ -1,4 +1,4 @@ -<# +<# This script works only in limited number of scenarios. If you have more than one subscription, use another script 'CheckLicensesWithServiceName' also published on Technet Gallery ((Get-Msoluser -UserPrincipalName test2@trial765.onmicrosoft.com).licenses.servicestatus | where {$_.ServicePlan.ServiceType -eq "Exchange"}) @@ -31,31 +31,25 @@ Connect-MsolService #Gets the users $Users = Get-MSolUser -All -if($Users -ne $null) -{ -Write-Host "Loaded all users." +if($Users -ne $null){ + Write-Host "Loaded all users." } -else -{ -Write-Host "Couldn't get the users." +else{ + Write-Host "Couldn't get the users." } -if($CSVPath) -{ - Write-Host "Users will be saved to" $CSVPath +if($CSVPath){ + Write-Host "Users will be saved to" $CSVPath } -foreach($user in $users) -{ +foreach($user in $users){ #returns ServicePlan and ProvisioningStatus $serviceStatus=((Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses.servicestatus | where {$_.ServicePlan.ServiceType -eq $PlanToCheck}) - if($serviceStatus.ProvisioningStatus -eq "Disabled") - { - Write-Host $user.UserPrincipalName - if($CSVPath) - { - Export-Csv -InputObject $user -LiteralPath $CSVPath -Append + if($serviceStatus.ProvisioningStatus -eq "Disabled"){ + Write-Host $user.UserPrincipalName + if($CSVPath){ + Export-Csv -InputObject $user -LiteralPath $CSVPath -Append } } } From 63127743d3e352ceec1788404b65828969ec5398 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:11:37 +0100 Subject: [PATCH 21/48] Update description.md --- .../description.md | 32 +++++-------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/Licensing/Check user licenses using Service Name/description.md b/Licensing/Check user licenses using Service Name/description.md index f4b3b1d4..62d50337 100644 --- a/Licensing/Check user licenses using Service Name/description.md +++ b/Licensing/Check user licenses using Service Name/description.md @@ -1,9 +1,7 @@ Powershell script to check user licenses by the service name. - - Possible service names: - +``` PROJECTWORKMANAGEMENT SWAY @@ -29,16 +27,16 @@ SHAREPOINTENTERPRISE EXCHANGE_S_STANDARD EXCHANGE_S_ENTERPRISE - +``` - +
-### How to use? +## **How to use?** -1. Make sure you have installed Azure AD module available here: https://msdn.microsoft.com/en-us/library/azure/jj151815(v=azure.98).aspx +1. Make sure you have installed Azure AD module available [here](https://msdn.microsoft.com/en-us/library/azure/jj151815(v=azure.98).aspx). 2. Download the script and open it (in Notepad, ISE, whatever you prefer). @@ -83,29 +81,15 @@ $CSVPath="E:\technet\UsersWithDisabledEXO.csv" Important! Disabled are only the services where you assigned the license but not all services are active (e.g. E3 is assigned, but Exchange Online is unmarked). See example below: - - Here the license is disabled: - - - - - + Here it is NOT: - - - - - - - + 4. Save the script and drag&drop it to Powershell. It will ask you for credentials and display a list of users on the screen. - -

-Enjoy and please share feedback! \ No newline at end of file +Enjoy and please share feedback! From 40029384aff44d9b91301a5d656104634c491375 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:12:45 +0100 Subject: [PATCH 22/48] Update CheckLicensesWithServiceName.ps1 --- .../CheckLicensesWithServiceName.ps1 | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/Licensing/Check user licenses using Service Name/CheckLicensesWithServiceName.ps1 b/Licensing/Check user licenses using Service Name/CheckLicensesWithServiceName.ps1 index 74594b95..f4a0ced0 100644 --- a/Licensing/Check user licenses using Service Name/CheckLicensesWithServiceName.ps1 +++ b/Licensing/Check user licenses using Service Name/CheckLicensesWithServiceName.ps1 @@ -1,4 +1,4 @@ - + <# Possible serviceNames: PROJECTWORKMANAGEMENT @@ -36,31 +36,27 @@ Connect-MsolService #Gets the users $Users = Get-MSolUser -All -if($Users -ne $null) -{ -Write-Host "Loaded all users." +if($Users -ne $null){ + Write-Host "Loaded all users." } -else -{ -Write-Host "Couldn't get the users." +else{ + Write-Host "Couldn't get the users." } -if($CSVPath) -{ - Write-Host "Users will be saved to" $CSVPath +if($CSVPath){ + Write-Host "Users will be saved to" $CSVPath } -foreach($user in $users) -{ +foreach($user in $users){ #returns ServicePlan and ProvisioningStatus $serviceStatus=((Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses.servicestatus | where {$_.ServicePlan.ServiceName -eq $PlanToCheck}) - if($serviceStatus.ProvisioningStatus -eq "Disabled") - { - Write-Host $user.UserPrincipalName - if($CSVPath) - { - Export-Csv -InputObject $user -LiteralPath $CSVPath -Append + + if($serviceStatus.ProvisioningStatus -eq "Disabled"){ + Write-Host $user.UserPrincipalName + + if($CSVPath){ + Export-Csv -InputObject $user -LiteralPath $CSVPath -Append } } } From 1c4b7f33c91e27919e73640c21afa2de22ec3958 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:16:52 +0100 Subject: [PATCH 23/48] Update description.md --- .../description.md | 33 +++++-------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/Licensing/Export all assigned licenses and services provisioning statuses/description.md b/Licensing/Export all assigned licenses and services provisioning statuses/description.md index 2158b271..fe902cff 100644 --- a/Licensing/Export all assigned licenses and services provisioning statuses/description.md +++ b/Licensing/Export all assigned licenses and services provisioning statuses/description.md @@ -2,22 +2,13 @@ Short Powershell script to export user licenses and services' provisioning statu -The script is a variation on Get user licenses and services' provisioning statuses . It accounts for the fact that one user may have more than one license assigned and creates records per given user's license. +The script is a variation on [Get user licenses and services' provisioning statuses](https://gallery.technet.microsoft.com/scriptcenter/Get-user-licenses-and-f20e5e42) . It accounts for the fact that one user may have more than one license assigned and creates records per given user's license. That means that in the exported csv file, a user with 2 licenses will appear twice, like this: - - - + - - - - - - -How to use? - +## How to use? 1. Download and run the script. @@ -27,28 +18,20 @@ How to use? - - -PowerShell +```PowerShell $CSVPath="C:\Users\Arletka\Documents\usss34.csv" - + ``` -Expected results +## Expected results During script execution: - - - - - + In a csv file: - - - + From 4ffc948052298e10cb11c041b210383cfc19f3e7 Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:18:52 +0100 Subject: [PATCH 24/48] Update GetLicensesProvisioningStatusDoubleLicenses.ps1 --- ...censesProvisioningStatusDoubleLicenses.ps1 | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/Licensing/Export all assigned licenses and services provisioning statuses/GetLicensesProvisioningStatusDoubleLicenses.ps1 b/Licensing/Export all assigned licenses and services provisioning statuses/GetLicensesProvisioningStatusDoubleLicenses.ps1 index ed2aabd4..da3345b1 100644 --- a/Licensing/Export all assigned licenses and services provisioning statuses/GetLicensesProvisioningStatusDoubleLicenses.ps1 +++ b/Licensing/Export all assigned licenses and services provisioning statuses/GetLicensesProvisioningStatusDoubleLicenses.ps1 @@ -17,28 +17,24 @@ Connect-MsolService #Gets the users $Users = Get-MSolUser -All -if($Users -ne $null) -{ -Write-Host "Loaded all users." +if($Users -ne $null){ + Write-Host "Loaded all users." } -else -{ +else{ return "Couldn't get the users." } -if($CSVPath) -{ +if($CSVPath){ Write-Host "Users will be saved to" $CSVPath } # Check each user for licenses -foreach($user in $users) -{ +foreach($user in $users){ # If user has more than 1 license assigned, he will appear twice in the report - foreach($license in (Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses) - { + + foreach($license in (Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses){ $ss=$license.ServiceStatus $count=$ss.Count $uss=New-Object PSObject @@ -47,18 +43,17 @@ foreach($user in $users) $uss | Add-Member -MemberType NoteProperty -Name "Office" -Value (Get-Msoluser -UserPrincipalName $user.userPrincipalName).Office # Looping through all the services, like TEAMS1, SharePointWAC, etc. and their statuses - for($i=0;$i -lt $count; $i++) - { - $uss | Add-Member -MemberType NoteProperty -Name $ss[$i].ServicePlan.ServiceName -Value $ss[$i].ProvisioningStatus + + for($i=0;$i -lt $count; $i++){ + $uss | Add-Member -MemberType NoteProperty -Name $ss[$i].ServicePlan.ServiceName -Value $ss[$i].ProvisioningStatus } #Printing out the user info $uss # If the path to CSV is specified, all info will be exported - if($CSVPath) - { - $uss | export-csv $CSVPath -Append -Force + if($CSVPath){ + $uss | export-csv $CSVPath -Append -Force } } } From 35fd652fc016bd24d422be90f32be9b98c36f5ac Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:20:55 +0100 Subject: [PATCH 25/48] Update description.md --- .../description.md | 28 ++++--------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/Licensing/Get user licenses and services provisioning statuses/description.md b/Licensing/Get user licenses and services provisioning statuses/description.md index e53d98f5..c27e86e1 100644 --- a/Licensing/Get user licenses and services provisioning statuses/description.md +++ b/Licensing/Get user licenses and services provisioning statuses/description.md @@ -1,11 +1,6 @@ Short Powershell script to export user licenses and services' provisioning status. - - - - -How to use? - +## How to use? 1. Download and run the script. @@ -15,26 +10,15 @@ How to use? -PowerShell +```PowerShell $CSVPath="C:\Users\Arletka\Documents\usss34.csv" +``` +## Expected results -Expected results - - During script execution: - - - - - + In a csv file: - - - - - - - + From 8705dfc4656644d2a9389d08922483c1c61178bc Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:21:51 +0100 Subject: [PATCH 26/48] Update GetLicensesProvisioningStatus.ps1 --- .../GetLicensesProvisioningStatus.ps1 | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/Licensing/Get user licenses and services provisioning statuses/GetLicensesProvisioningStatus.ps1 b/Licensing/Get user licenses and services provisioning statuses/GetLicensesProvisioningStatus.ps1 index 625add09..467bf5ee 100644 --- a/Licensing/Get user licenses and services provisioning statuses/GetLicensesProvisioningStatus.ps1 +++ b/Licensing/Get user licenses and services provisioning statuses/GetLicensesProvisioningStatus.ps1 @@ -17,42 +17,36 @@ Connect-MsolService #Gets the users $Users = Get-MSolUser -All -if($Users -ne $null) -{ -Write-Host "Loaded all users." +if($Users -ne $null){ + Write-Host "Loaded all users." } -else -{ +else{ return "Couldn't get the users." } -if($CSVPath) -{ +if($CSVPath){ Write-Host "Users will be saved to" $CSVPath } -foreach($user in $users) -{ - +foreach($user in $users){ $ss=(Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses.servicestatus $count=$ss.Count $uss=New-Object PSObject $uss | Add-Member -MemberType NoteProperty -Name "UPN" -Value $user.UserPrincipalName $uss | Add-Member -MemberType NoteProperty -Name "License" -Value (Get-Msoluser -UserPrincipalName $user.userPrincipalName).licenses.accountskuid $uss | Add-Member -MemberType NoteProperty -Name "Office" -Value (Get-Msoluser -UserPrincipalName $user.userPrincipalName).Office - for($i=0;$i -lt $count; $i++) - { - $uss | Add-Member -MemberType NoteProperty -Name $ss[$i].ServicePlan.ServiceName -Value $ss[$i].ProvisioningStatus + + for($i=0;$i -lt $count; $i++){ + $uss | Add-Member -MemberType NoteProperty -Name $ss[$i].ServicePlan.ServiceName -Value $ss[$i].ProvisioningStatus } $uss - if($CSVPath) - { - $uss | export-csv $CSVPath -Append -Force + + if($CSVPath){ + $uss | export-csv $CSVPath -Append -Force } #(Get-Msoluser -UserPrincipalName $user.userPrincipalName) | select UserPrincipalName, licenses | export-csv C:\Users\Arleta.Wanat\Documents\userrr4.csv -Append -Force #.servicestatus - } From 1011c2b1e805007eb8615de4e5d657929bc4f17c Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:22:55 +0100 Subject: [PATCH 27/48] Update description.md --- .../description.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Licensing/Remove SharePoint Online licenses for all users/description.md b/Licensing/Remove SharePoint Online licenses for all users/description.md index 47cf1ab0..fd1c9252 100644 --- a/Licensing/Remove SharePoint Online licenses for all users/description.md +++ b/Licensing/Remove SharePoint Online licenses for all users/description.md @@ -4,15 +4,7 @@ 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. @@ -51,11 +43,11 @@ foreach($user in $Users) -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 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. +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! \ No newline at end of file +Enjoy and please share your comments and questions! From 22fd0a6d7567f71028604d73a3e4f7138578aedb Mon Sep 17 00:00:00 2001 From: JakubPiegza <45433779+JakubPiegza@users.noreply.github.com> Date: Fri, 28 Feb 2020 01:23:14 +0100 Subject: [PATCH 28/48] Update NoSpoLicense.ps1 --- .../NoSpoLicense.ps1 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Licensing/Remove SharePoint Online licenses for all users/NoSpoLicense.ps1 b/Licensing/Remove SharePoint Online licenses for all users/NoSpoLicense.ps1 index 64d22504..94770e1f 100644 --- a/Licensing/Remove SharePoint Online licenses for all users/NoSpoLicense.ps1 +++ b/Licensing/Remove SharePoint Online licenses for all users/NoSpoLicense.ps1 @@ -1,4 +1,4 @@ -Connect-MsolService +Connect-MsolService # Disabled Plans $disabledPlans= @() $disabledPlans +="SHAREPOINTENTERPRISE" @@ -14,8 +14,7 @@ $Users = Get-MsolUser -All Write-Host $Plan - foreach($user in $Users) - { + 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 From ac5ea9c2cb903f9686b3edecdd419a419ee51ead Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 7 Mar 2020 15:53:39 +0200 Subject: [PATCH 29/48] Create description.md --- .../description.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 Site Management/Recycle Bin/Restore deleted items from a single subsite/description.md diff --git a/Site Management/Recycle Bin/Restore deleted items from a single subsite/description.md b/Site Management/Recycle Bin/Restore deleted items from a single subsite/description.md new file mode 100644 index 00000000..3c5dc5e1 --- /dev/null +++ b/Site Management/Recycle Bin/Restore deleted items from a single subsite/description.md @@ -0,0 +1,41 @@ +The script retrieves deleted items from a single site, displays them and restores. + + + +The script first displays the items to be restored. You can then decide whether to restore them all or not: + + + + + + + + + +The script requires SharePoint Online SDK. + + + + + +How to use? +1. Download and open the file. + +2. Verify the paths to SDK are correct: + +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. DO NOT enter your password. You will be asked for it during the script execution. + +PowerShell +# Insert the credentials and the name of the admin site +$Username="arleta@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Site="https://tenant.sharepoint.com/sub1" + + + + From 23db1c80c8a532ef9bad383caa1f6dd8ec7334ee Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 7 Mar 2020 15:54:01 +0200 Subject: [PATCH 30/48] Add files via upload --- .../Capture8.PNG | Bin 0 -> 16902 bytes .../Capture9.PNG | Bin 0 -> 22563 bytes .../restoreDeletedFromOneSite.ps1 | 120 ++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture8.PNG create mode 100644 Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture9.PNG create mode 100644 Site Management/Recycle Bin/Restore deleted items from a single subsite/restoreDeletedFromOneSite.ps1 diff --git a/Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture8.PNG b/Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture8.PNG new file mode 100644 index 0000000000000000000000000000000000000000..32f3d492aa61bcb0ee9f89a944d85441a59f98e1 GIT binary patch literal 16902 zcmd6ObySq$*6%1%(jYK^ba!`&w3L8!O9@CfNQWRL4Uz&9f`D{)gLJ1f3?0MJ+;=$V zJLi0N-Fw%%>;7|D3x;{;jpy0<+rPah{H?Mq#&hE5AP@*cUQS941bV6h0zF|sK?06Q zEaT$` zp)t~&Js1*PKW5pj97AyKWx>JLZ+E?_yL(dXexvqLXb1mzQKmLA6aIoln=zK7HaUN{B9yUCb%I(~;Eohl}&uDsEnoNW?#gu&8 z?~MHIUWf_*It&@4FDneP`}M2pH+1vmr<-5qE z$1)zO8py33bGp`zm?mV`!4LP)`9ZSa>oxAQd}T=?o}H`UQ6axp?a$=s`eekEYq9Ev zS!{Jo#NNB>n5oU~f`LJ5E#G9SO-_FT6xSnCMnqT^YQpbD%W>NlUI+1k67pGcca=Y_ zM%u7Nd#yxoy@aWt8U}_SFITx0n=FyMY0>=T%9$l^4Dipx?*3_<+A0J7O@X)rjOoGe zi~{VbZko;;Lon4yHz?5Ri$V7gFj#7e4JL2-TVtZOXhMzxi>V>3$igrodjXZE$Ft zk4&~7V=K}$x=?DTUuP-)GDkQRtA2$iBFw*-aH<8%%)DgLGV1SjnlY($&;p^8t!WxH z9hC!SiOK?`(tT>&W*z&jlYzZPG9HF;^1bv7Q)w$@5w;4Y)?^g#53*UI4(Sq=(*e65 zDo)b58&h`oGTJykO!VZ^gRnxU=2^4GQ_-T}c37v+K;hkDLw&=pQgVFR9kU*N-g0C; zVQTkOP=IZMRF=M|SiN_K+JZ~xAw<50Kj~N6RiolLeG#_eDzsNeM*hp#8h!cF`FG2os;26JGCI;=ExTl|t4)KPZe!kdp+&JHUQy*BQHTzAL@Ep-o z%ix6G6D2fUEH&+B$~nLbvpenGQ(?cZ(n`^ubFf+x--*&%vjEnquA$gY)8CIqqG>Y$!x&&9`Z0XOWj!nT1VvS?l683mpa+adP; zd|vlzMp|lNB@O`zS=A;b{{RP9;_acZb-^ubEJ14V+6=~m!o%PE>w!BfyFBli@s)&S z4_w+fE^Rd|vm6AaZTk7Whl>#M#v{=ZK6VD^R5h2Q23EaRQRS5nBb&QQK3N?MJ%5pK z^5!0_#M5g)*qf=Qz*M5QqC#yj=0yP;q-~D5_cjUs6ZgyeP>Hfe95Ln8xv!eS`O7{Z zR*||pnJTmEe8#w~=2Wvsqr+PBk8Gu@*Y45#H`Sx0MflLttHYw=Ls5wfjo``^!pgFu z(YZQriCRf7@dN^I;Z}~D7RL!Z$STI0r54w2-@cPwR@Oy+(S1WJu7yck-SN<#Lx~1; zhOw!c4c~8s`i5WYZuG(k?C)ngQ1qRSthKQ!c6?TfCsof3yjLor*)rZD7EE37D98nC zikHJi#>6umead7SBdH^k>M^{>tp+Z~UIr686RB8byJSTNS6KVGI3Z35PQ6#D8J|*Q zX3ciSmxjz*<9sSa6>gd<@QfTLOa~@rFZKL7?{MNK2iYexd#IRptO%#@{W@7+W|n5& z@U;Ctu;y&)aS388;}>UQHhSxQj^PPiKmC3@ReA4KrMik;Z#9=T<>|T^?Kz0MWPuU7 zgZ*-`R>KyZTD>|JY3QiH2$C^^C+v)ah-c#Px+kIC6?#9~iB)5gXoY4<+A$h6FpwY7 zjrBxoK=c=KgD;ZnM1r?=ffA2ZvzPW^Mwy=pF&Sgle1=i`B70f!S-)5)4xfTH>;e(% zj}(mlOEWHCTA!==h5JD#1X#((i)Q+Z1ANZo=UHBPh*Qk8M{ZGLNGBC#*AHgCB*AL?0!`?>D@rbt1!{1T_tBkF&3AIWZGM^Ed-S+6 z$zqdt5=jlQAxH~DT>6a^X4@iDOUoRKJQ=x7UlTq!h!JZjXWRtnM_e&nprHFGBc1f> z6pNBk1G^8|LAyIB@nC$ughioB{p$r`&|5P~-0AqBkw{MD7gAZ#`VFO1zD#O)+x1@k zhWf~`n|NFM9^4v5uX*LA0+XSJ{jt`)d!9AL*J09>*X?P`egd9~cY8;5grU8Y_N4cO zklOq3d*>7KqGZemb*TO3!R?~c);F#7ySJg_t|(GG7NHolffe2cPIsw&_PB=Z-&c>PDXtfH$V!}=o$JX9 z9q!e`n1ePeZWNw9WGkw!$3?Zx3cmf_XM)5X>85l?G40P2d41)?{xfD*R5gd(ZO7a} z%tk_#12$NWke;=tq5RPgNuVZ2dEi!?nr^9@qf3&gx<=<6EaxB)Ws`@B270$k*Xc$( zixYRSd-X>tkx?>#bYuIP)xP*XlhRFmv=?fUzliiXznI|*re$HC61r+@7HD?Qibm0#4@}6N_=ltZbPs0 z^$?(!D#+*JPGimcy`7(N6eSquSn#P@{d0EW2?>MZ)qcR(ozW|x6SANUUDUlQmZ(te z=i&AfZVnwBzOf#I?kMN>-#pO{g>}37Zu2*Y7_kS-UZNh7=1@*|M!ajIn?bvcIR3com53nKmezNAoLkiFhrV>$>7o776vU*gT6^^5ABUx)13gRkRhD*f?}ntzaqEm_F9 zMD8rNX~!+~kCNgPDpRXeH@O_#RNHgiN!iKK1ZIdN2oEv)I(hTY->y=tkhV!>1&T0d z^hjlm(-(yztxkF>o?9(;+GcdhNQ4qy2dZW-K52MWMy--fi3=1B9I9TVo=-74P(dK$ z8~{K@vQKApO-Y+Q42CM3E&B`eaaa0Hf7a%S<0;>i_y{SZ7X)YS}Jw}H3&1zv7H=)mW z@qc??zZwsPZuG19J5s4~u|{f6^7^p8z@hWpAP(rqPUT<|74u{{&Y8dcmiKW+u4mbD znNt)L&rTV%_}8^tqYO-5Ow(8^$yNG|EK(oEduFm|>X-H0olJ$Y>1|VBuxT-ZCv9E< zWzp$oAmibx3^_iz)_^}7mE>2GIRyeO`YMlD)l@2lgZaZ)zs7fCvij=l%{dvfRWTZ)Wj5AKM$@e;KkZ6@4UVKmnj=yAyL^^9lup z*P;(gkiD{$A(&I|;a>ZyUQFZN@PQ5LmCx_XJux+`ePo3_^B2yU09J|nF`IGp@h*bg z#x0GwUX#ss<|y1!=fc}nGv=Jt-#z80?AS{p*OH%UUst1YB441a{*e_a$aJF% z=~)~l!GT0v?Ap$~JAo26e{E1Lm?Lq+bGMZz-Ws%P3sS=6{qjA}kbawfX!d4z_pkR> zdT?r_GqkPQ#({s8X3Dq6U!&5tKQ*|)_FDE53ZvmP+VU>Ds^{8$E8Qc&ojv-ZcHk@5 z7n`QTJXgMhZb(|qiQDn=j|{0)Y+ zc^aL>_l0~GDi{5yD~e7EM$_LNm`c1IaV0ie+%G$>udUDr4m%IY#Ekbzu(^L^ide-B z&SfDW8+?B)(yuhQRPws_RCP==ktXezJl2ujG8?qD9{Y_w$c;>KuIV}VOwkZ-`;hDD z)|X2DeG67=8ufj>?)Cd|Ntfp7(ck(4xtR_%bY4VZ%fZlBE80Ps_LKe^qfh7g+vr$Z zD?fqz3im%ggOPfQgV4{xsR-y~le1UXh`d8&yDy2g zfuCf~Uck{S^GJEwyb`i^(}N7Ulb6w-3B;^=+3nui)ObSQf8UAyILK5LGftXOcAGw= zy%h2Om+E+AKU%V|9S+|>ny=DLz86o!;%q^V~vDod9|w^@cL zxNFI25|!bt7+XSrsMt;`4mpX0;?k^^3NmRb-m~)FDly<0{GQ;t6lAR#{~=4ysq;g~j&kpf*fou60fykJ&{LCyDVD1+XWLt!x&rV?7Oy4J zhltp2^{SjCs6Ro?&us%UDJtoR7Kx=+`l}|QZ(rY@`v1-ju8RnfxGPj|y*gM)%(TD1 zL@<@&-lwI6JrB}~am>ZCOOIhgAJSo_wr*p3CX+nAu)L$crIf(JsX8U+A`815i7Ap` z#MM;I>+4?fvx zl`(3#kRKA4cE&do+`1l=;WgLocs9<^`kS9#u=rAKkAB~LZ??9fFJ>}hGLVV+G(}-Z z{p0E1cABlHPhO?Dm<>-9R`Jg4azgb!XQ@4mi*sXvMql74$(ub}ea3-ijE)YlW262= z;UZ6fe-uMCyW)pjiL^4oSHI|D6w+*COx}NB!a^zm?*#pWx}+_<}28Law8NHwpd3RY+jV zjF4$XWgWQAqw|R*tcya`WEr<-mg$AeNlBgI^0B9N*>}Rsq-P+1Hf(&At3HYOv)U*< z;()%^n&4Q3RyO$szdtQ(^bgN6R%F14^3;T>4AQDngW@M@$Elx!a|J4LYRN^a-Pf9F ztHIjJ=(yo;!oasCsPsgN?a=VNF!So-&;7c zRS_Y)7dA-Vu3eYj40=_N6{& z8GXR64c+y7U&6$kDcC!~IEy$8MgH4|K~Z}MV~709{v~^2XFbbjKXEtxs2IFOo6n7@oJ4nRBOH-7dTn1LqWd*{(T6{rO#Ym8m_|{s z5{FO6t%a?_LBaZrQZlqhvloN=-i4L^)1K7Q)7Q?^9g6Emg&95LYl53fmP5yeYvJ@_ zKCS~;0D$94h$v{Ine^c6f2+neu&yMp(o|cLL@<=aNE=!{)m0I~TwOPTCP1XAuT_l0 zAIr{)qIsGlSI8sD8ZAWhz=K0X8#slfL| zK2O8=@OisaZ{O(nR0LO1buzbTjUf3APs4}bLIt(I$H*f*4JP#9Yw3`pQc)?y7uSDJ zg{wEUxh_VWN3z(K;4<>#_Li7POqZD_Sc#6CeD?j;oi_DQ)#|S=Lce|im1zzS zD`bN?(F9VTrFU>Kq`f4kT4TD*JlP_4XF_R?TIU)WG(}u0D&Ebzibqg+@)U>zpQGn0 z|4B7hIs{gU=+u<(`RQ|gZ^SoC1K8-*#qW+3Dht)d(eUtbfR}N`W7Uu`10ZD($kZ74 z<1gdFbP9MkXw+2~M}?02D#huv&mJQWGt9U$r}i=-X-JD|1seovTjcuD7q8eQWPY&OyM`+mT{TIG&Syh zRWSryuFUzqARN2rA8T*|E-cR#fbgjFv{6dmSZ{0NNBq)#Gz3v9T+a^h>|2X5F8-dj zcEO3kww7o_AAK+aLR(k;$Q{-wdSpOuA0H# z)eRQF8MTNNRMGSgQDqYDWlEWtdI5MqHa`yvDUSI!oqt=o8Tz8wbsZp5e=!H6pi$M! zvC`*^&z9dBqra4{35S~lC{JozMCqH|w(C>S4s$SJ{?l%;%14zNV^`;E;@g0$U-mk6o^M!#C+;RKq3=?qM zHhfNdXWym(UdtiYK=7xKd8^^olwHW4uoucGY0erWxuBf)eT}1n^RrDOy^g*BqtBe> zGC6EsH+P&!WLSWO4uQkaQ`CXf%;jNIi*-IQrCJhxXrb%-DiR`j#Sn z3lknMvypzJ`~ZV&?3?3Dqj31Xi^w{P9ei1rQs+^DLDkciL9J+^bNM1$%ut?vEa9&^5CQyu2NL)* z;@|_(`t#1gNEN38`dqZfN``vzVaB7(|9hgSv_wz$8pX&g2(lM1h-n_WDHQ{R2^b_c z4seG8vqzY85W!jApJXRJwTiY^S;L^KU;42@;Pxv~Pa6ny_xZ}4D5uj6NDfGG=EHHE z<$9ZaXa@hy)3Aqsz*nCw9vm1BoITKu*V7igRyeT_MzG{mZ7?>%ePTZ^HkjA>h{XB!6MjIp(%Myci_O34zC-p-H|T<>o+&rdsF%t^k45 za-1{ilxol5LGJ_h`@p%!ES^G^Q}9#wyHM7X6pDX1oXB?#RZ`VphrsBuFCLGJ6TZ!8 zz2jdpGBCZ+7#lzIE4*KVwHEk7$!{yXku3uLC%r7t+o;BiW4gE8UVmG|F*OFsr5;@= zw_c;HStb3Kb_}S8wp|1)Q>m`t3U&WEHah&gMhrhl=U?*uuKl7cgV=3!jew2J-Gpt*Wk7OU7ZQ)B;zq4Eyn zd)y%q&It`s6DN{#9}qW2!2;NtDl0;Xf-_t%ydcpkmyDa@i{%W!BV8p-6r--l3?_$s zo=j5x2M|~w1TsDJE1n7TK7VsaFc~F}6UuwRqNa%v%mG|CO21`TOSQO%O=I-qyHx&y6FqQG4b1R@?S>cazG zU(Hxai=+;1m=5$)w`wGzHln2AH+L6QJ!ZiaoBS7^PAcvibSqU>XdFm(StZg+?T%pT z6^q_fcyjxl#Mw$nmOB}~e`EnGT2w{?HT1JTG%FpJMYoHvfMdfW=ocv7qc8Hl?`f0S zd8tjV4doF~23GKmn>y---S12Srqyel&mJlFzl3o(oR8qbSn!Y)auMP#OArd|Y|>1I z7&a`E36i0q%1mcP?rBQ`%BRf80CLSV!o#A$nM}Fv?XS))zzz!gBc(F$&o!f1TF}2k zpDDkSlM*pOPmhZdnv(Q$lZgyS{G>wupjv4dQGuZV-6jW8;%GWh9N!%ki#z*CgJ*t^ z*VLk$W>Aiq2uB8xBJ^`@_k*>Y4yryV4S&Y}rSs5=0xW2VwVFz$Lm(K-R#@@tzaR<_ zbv0RjY_`aXw$>^CGJF&AHN#Zn2({@oJXp)$pO)Rv-)TsYu1cDr3Q5tN0>I|`P>#7> zWWc8OGOwhoTQe^bSy^kg7#lnqBgNA0VE+pmj-t^BZR%AW+xv6=2NoAnVo1VP9;JdS z-{t9RTD*|8P@J828>k>--|w{cAr;|Uu3sAW8#!QAaN7pZt}@3Lx`VV#>3yY0z;hQT z3=;ntP~ncN?(~xCCCNTKfN;2BqikX~rGxPZRca)cEZs9l0<9 z{EdTNs={$y*z&zTVAK^Ev_FP3|0|#x5APPEQ05>A{%4Mh=PXZ;*zSn~;{nbph>Y`; z`}KdShafVbx=w%2#qpAo8<4?#&}!cOXo$144-v_~)zJ%{yXl*ZfXn^1&sfadjc^6NvyN(uR@#7t9iJ!VwjOB7FV@A@gM#VHsqVR z(8D~g4Cbv+WB@Of-1&vK2|5d^T9iY*)pQiF1(13k)RRLr>qF2*5E9VpFgxx63sB;@ zeq%TN>j)1fE=j6YD|I1+uS?IQx_~^yI9I4HdTwdi4)%BlH($~ZlMzJjqqh4JBFc+( z{|#wS0~o(;fAlQ2{wf5I-|jzUKhr+^+xmjW5D6ZEvSt4*>2C0>sO|RWt6Q-|B|dV@ zN6-#>rP2l#`0^334G;(<7e4Iyjb~|i?-@`DS)>duDZmXFl)^`q^C8Mx@*hy$8MUKG z3lOfN#VP0JM(oN@ZoxUrnM^u^+0SCso5}r$nTnca;_{-N6zwedDtpyilnnJn9%|Si zW6e~xjegN3jnuHQd{()rfJ&8+RCE3Qm-O<=FCx!V{E)#B9}*Ogn3PJahoQ@?*1Ubs zjkfy-X!uk6$Hhp87Mp2OZ45`F6pR;aD5?4M=!k- z9@FSz1zZ-*&JyH(vhagULm-0P7D^YAzT!EahG+kKNVst z&X_UOB)iZ3+@+H{zBc*t?D-_`MQsmO?>F`NhTdehB%S5PT-n|Xzb&70PPw%k z4@x#o7(wiX%+%k#*dxmFev{h zDUr-)hM<>3?PY`X@!U54ix=l{tisKIOs$&FT}Q}*l)g52wE6L~W}SLv$2!xs;!Xbk zc*n#X#G>;cVR--$MndMch~fr=x`Mw9w2EyI`we~!e{4+t6N3cefRkHX9`1u+?Fz3O zsbrJ&zy06VLirb;#~W5lv+fz5sp^z@w@{8BhpF0~E(u%ZpW+?ONoBY#5niYKS&#(g zLoCIqsFZPC8xH!9ClHXwLsf}~KiM}fdye%s?V_D|tA(m5t6@$rC=)BDNe9lI?UGe9^A`qdEPA-6;G>=9L11(#XF}Y#jtc^81O+h4xEOIG-#u8A4&-p z!|Qa_n23feZ*Ga$d`GvT?a znjTQAsqwnYRWa-lOk4K6FUc3*8KuI0a&9k~8;{8FKLwZo;uN3e(qZ}=dyJf1u^>#n zn%$a@%`QAl2nJYa!IH6mW1I~$Jb9u(7#6BC3yKxj3)hL&n8dh5bj~;IuUS$pHFb~- zXRXJ~KT)K)hP^@MI?0-xxqEf0o#iM#v5G1$ZNR?$>glVaFw6zlIk2|fb&x0&H=37s z_fOo#;nMi)7`>(=$mMzU=dhrC$7m6LdYs0B$*AV>x*s?^BY*V^thn9~p+EOEb$ICk z#x%}}+?%l7%E^?jGLnTP2K*+so}~POJ?zOuv?g*IS^Zj9$Hl(y*ifxTd2)(D9OUl^ z)W$-V=q29C_LkjgoD0p)l@$d>R^xhK4h{&>s+b`%xH#h}g5Zmh{Jyv8Ls2+qCM3V) z2Zv=40K7u}24O3Q<%%*AM4npSYIR@IBV9Y-eKGYyS_%^)WOicc>YFk;#si^A@mb2b zcqS=NM_hXyKj3BDrPyNF&??Is^t$~BJtoDjx8B!LHs`Alhe+bnF%h7nW@v;{9yZUAsTyS{ZCB2QrB!qm-E$ub zm?@`_)9I-meXEy)Vmq2{*V42WCF`Dr@vORa9vuiJV7d=bZ8IxLb9|hXzksHzt&Wao zd_x+uc<*b?_Yo4H$E!<}fa-gtgcG&P_h)S{14nDO0pIn{^n}^YZsxUhJZWZSPxJG1yxRD1R2y63w65XAIw<@vkW+9TOQJK>+EJ|r-WjVG13AjT(c(uQ z0%({hOJ@RE2-Kj=yw)$G!>y(p^y2E5P`uljPGW%s;l=k6xhwO`p63+V3hLxZ4V+Uu zhqH4q$T*o%%Z%P48m9N6FKJI30EQxgO0&Yepmq*m7bEtQH%@?lM3Ox<<@|&eR=U8Y#DZf4PU`|q7NO?C2b;6_pok#DK14~G%az9EU*wO$tj3~nx zB+)JokaNA6<5bMmsj--$IL59=gaBTBHS)-u+HfG10-Hk&^fQbMSUUb?WCosb5eQTc z-T#bIJdR>U3qRHUk&Yk$PDL{P%hk@_%J}~MbW{L6LJv@h;d3B`?ovo<0#NyD0l?ED zfp(}K*@vrOy&YyaGJa(Qhi3o>_vEq01%X^L04B+^BLC2I0Kdlo0}LapcD(1oUuIC zHgKKTg)aDh>|yKD1;LkS(aqQ>H(9q=(1A60rLvXKj(#O|;Ao;w$QA_RgcE_1ft)}Y z2{1Z`Vvc|=gcKkFZTSTkj&K%O6wU@VH&pc|A3+IVft_Tv0D0u_gzn+(*L02$WU8cTZbtMJHIGRq1;Pdc{Umz-Ap`HOiaZF8Cur=l)?H<7+wzpjw4vt(Y%85|)v6S<>Dz zf5*q0>xN!HrVYxEysg4~qq_py856Lbr@0C3*?+T0OpT+$)3-u)JAh$dqaM_4kwo;z z%^BqA1LasrJGhPwj6jHT@5zZYy|HI27HGX~B~A4;5$=6UlyF{G8xSgSWWeCF*4zBB z9zlQ)gTlL^utb6 zu2ns@P<6`yBXx)~`hRw3x~j@Ed0?x2rZ`b_wm^#j`g^A1IOd+ew}9kW!FOQ}%GO?3 z|4aSD-E}|d#|Y-^v73{O~NM-js*ryb1LKA^e?JkQ}oiVos*Nd23<@?uQjrl+l^ zN(<4o;lrh^6nv?r0CA#-OjH5T*nuLpp8->TMfg|{{Gnfb{SSY>eh%0G@PqMK@B;1) zud;^Xd8vQ!%E2oEEB-7EPhuAn^6SV1qb;iv3bYy)*FA~rj4xd!Tt`14+>(@MiSw5R zK(+N0Xr0vOxh0|=?0>=qcKAnIDpwxpRXO4&-!zg%cq}gvrND(F;=-kv2{4aWh6Y~TLolxh z?{*WF$+F7WCy@c%{}Hf(x+k7eT>c%z>Frec5YeN!p1^y`K!D6&Z3k;hq4%@_qF6;<+sWy;eIhK z`PO(A3o|pKfZ#@50dlf`Ll21Xf|ox+Jn;dG3{V{~etSFu6zN|V+0Re6e(jeVK9c;F z2@yaKix-SAgJ}BqX}h>AKrf%Sl1S$X+2}Keod#UOf&p@PJN$ z0ueL{`v3gH6oV6&E!fly`CY0vClf5;`uy`BU;C1UqbE*He&@)C-7l`>vI@jc73};p z?5#6HA+k2G@hE4JVCYCB!Xs%s5#XkLiE%|E7Bv7ixHwiYLapMQi2o30+!H=M?b_dMrvox@9LENLwo84J4R|Fi7`74cYpxf(O@#{9Iz^2-~s?`i@1=Zg&+HN)e2V{_kF%fnhpwzCgT4ob=6?Dm5=`gZDgLFrf~zy*l(wa|&HTL?dJLt}!c-X4 z^6-Hs%I&I0;MPFAY-b3uS;?o9Z_jP-Xfs3!r?v1<@1|ai@2+6+_RgULcCTNQLa{h4kC12 z$4{~u_o!e0x)LYzrwkUA{PL#K&by-T>rCb9=$B>K3SR8)bjYPi#jUT`z`(1TdOiCI zSw5|Uh3d?#^TsCm9a0O9y^SCweurE4k`KBo3Grz^TAr|5ubx^tIDayNX%n_oMV$#a5P}Ut~pQPb!Wx)vGzg1 z$3s{P88Rt~b5GSU5R4BHWgj@U8R^q?sTcG0UVl#v*WNXsB>By=(|E5P5qIMnRBrh2 zP|)yuG-@Haov%?whlmC*$2?4lxYZbJo^&b4KQ0c7RWcxmqW4ot;TSMY%AQzV0dfxx z%N2^QfRj>&YxjG_fR2_n~FeS6{ffiE949fga<1pD6G#S*lZ!MBgY9h7bHPK756*vAehQ3@X zC8;(>>Gx9!UGps*hnat1B#N^|4S#nlU(U|&>>T!{Ke=9bhHG-tdT!5auhz6i&-uf< zf$1UV(-pLqoAZ#rqRlK~2~nqE*>RrAtCl^n!X?1isevEoPe^9!p7t3q5hJ9$VI}O3 zx<-%7O%AZ2LYQl)`BL}4uk4G~s(^7G(9+X?q(OhTt;e)D#ITO1a$}@wWyD8VWCb{u&|x$A%ba*Q{c$kK-pGgSD`_ z8BC&YH~Xy6RbSY=Nse;Ciep)V(B*|5WZ9d2_CZ|uS91GNp((S)QXAi!-#0G1DR(Qk zY@NZtjW|r+bWM0xA6;(0Iq-dx;c$dPk13in8RA}vlV4FdQA1muv#ha4CY+~iU{H{R z+5A^Cvgh$zY`$_2hl14&$6;Q(DSGh66~~i-&j(^2lFfdu5nl7Mp;9!qm-?hWCrv&F zeX<$2rJ3qj^&`Gs#T3QId$LjGr&&dVkhvq_?{3mdI}HUy@J+o0N7FM!x(089 ztWd&$1}ZQ%qGmPXwAMUft&^d?m)S3qqTB>a^17_b@`Ga$4)O$m z2Pz2s@Y#Ri)xz{M_?uXH@SnMAL8XX*0k|+O?xjrx4!Da%r30D zxY>PIXrAz|6oZ9+D}7>V0uMQcUL#3X0hLcBtBB;}uG--}N}lsvv4hyw3KrIPksG z6T$Pn&J|Yj`Gj?};arybQ`QpX(Br12ABOWA%YbQv@c<0M3(e<5@nxGqQ9!89o75rl za_UqeNrGVP(n@Mxt(Kfwuf$*9X^CsqPPw`ce3D^rcSzw$0q9Vd74bYwg$w7ELN<{c zKBG8Tg07csqmX@M5aA@-S#$5y+LUuYY+BUq9qI3tFAjzV^_9xDzVGg9qUuOHK55%d zZ=M#d7*&!ZF8i=nc)W^MsbTH()%|eIg}qwku0(p#>v>VC>m|r6HaOOLR-q>Q2Ugk$ zW1&jVY;he(T%vS^3{zWoXV};fWRxllCzB-cn&Tz-teF?Wpc`w|`zOhnO#JC#CGw3(?ZvzBpBXwa0m z_4*nfFA2nCHaF8~NQP7KooQ!~TbfOg&(Hyy_;6S*H@TsD?Go&pVhw@hI&zJ5ti#7f zufGsiXq&PD(hd1Lti}4&KQ&?|nj>B(mV-;l?co`Ekzpdc1KZ0_JZ%xpcy-IYR&x>U ztY_hKYDz^>jmhy&MoBYiWPCO;`VEKEQ;|-BW=8g9_cW}%Gp(cVy&~r0)3dxGi^Ycm z(qXjqJ@27yrFu#tV1p~bxFTb%Px1s$hXkvCk`yOO!+KuSlgbF1^(#%XbxBLms5zUK z@zgg_>f#7&Zpiy)QRXvMAm9bRBdG84P;7#qtSbtcF80 zv0V|?XEtgz^(I|O;Gbmh2L+67N{kQpR1WX=SO>*T#YW1FlgF A?*IS* literal 0 HcmV?d00001 diff --git a/Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture9.PNG b/Site Management/Recycle Bin/Restore deleted items from a single subsite/Capture9.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d5de689e41a866ebaf2ce694bcc60bcf133195b9 GIT binary patch literal 22563 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 literal 0 HcmV?d00001 diff --git a/Site Management/Recycle Bin/Restore deleted items from a single subsite/restoreDeletedFromOneSite.ps1 b/Site Management/Recycle Bin/Restore deleted items from a single subsite/restoreDeletedFromOneSite.ps1 new file mode 100644 index 00000000..ed04fbb9 --- /dev/null +++ b/Site Management/Recycle Bin/Restore deleted items from a single subsite/restoreDeletedFromOneSite.ps1 @@ -0,0 +1,120 @@ +function Get-DeletedItems +{ +param ( + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + $AdminPassword, + [Parameter(Mandatory=$true,Position=3)] + [string]$Url +) + + +#Create the context and test the connection + $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 + } + + + +# Retrieve recycle bin items from a single subsite + $ctx.Load($ctx.Site) + $rb=$ctx.Web.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=@() + +#Add the items to an array and display them for a user + 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 ($obj.DirName+"/"+$obj.LeafName) + + } + +# Asks permission to restore +Write-Host "`n`nProceed with restoring all these items?" -ForegroundColor Green +$proceed=Read-Host "y/n" + + if($proceed -eq "y") + { + for($i=0;$i -lt $myarray.Count ; $i++) + { + #Restores a single item + $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 + } + } + } + elseif($proceed -eq "n") + { + Write-Host "No items will be restored" + } + else + { + Write-Host "Command not recognized" + } + + + + + + + +} + + + + +# 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="arleta@tenant.onmicrosoft.com" +$AdminPassword=Read-Host -Prompt "Password" -AsSecureString +$Site="https://tenant.sharepoint.com/sub1" + + + + Get-DeletedItems -Username $Username -AdminPassword $AdminPassword -Url $Site + + + + + + From d603a374ae8954ecc2ef463bacce3c45f35abe60 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sun, 8 Mar 2020 14:27:35 +0200 Subject: [PATCH 31/48] sample results --- .../SampleResults.csv | 3 +++ .../SampleResults.csv | 3 +++ Workflows/Get workflow report for one site/SampleResults.csv | 3 +++ 3 files changed, 9 insertions(+) create mode 100644 Workflows/Get workflow report for a site collection/SampleResults.csv create mode 100644 Workflows/Get workflow report for all site collections/SampleResults.csv create mode 100644 Workflows/Get workflow report for one site/SampleResults.csv diff --git a/Workflows/Get workflow report for a site collection/SampleResults.csv b/Workflows/Get workflow report for a site collection/SampleResults.csv new file mode 100644 index 00000000..e5529813 --- /dev/null +++ b/Workflows/Get workflow report for a site collection/SampleResults.csv @@ -0,0 +1,3 @@ +#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation +"SiteUrl","ListTitle","AllowManual","AssociationData","AutoStartChange","AutoStartCreate","BaseId","Created","Description","Enabled","HistoryListTitle","Id","InstantiationUrl","InternalName","IsDeclarative","ListId","Modified","Name","TaskListTitle","WebId","Context","Tag","Path","ObjectVersion","ServerObjectIsNull","TypedObject" +"https://etr45.sharepoint.com/sites/test1","test","True","false{32613E0A-2A96-4C71-A60E-9B8D1899FA6C}Enter Choice #1Enter Choice #2Enter Choice #3Workflow initiated: True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A workflow has been initiated on the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrueReview taskTrue{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A review task has been created for the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrue","False","True","c6964bff-bf8d-41ac-ad5e-b61ec111731a","3/8/2020 12:19:48","Use this workflow to track items in a list.","True","Workflow History","41a550db-b5df-4fa7-b6d4-3cc1e5bb1a5a",,"test wf","False","91fb8ab4-ecf8-4f4a-becf-adb32f5d3f09","3/8/2020 12:19:48","test wf","Tasks","0da03cb4-066c-45ff-97c9-1d0a756e0c16","Microsoft.SharePoint.Client.ClientContext",,"Microsoft.SharePoint.Client.ObjectPathIdentity",,"False","Microsoft.SharePoint.Client.Workflow.WorkflowAssociation" diff --git a/Workflows/Get workflow report for all site collections/SampleResults.csv b/Workflows/Get workflow report for all site collections/SampleResults.csv new file mode 100644 index 00000000..e5529813 --- /dev/null +++ b/Workflows/Get workflow report for all site collections/SampleResults.csv @@ -0,0 +1,3 @@ +#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation +"SiteUrl","ListTitle","AllowManual","AssociationData","AutoStartChange","AutoStartCreate","BaseId","Created","Description","Enabled","HistoryListTitle","Id","InstantiationUrl","InternalName","IsDeclarative","ListId","Modified","Name","TaskListTitle","WebId","Context","Tag","Path","ObjectVersion","ServerObjectIsNull","TypedObject" +"https://etr45.sharepoint.com/sites/test1","test","True","false{32613E0A-2A96-4C71-A60E-9B8D1899FA6C}Enter Choice #1Enter Choice #2Enter Choice #3Workflow initiated: True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A workflow has been initiated on the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrueReview taskTrue{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A review task has been created for the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrue","False","True","c6964bff-bf8d-41ac-ad5e-b61ec111731a","3/8/2020 12:19:48","Use this workflow to track items in a list.","True","Workflow History","41a550db-b5df-4fa7-b6d4-3cc1e5bb1a5a",,"test wf","False","91fb8ab4-ecf8-4f4a-becf-adb32f5d3f09","3/8/2020 12:19:48","test wf","Tasks","0da03cb4-066c-45ff-97c9-1d0a756e0c16","Microsoft.SharePoint.Client.ClientContext",,"Microsoft.SharePoint.Client.ObjectPathIdentity",,"False","Microsoft.SharePoint.Client.Workflow.WorkflowAssociation" diff --git a/Workflows/Get workflow report for one site/SampleResults.csv b/Workflows/Get workflow report for one site/SampleResults.csv new file mode 100644 index 00000000..e5529813 --- /dev/null +++ b/Workflows/Get workflow report for one site/SampleResults.csv @@ -0,0 +1,3 @@ +#TYPE Microsoft.SharePoint.Client.Workflow.WorkflowAssociation +"SiteUrl","ListTitle","AllowManual","AssociationData","AutoStartChange","AutoStartCreate","BaseId","Created","Description","Enabled","HistoryListTitle","Id","InstantiationUrl","InternalName","IsDeclarative","ListId","Modified","Name","TaskListTitle","WebId","Context","Tag","Path","ObjectVersion","ServerObjectIsNull","TypedObject" +"https://etr45.sharepoint.com/sites/test1","test","True","false{32613E0A-2A96-4C71-A60E-9B8D1899FA6C}Enter Choice #1Enter Choice #2Enter Choice #3Workflow initiated: True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A workflow has been initiated on the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrueReview taskTrue{FA564E0F-0C70-4AB9-B863-0177E6DDD247}A review task has been created for the following list item.True{FA564E0F-0C70-4AB9-B863-0177E6DDD247}TrueTrue{28CF69C5-FA48-462A-B5CD-27B6F9D2BD5F}UseAT{1DF5E554-EC7E-46A6-901D-D85A3881CB18}TrueTrueTrueTrue","False","True","c6964bff-bf8d-41ac-ad5e-b61ec111731a","3/8/2020 12:19:48","Use this workflow to track items in a list.","True","Workflow History","41a550db-b5df-4fa7-b6d4-3cc1e5bb1a5a",,"test wf","False","91fb8ab4-ecf8-4f4a-becf-adb32f5d3f09","3/8/2020 12:19:48","test wf","Tasks","0da03cb4-066c-45ff-97c9-1d0a756e0c16","Microsoft.SharePoint.Client.ClientContext",,"Microsoft.SharePoint.Client.ObjectPathIdentity",,"False","Microsoft.SharePoint.Client.Workflow.WorkflowAssociation" From b14e73184f25bace0c70a71b6793ca2fc9bb3ccf Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 8 Mar 2020 21:12:51 +0200 Subject: [PATCH 32/48] Create README.md --- .../README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md diff --git a/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md b/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md @@ -0,0 +1 @@ + From c390863d9ee6b2236626be275263f3a8a250ec2e Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sun, 8 Mar 2020 21:13:12 +0200 Subject: [PATCH 33/48] Update README.md --- .../README.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md b/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md index 8b137891..fdc22124 100644 --- a/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md +++ b/Content Types/Content Types Management Setting/Allow content type management for all lists in a site/README.md @@ -1 +1,37 @@ +A short Powershell script to allow management of content types for all lists and libraries in a site. +It is an equivalent of **List**>>**List Settings**>>**Advanced**>>**Content types in Graphic User Interface** ([see screenshot](https://github.com/PowershellScripts/AllGalleryScriptsSamples/blob/develop/Content%20Types/Content%20Types%20Management%20Setting/Allow%20content%20type%20management%20for%20all%20lists%20in%20a%20site/contentTypeManagement.png)) + + +Applies to lists and libraries. + + +*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 the desired setting: $true for the content types management to be allowed or $false to disable it +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$ContentTypesEnabled=$true +``` + +### Please share your thoughts in the Q&A section! + +#### Related scripts
+[Set direction of the reading order for a single list](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/scriptcenter/Disable-or-enable-12cf3795) + +[Disable or enable attachments to list items using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Change-search-setting-for-8e842a48) + +[Change search setting for all lists in a site using CSOM and Powershell](https://gallery.technet.microsoft.com/scriptcenter/Allow-content-type-5bca5157) + +

+Enjoy and please share feedback! From ad90f91036d35217d994d7dcdb08d5932d8bca0c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Tue, 10 Mar 2020 21:03:36 +0200 Subject: [PATCH 34/48] Update README.md --- Content Types/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Content Types/README.md b/Content Types/README.md index 8b137891..1dbc32a1 100644 --- a/Content Types/README.md +++ b/Content Types/README.md @@ -1 +1,7 @@ +* Content Type Management Setting + * Allow content type management for all lists in a site + * Allow content type management for all lists in site collection + * Set content type management setting for a single list +* Create + * From a316609106b3926c2585da7aa56a563d349cc5b4 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Wed, 11 Mar 2020 22:38:31 +0200 Subject: [PATCH 35/48] Update README.md --- Content Types/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Content Types/README.md b/Content Types/README.md index 1dbc32a1..00604848 100644 --- a/Content Types/README.md +++ b/Content Types/README.md @@ -4,4 +4,10 @@ * Allow content type management for all lists in site collection * Set content type management setting for a single list * Create - * + * Add Content Type to Lists with Workflows + * Add Content Type to Task Lists + * Add existing content type directly to SPO list + * Create a content type + * Create and add content type to a content type hub + * Create content type and add directly to SPO list + * Create content type and add it to all lists in one site From 662e842b2b44bdd9b2cc66ce00146f166a0d6be7 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Fri, 13 Mar 2020 22:08:44 +0200 Subject: [PATCH 36/48] Update README.md --- Content Types/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Content Types/README.md b/Content Types/README.md index 00604848..bf776345 100644 --- a/Content Types/README.md +++ b/Content Types/README.md @@ -11,3 +11,7 @@ * Create and add content type to a content type hub * Create content type and add directly to SPO list * Create content type and add it to all lists in one site +* Display Forms + * Find Custom Display Forms Deployed + * Modify the Display Form Template Name + * Unable to view items- modify the DisplayFormUrl back to default From 148d76cc130834c102eaeb9d7068cd490fffafbf Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:01:18 +0200 Subject: [PATCH 37/48] Create description.md --- .../Add a geolocation column/description.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Lists and Libraries Management/Column Management/Add a geolocation column/description.md 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 new file mode 100644 index 00000000..b78bc892 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Add a geolocation column/description.md @@ -0,0 +1,43 @@ +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 b301ef1316d837e403bf47a01c0427f59099f12d Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:02:20 +0200 Subject: [PATCH 38/48] Add files via upload --- .../AddGeolocationField.ps1 | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Lists and Libraries Management/Column Management/Add a geolocation column/AddGeolocationField.ps1 diff --git a/Lists and Libraries Management/Column Management/Add a geolocation column/AddGeolocationField.ps1 b/Lists and Libraries Management/Column Management/Add a geolocation column/AddGeolocationField.ps1 new file mode 100644 index 00000000..f534f390 --- /dev/null +++ b/Lists and Libraries Management/Column Management/Add a geolocation column/AddGeolocationField.ps1 @@ -0,0 +1,70 @@ +function Add-GeoLocationField +{ +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)] + [string]$ListTitle + + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $web=$ctx.Web + $ctx.Load($web) + $ctx.ExecuteQuery() + + $list = $web.Lists.GetByTitle($ListTitle) + $ctx.Load($list) + $ctx.ExecuteQuery() + + $geolocationfield=$list.Fields.AddFieldAsXml("", $true, [Microsoft.SharePoint.Client.AddFieldOptions]::AddToAllContentTypes) + $list.Update() + $ctx.ExecuteQuery() + + <# + $ViewCreationInfo = New-Object Microsoft.SharePoint.Client.ViewCreationInformation + $ViewCreationInfo.Title="MapView" + $ViewCreationInfo.ViewFields=("Title","Location2") + $ViewCreationInfo.ViewTypeKind=[Microsoft.SharePoint.Client.ViewType]::Html + $View = $list.Views.Add($ViewCreationInfo) + $View.JSLink="mapviewtemplate.js" + #$View.DefaultView=$true + $View.Update() + $ctx.ExecuteQuery() + $View.JSLink + + + $ctx.Web.AllProperties["BING_MAPS_KEY"]="AjtUzWJBHlI3Ma_Ke6Qv2fGRXEs0ua5hUQi54ECwfXTiWsitll4AkETZDihjcfeI" + $ctx.Web.Update() + $ctx.ExecuteQuery() + + #> + + + +} + + + + +#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" + + + +Add-GeoLocationField -Username $username -Password $Password -Url $Url -ListTitle $ListTitle \ No newline at end of file From 09eff94722ba36febaa36d606426d6204ee1ea4a Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:03:41 +0200 Subject: [PATCH 39/48] Create desscription.md --- .../desscription.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 OneDrive for Business/Create a report on all file versions in OneDrive for Business/desscription.md diff --git a/OneDrive for Business/Create a report on all file versions in OneDrive for Business/desscription.md b/OneDrive for Business/Create a report on all file versions in OneDrive for Business/desscription.md new file mode 100644 index 00000000..58278007 --- /dev/null +++ b/OneDrive for Business/Create a report on all file versions in OneDrive for Business/desscription.md @@ -0,0 +1,31 @@ +Powershell script that generates a report on available file versions in one OneDrive for Business account. It iterates through folders and subfolders in order to retrieve all items. + + + + + + + +It requires installed SharePoint Online SDK + +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 +#User with sufficient access to read the files +$username="german@test.onmicrosoft.com" +#Url of the site with the files (e.g. OneDrive site) +$Url="https://test-my.sharepoint.com/personal/german_test_onmicrosoft_com" + +#Path for a csv where file versions will be recorded +$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 671f3f75c4f70c53210859e1c0aaf24b2d8ac19c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:04:07 +0200 Subject: [PATCH 40/48] Add files via upload --- .../Capture1511.PNG | Bin 0 -> 36473 bytes .../GetVersionsinOneDrive.ps1 | 102 ++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 OneDrive for Business/Create a report on all file versions in OneDrive for Business/Capture1511.PNG create mode 100644 OneDrive for Business/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 diff --git a/OneDrive for Business/Create a report on all file versions in OneDrive for Business/Capture1511.PNG b/OneDrive for Business/Create a report on all file versions in OneDrive for Business/Capture1511.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e6d6511319366730e19ff67a0daeb76f33c2775d GIT binary patch literal 36473 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 literal 0 HcmV?d00001 diff --git a/OneDrive for Business/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 b/OneDrive for Business/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 new file mode 100644 index 00000000..10140465 --- /dev/null +++ b/OneDrive for Business/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 @@ -0,0 +1,102 @@ +function Get-SPOFolderFiles +{ +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=5)] + [string]$CSVPath, + [Parameter(Mandatory=$true,Position=6)] + [string]$CSVPath2 + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + $ll=$ctx.Web.Lists.GetByTitle("Documents") + $ctx.Load($ll) + $ctx.ExecuteQuery() + + $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery + $spqQuery.ViewXml =""; + $ODBitems=$ll.GetItems($spqQuery) + $ctx.Load($ODBitems) + $ctx.ExecuteQuery() + Write-Host "Found " $ODBitems.Count " folders and files" + + foreach($item in $ODBitems) + { + + Write-Host $item["FileRef"] "... " -NoNewline + $file = $ctx.Web.GetFileByServerRelativeUrl($item["FileRef"]); + $ctx.Load($file) + $ctx.Load($file.Versions) + + try + { + $ctx.ExecuteQuery() + } + catch + { + Write-Host "File not found" -ForegroundColor Red + } + + + if ($file.Versions.Count -eq 0) + { + $obj=New-Object PSObject + $obj | Add-Member NoteProperty ServerRelativeUrl($file.ServerRelativeUrl) + $obj | Add-Member NoteProperty FileLeafRef($item["FileLeafRef"]) + $obj | Add-Member NoteProperty Versions("No Versions Available") + $obj | export-csv -Path $CSVPath2 -Append + Write-Host "No versions available" -ForegroundColor DarkYellow + } + + if($file.Versions.Count -gt 0) + { + Write-Host $file.Versions.Count " version(s) found" -ForegroundColor Green + + foreach ($version in $file.Versions) + { + $user=$version.CreatedBy + $ctx.Load($version) + $ctx.Load($user) + $ctx.ExecuteQuery() + $version | Add-Member NoteProperty CreatedByUser($user.LoginName) + $version | Add-Member NoteProperty FileLeafRef($item["FileLeafRef"]) + $version |export-csv -Path $CSVPath -Append + } + + } + } + } + + + + + +#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 +#User with sufficient access to read the files +$username="german@test.onmicrosoft.com" +#Url of the site with the files (e.g. OneDrive site) +$Url="https://test-my.sharepoint.com/personal/german_test_onmicrosoft_com" + +#Path for a csv where file versions will be recorded +$csvPath="C:\MyFiles\Versions.csv" +#Path for a csv where files with no version will be recorded +$csvPath2="C:\MyFiles\FileThatShowsNoVersionsAvailable4.csv" + + +# Do not enter password in the file. You will be prompted for it during the script execution +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +Get-SPOFolderFiles -Username $username -Url $Url -password $AdminPassword -CSVPath $csvPath -CSVPath2 $csvPath2 \ No newline at end of file From 783e72c53096a034374f939dd020323353779302 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:09:05 +0200 Subject: [PATCH 41/48] added readmes --- .../ReadMe.md | 50 +++++++++ .../ReadMe.md | 47 ++++++++ .../ReadMe.md | 44 ++++++++ .../Add Content Type to Task Lists/ReadMe.md | 49 +++++++++ .../ReadMe.md | 55 ++++++++++ .../Create/Create a content type/ReadMe.md | 45 ++++++++ .../ReadMe.md | 41 +++++++ .../ReadMe.md | 44 ++++++++ .../ReadMe.md | 43 ++++++++ .../Capture1511.PNG | Bin 0 -> 36473 bytes .../GetVersionsinOneDrive.ps1 | 102 ++++++++++++++++++ .../desscription.md | 31 ++++++ 12 files changed, 551 insertions(+) create mode 100644 Content Types/Content Types Management Setting/Allow content type management for all lists in site collection/ReadMe.md create mode 100644 Content Types/Content Types Management Setting/Set content type management setting for a single list/ReadMe.md create mode 100644 Content Types/Create/Add Content Type to Lists with Workflows/ReadMe.md create mode 100644 Content Types/Create/Add Content Type to Task Lists/ReadMe.md create mode 100644 Content Types/Create/Add existing content type directly to SPO list/ReadMe.md create mode 100644 Content Types/Create/Create a content type/ReadMe.md create mode 100644 Content Types/Create/Create and add content type to a content type hub/ReadMe.md create mode 100644 Content Types/Create/Create content type and add directly to SPO list/ReadMe.md create mode 100644 Content Types/Create/Create content type and add it to all lists in one site/ReadMe.md create mode 100644 Versioning/Create a report on all file versions in OneDrive for Business/Capture1511.PNG create mode 100644 Versioning/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 create mode 100644 Versioning/Create a report on all file versions in OneDrive for Business/desscription.md diff --git a/Content Types/Content Types Management Setting/Allow content type management for all lists in site collection/ReadMe.md b/Content Types/Content Types Management Setting/Allow content type management for all lists in site collection/ReadMe.md new file mode 100644 index 00000000..eec2be23 --- /dev/null +++ b/Content Types/Content Types Management Setting/Allow content type management for all lists in site collection/ReadMe.md @@ -0,0 +1,50 @@ +A short Powershell script to allow management of content types for all SharePoint Online lists and libraries across all sites in a site collection + + +It is an equivalent of **List**>>**List Settings**>>**Advanced**>>**Content types in Graphic User Interface** ([see screenshot](https://github.com/PowershellScripts/AllGalleryScriptsSamples/blob/develop/Content%20Types/Content%20Types%20Management%20Setting/Allow%20content%20type%20management%20for%20all%20lists%20in%20site%20collection/contentTypeManagement.png)) + + +Applies to lists and libraries. + + + +*It requires installed* [SharePoint Online SDK](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 setting: $true for the content types management to be allowed or $false to disable it +$Username="trial@trialtrial123.onmicrosoft.com" +$AdminPassword="Pass" +$Url="https://trialtrial123.sharepoint.com/sites/teamsitewithlists" +$ContentTypesEnabled=$true +``` + +### Please share your thoughts in the Q&A section! + +#### Wiki article with detailed code description: + + +[SharePoint Online: Turn on support for multiple content types in a list or library using Powershell](http://social.technet.microsoft.com/wiki/contents/articles/30038.sharepoint-online-turn-on-support-for-multiple-content-types-in-a-list-or-library-using-powershell.aspx) + + + +#### Related scripts +[Set-SPOList properties (module)](https://gallery.technet.microsoft.com/office/Set-SPOList-properties-9d16f2ba) + +[Disable or enable attachments to list items using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Disable-or-enable-12cf3795) + +[Change search setting for all lists in a site using CSOM and Powershell](https://gallery.technet.microsoft.com/scriptcenter/Change-search-setting-for-8e842a48) + +[Allow content type management for all lists in a site using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Allow-content-type-5bca5157) + +[Set content type management setting for SharePoint Online list using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Set-content-type-39ae4bce) + + +

+Enjoy and please share feedback! diff --git a/Content Types/Content Types Management Setting/Set content type management setting for a single list/ReadMe.md b/Content Types/Content Types Management Setting/Set content type management setting for a single list/ReadMe.md new file mode 100644 index 00000000..8ae3f756 --- /dev/null +++ b/Content Types/Content Types Management Setting/Set content type management setting for a single list/ReadMe.md @@ -0,0 +1,47 @@ +Short Powershell script to allow management of content types for a SharePoint Online list or library. It is an equivalent of **List**>>**List Settings**>>**Advanced**>>**Content types in User Interface Applies to lists and libraries**. + +A short Powershell script to allow management of content types for a SharePoint Online list or library. + +It is an equivalent of **List**>>**List Settings**>>**Advanced**>>**Content types in Graphic User Interface** ([see screenshot](https://github.com/PowershellScripts/AllGalleryScriptsSamples/blob/develop/Content%20Types/Content%20Types%20Management%20Setting/Set%20content%20type%20management%20setting%20for%20a%20single%20list/contentTypeManagement.png)) + +Applies to lists and libraries. + +*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="Tasks list" +$ContentTypesEnabled =$false +``` + + +### Please share your thoughts in the Q&A section! + +#### Wiki article with detailed code description: + +[SharePoint Online: Turn on support for multiple content types in a list or library using Powershell](social.technet.microsoft.com/wiki/contents/articles/30038.sharepoint-online-turn-on-support-for-multiple-content-types-in-a-list-or-library-using-powershell.aspx) + +#### 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) + +[Disable or enable attachments to list items using Powershell](https://gallery.technet.microsoft.com/scriptcenter/Disable-or-enable-12cf3795) + +[Change search setting for all lists in a site using CSOM and Powershell](https://gallery.technet.microsoft.com/scriptcenter/Change-search-setting-for-8e842a48) + + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Add Content Type to Lists with Workflows/ReadMe.md b/Content Types/Create/Add Content Type to Lists with Workflows/ReadMe.md new file mode 100644 index 00000000..b97da707 --- /dev/null +++ b/Content Types/Create/Add Content Type to Lists with Workflows/ReadMe.md @@ -0,0 +1,44 @@ +A short script to create a content type, and add it directly to all SharePoint Online lists with workflows within one site. The content type does not appear among site content types. + + + +The script is fully described in an article here: + +http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx + + +### How to use? + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" +``` +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 find the content types
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Title of the List*. + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Add Content Type to Task Lists/ReadMe.md b/Content Types/Create/Add Content Type to Task Lists/ReadMe.md new file mode 100644 index 00000000..23db2c0a --- /dev/null +++ b/Content Types/Create/Add Content Type to Task Lists/ReadMe.md @@ -0,0 +1,49 @@ +A short script to create a content type, and add it directly to all SharePoint Online task lists within one site. The content type does not appear among site content types. + +The script is fully described in an article here: + +http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx + + + + +### How to use? + + + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" +``` +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 find the content types
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Title of the List*. + + + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Add existing content type directly to SPO list/ReadMe.md b/Content Types/Create/Add existing content type directly to SPO list/ReadMe.md new file mode 100644 index 00000000..86ced017 --- /dev/null +++ b/Content Types/Create/Add existing content type directly to SPO list/ReadMe.md @@ -0,0 +1,55 @@ +A short script to add an existing site content type directly to a SharePoint Online list. + + + +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx). + + +### How to use? + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlists" +$ListTitle="tas1207" +$ContentTypeID="0x01200200C44754774BD8D4449F4B7E3FE70A7E0E" +``` +
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 find the content types +
d) Enter the title of the list. +
e) Enter the content type id +
+##### *How to find the content type id?* +* via browser
+Go to **Site**>**Gear Icon**>**Site Settings**>**Content Types**>**Click on the content type**. The url at this point should look like **[this](https://tenant.sharepoint.com/sites/TeamsitewithLists/_layouts/15/ManageContentType.aspx?ctype=0x0100A02B0ABDDEDC5A45AC64F100F30899CF&Source=https%3A%2F%2Ftenant%2Esharepoint%2Ecom%2Fsites%2FTeamsitewithLists%2F%5Flayouts%2F15%2Fmngctype%2Easpx)**. +```diff +https://tenant.sharepoint.com/sites/TeamsitewithLists/_layouts/15/ManageContentType.aspx?ctype= +- 0x0100A02B0ABDDEDC5A45AC64F100F30899CF +&Source=https%3A%2F%2Ftenant%2Esharepoint%2Ecom%2Fsites%2FTeamsitewithLists%2F%5Flayouts%2F15%2Fmngctype%2Easpx +``` +Marked in red is the content type id. + +* via another script
+[Get all properties of all content types in a SharePoint site](https://gallery.technet.microsoft.com/Get-all-properties-of-all-3a9c5c4b) + +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Url of the Site*. + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Create a content type/ReadMe.md b/Content Types/Create/Create a content type/ReadMe.md new file mode 100644 index 00000000..d07b7ff8 --- /dev/null +++ b/Content Types/Create/Create a content type/ReadMe.md @@ -0,0 +1,45 @@ +A short script to create a content type. + +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx). + +### How to use? + + + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" + ``` + +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 find the content types
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Url of the Site*. + + + + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Create and add content type to a content type hub/ReadMe.md b/Content Types/Create/Create and add content type to a content type hub/ReadMe.md new file mode 100644 index 00000000..37df3632 --- /dev/null +++ b/Content Types/Create/Create and add content type to a content type hub/ReadMe.md @@ -0,0 +1,41 @@ +A short script to create a content type and add it to a content type hub. + +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx +). + +### How to use? + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/contenttypehub" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" +``` +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 TENANT in "https://tenant.sharepoint.com/sites/contenttypehub" enter the name of your tenant
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Url of the Site*. + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Create content type and add directly to SPO list/ReadMe.md b/Content Types/Create/Create content type and add directly to SPO list/ReadMe.md new file mode 100644 index 00000000..ca9aca82 --- /dev/null +++ b/Content Types/Create/Create content type and add directly to SPO list/ReadMe.md @@ -0,0 +1,44 @@ +A short script to create a content type, and add it directly to a SharePoint Online list. The content type does not appear among site content types. + + + +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx). + +### How to use? + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" +``` + +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 find the content types
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Url of the Site*. + + +

+Enjoy and please share feedback! diff --git a/Content Types/Create/Create content type and add it to all lists in one site/ReadMe.md b/Content Types/Create/Create content type and add it to all lists in one site/ReadMe.md new file mode 100644 index 00000000..9b387e4a --- /dev/null +++ b/Content Types/Create/Create content type and add it to all lists in one site/ReadMe.md @@ -0,0 +1,43 @@ +A short script to create a content type, and add it directly to all SharePoint Online lists within one site. The content type does not appear among site content types. + + + +The script is fully described in an article [here](http://social.technet.microsoft.com/wiki/contents/articles/31051.sharepoint-online-content-types-in-powershell.aspx). + +### How to use? + +1. Download and install [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038). + +2. Download the *.ps1* file. + +3. Open the file (you can do it also in NotePad) + +4. Insert your data in 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 +$AdminUrl="https://tenant.sharepoint.com/sites/teamsitewithlibraries" +$Description="desc" +$Name="Name of the Content Type2" +$ParentContentTypeID="0x01" +$Group="List Content Types" +``` + +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 find the content types
+d) Fill in the properties of the content type.
+ +5. Run the script in Powershell (any module). + +6. When the script has executed, Powershell will show a message *Content Type Name of the Content Type2 has been added to Title of the List*. + +

+Enjoy and please share feedback! diff --git a/Versioning/Create a report on all file versions in OneDrive for Business/Capture1511.PNG b/Versioning/Create a report on all file versions in OneDrive for Business/Capture1511.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e6d6511319366730e19ff67a0daeb76f33c2775d GIT binary patch literal 36473 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 literal 0 HcmV?d00001 diff --git a/Versioning/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 b/Versioning/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 new file mode 100644 index 00000000..10140465 --- /dev/null +++ b/Versioning/Create a report on all file versions in OneDrive for Business/GetVersionsinOneDrive.ps1 @@ -0,0 +1,102 @@ +function Get-SPOFolderFiles +{ +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=5)] + [string]$CSVPath, + [Parameter(Mandatory=$true,Position=6)] + [string]$CSVPath2 + ) + + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + $ll=$ctx.Web.Lists.GetByTitle("Documents") + $ctx.Load($ll) + $ctx.ExecuteQuery() + + $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery + $spqQuery.ViewXml =""; + $ODBitems=$ll.GetItems($spqQuery) + $ctx.Load($ODBitems) + $ctx.ExecuteQuery() + Write-Host "Found " $ODBitems.Count " folders and files" + + foreach($item in $ODBitems) + { + + Write-Host $item["FileRef"] "... " -NoNewline + $file = $ctx.Web.GetFileByServerRelativeUrl($item["FileRef"]); + $ctx.Load($file) + $ctx.Load($file.Versions) + + try + { + $ctx.ExecuteQuery() + } + catch + { + Write-Host "File not found" -ForegroundColor Red + } + + + if ($file.Versions.Count -eq 0) + { + $obj=New-Object PSObject + $obj | Add-Member NoteProperty ServerRelativeUrl($file.ServerRelativeUrl) + $obj | Add-Member NoteProperty FileLeafRef($item["FileLeafRef"]) + $obj | Add-Member NoteProperty Versions("No Versions Available") + $obj | export-csv -Path $CSVPath2 -Append + Write-Host "No versions available" -ForegroundColor DarkYellow + } + + if($file.Versions.Count -gt 0) + { + Write-Host $file.Versions.Count " version(s) found" -ForegroundColor Green + + foreach ($version in $file.Versions) + { + $user=$version.CreatedBy + $ctx.Load($version) + $ctx.Load($user) + $ctx.ExecuteQuery() + $version | Add-Member NoteProperty CreatedByUser($user.LoginName) + $version | Add-Member NoteProperty FileLeafRef($item["FileLeafRef"]) + $version |export-csv -Path $CSVPath -Append + } + + } + } + } + + + + + +#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 +#User with sufficient access to read the files +$username="german@test.onmicrosoft.com" +#Url of the site with the files (e.g. OneDrive site) +$Url="https://test-my.sharepoint.com/personal/german_test_onmicrosoft_com" + +#Path for a csv where file versions will be recorded +$csvPath="C:\MyFiles\Versions.csv" +#Path for a csv where files with no version will be recorded +$csvPath2="C:\MyFiles\FileThatShowsNoVersionsAvailable4.csv" + + +# Do not enter password in the file. You will be prompted for it during the script execution +$AdminPassword=Read-Host -Prompt "Enter password" -AsSecureString +Get-SPOFolderFiles -Username $username -Url $Url -password $AdminPassword -CSVPath $csvPath -CSVPath2 $csvPath2 \ No newline at end of file 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 new file mode 100644 index 00000000..58278007 --- /dev/null +++ b/Versioning/Create a report on all file versions in OneDrive for Business/desscription.md @@ -0,0 +1,31 @@ +Powershell script that generates a report on available file versions in one OneDrive for Business account. It iterates through folders and subfolders in order to retrieve all items. + + + + + + + +It requires installed SharePoint Online SDK + +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 +#User with sufficient access to read the files +$username="german@test.onmicrosoft.com" +#Url of the site with the files (e.g. OneDrive site) +$Url="https://test-my.sharepoint.com/personal/german_test_onmicrosoft_com" + +#Path for a csv where file versions will be recorded +$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 c1308073d6aea66ccf156309bbfe076934114084 Mon Sep 17 00:00:00 2001 From: LocalGitty <42035526+lgitty@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:10:18 +0200 Subject: [PATCH 42/48] more readmes --- .../ReadMe.md | 29 +++++++++++++++++++ .../Readme.md | 25 ++++++++++++++++ .../ReadMe.md | 28 ++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 Content Types/Display Forms/Find Custom Display Forms Deployed/ReadMe.md create mode 100644 Content Types/Display Forms/Modify the Display Form Template Name/Readme.md create mode 100644 Content Types/Display Forms/Unable to view items- modify the DisplayFormUrl back to default one/ReadMe.md diff --git a/Content Types/Display Forms/Find Custom Display Forms Deployed/ReadMe.md b/Content Types/Display Forms/Find Custom Display Forms Deployed/ReadMe.md new file mode 100644 index 00000000..0affd595 --- /dev/null +++ b/Content Types/Display Forms/Find Custom Display Forms Deployed/ReadMe.md @@ -0,0 +1,29 @@ +The script is part of the explanation on editing the content types available in the article here: + +[SharePoint Online content types in Powershell: Edit.](https://social.technet.microsoft.com/wiki/contents/articles/31444.sharepoint-online-content-types-in-powershell-edit.aspx) + +This example gets the list of all content types in all lists from a single site, which have custom display forms deployed. + + + +The *~list/Item/displayifs.aspx* is the url of the custom form that the list is using for adding new items. (**[screenshot](https://github.com/PowershellScripts/AllGalleryScriptsSamples/blob/develop/Content%20Types/Display%20Forms/Find%20Custom%20Display%20Forms%20Deployed/DisplayFormUrl3.png)**) + + +In order to use the script you need [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) installed. Before running the script modify the following lines to refer to the SDK libraries installed on your computer and the content type 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" +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 +$AdminUrl="https://tenant.sharepoint.com/sites/powie1" +``` + + +

+Enjoy and please share feedback! diff --git a/Content Types/Display Forms/Modify the Display Form Template Name/Readme.md b/Content Types/Display Forms/Modify the Display Form Template Name/Readme.md new file mode 100644 index 00000000..17807251 --- /dev/null +++ b/Content Types/Display Forms/Modify the Display Form Template Name/Readme.md @@ -0,0 +1,25 @@ +The script is part of the explanation on editing the content types available in the article here: + +[SharePoint Online content types in Powershell: Edit.](https://social.technet.microsoft.com/wiki/contents/articles/31444.sharepoint-online-content-types-in-powershell-edit.aspx) + +This example gets all content types in a single list from a single site, and changes their display form names, using: + +```PowerShell +$cc.DisplayFormTemplateName="DocumentLibraryForm" +``` +The script requires [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) 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\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 +$AdminUrl="https://tenant.sharepoint.com/sites/powie1" +$ListTitle="notf--ked" +``` + +

+Enjoy and please share feedback! diff --git a/Content Types/Display Forms/Unable to view items- modify the DisplayFormUrl back to default one/ReadMe.md b/Content Types/Display Forms/Unable to view items- modify the DisplayFormUrl back to default one/ReadMe.md new file mode 100644 index 00000000..5b475523 --- /dev/null +++ b/Content Types/Display Forms/Unable to view items- modify the DisplayFormUrl back to default one/ReadMe.md @@ -0,0 +1,28 @@ +The script is part of the explanation on editing the content types available in the article here: + +[SharePoint Online content types in Powershell: Edit.](https://social.technet.microsoft.com/wiki/contents/articles/31444.sharepoint-online-content-types-in-powershell-edit.aspx) + +This example changes the display form url of all content types called ITEM (so basically all items in a list) in all lists in one site to the default one. + + It allows us also to retract our changes and turn to the default form in case something went wrong with the Custom form and items are no longer viewable. (**[screenshot](https://github.com/PowershellScripts/AllGalleryScriptsSamples/blob/develop/Content%20Types/Display%20Forms/Unable%20to%20view%20items-%20modify%20the%20DisplayFormUrl%20back%20to%20default%20one/DisplayFormUrl4.png)**) + + +In order to use the script you need [SharePoint Online SDK](https://www.microsoft.com/en-us/download/details.aspx?id=42038) installed. Before running the script modify the following lines to refer to the SDK libraries installed on your computer and the content type 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" +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 +$AdminUrl="https://tenant.sharepoint.com/sites/powie1" +``` + + + +

+Please share your questions and comments! From 3103a60e269fe76048e8555b1b84e99742696881 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:20:56 +0200 Subject: [PATCH 43/48] Create description.md --- .../description.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Lists and Libraries Management/Get the number of files and folders in library/description.md 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 new file mode 100644 index 00000000..38846a59 --- /dev/null +++ b/Lists and Libraries Management/Get the number of files and folders in library/description.md @@ -0,0 +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 d7d0f9cc68537c4ad8c7902712d6e83225f29b75 Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:21:25 +0200 Subject: [PATCH 44/48] Add files via upload --- .../Capture30.PNG | Bin 0 -> 1785 bytes .../TotalNoOfItems.ps1 | 67 ++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 Lists and Libraries Management/Get the number of files and folders in library/Capture30.PNG create mode 100644 Lists and Libraries Management/Get the number of files and folders in library/TotalNoOfItems.ps1 diff --git a/Lists and Libraries Management/Get the number of files and folders in library/Capture30.PNG b/Lists and Libraries Management/Get the number of files and folders in library/Capture30.PNG new file mode 100644 index 0000000000000000000000000000000000000000..8c0fcb93e0607915cb6c0d35cca9804ccbcefb0c GIT binary patch literal 1785 zcmbW2X*k=77RLW{A*Gdxbv%@&QTy6a6eUFc)0RO??MoPjsDO59c`_-t(M;cd)lTe@^}!008IF zAj(OgGy&H|&kCx1FRn!(LeWmPRzTCF0#{&82O;f{06@tVJMudt@Q?`5EgAqW^#6s> zaCmJ10G!Q1qmcJvy*G=HQ7jGd^hE}{I2hZB%Au={sKk-QDmBPjZ*DuwL??U4=K+_0 z7xrr}j=X-tYzUEuy3!>IC&!a|_$TH#J63=n^>8;t#y*4$Xhi+Q8lkd)N0U`Zf17kCSx|pJr572WQDt$ZOzc? z4{zp$2Xu#Z%00poALE4y8#bQ3*A^k4Zz2u{AEbet_*e5wTNHVLR~V{ zgv*XGkAkigtsQVWM-28>zW7_#Nz4v+WB+5ju^lvxHI9w5S>1l@BmwCk$P6lbL*lrO zvwu~ldop=WNi9m7Kc5ta>JYU?HbVnn;0GeqOi_sVIb=u`;}#-Nxj)EU)~y<=zr40I z)IB#fiCpSFmhLz_QfxZpp5ZjuSZzLAtu%2``qDKRM6-u|*Xm=j*gEiJtf=F8vm|6s zdKc7Nyn~?FtA^Y04g^h#)`(BBC14=4NLJCrC>hgw<*fFuN!a%^r5FNpz{Rw9=i=Mn zwC?+}yh2?OePQn3^P=B)U8OjEcnNR=X0t|{;1p6JX(F@gGBINqCQ-ic{`yN~Lm8%B zXyLaG>enaE_=MDgz_6N>GSWxu_U18+j^9Otf81WGeWpU(!-IE?wez*m=Hg7qf=OThp5?_>BYS;O^e zmQsaJZ-!6yflKWUHO_=Bd-rQO1E()yI|xO0eMc11GLmcgV0A&Axce;E7MInQ?-5?# zmLZ#UN(Wr5}Nz|r_Ap{nkCr715`%*6b|DmFP$N1pT52NS%9 z{SZweeynAy#1uW(HoLfojOpr?Cpajz-R7l%cjn=c()Zj;v=cMh=LyG;J7yYZgkOy>Z(I39bk@Fdb%JE~OXwgN7W$P&D^a zXq4NPIRc8gZ^`#48l6jdyoG?g+?wd4{^&_yEln&KsK(1=i0>wYAH6Z~LQR)j!~pW^ znC71XF4^A0DBeP_4<9Jyg|BZlQZ5m3dMIHa@9(E2p%~;09w+Ojv-dJ~#VC-T!h*!z z#(XQ!xPAZWv2UXV5wF$LL8e`%xUvd8f!g}QIx_$Vr`yrvO0ya7aHj~BY0OUyV`DqQ z$U2=WO)I(I>(xyKopMrR=}8WIS8Y-(B0`-OG)Gdm_}BWu9tbOPLwmpyUwK1bhWg~b z=E|u4b06(xcE!pF!I3cBw)QzK9khbAtdv_1+Yl9o{$2f7Y($tZmczKYFwNfY{MC*} zUR_8h-8x+&i0y(Y-t>z9*IYiir{QSkHF?xcVbF*9&yk!}-KUkeJrK)RO)ZRbgbl6` zr4-JIn-;C5f%U%l$`Pc~JO3Qaj%1%MTieD!FR-DQTguRFo8!|q5ApKHo=3s0Zd19k zXsjN;*Ky|MOmAT$_7pr=W##Ac?Q&UWC!^q@G7$)0=V{y%X~2F<22m|2stK~fE1qfu z3xV>U!X+c43F6r_x#Q=BFjZl%09UPg-D*dZkj?e&$2!nZ;7yA zNhnbL4X`I_sqb|85(TZf0p=v;@6zasA7{fTpxPgOfkQ1g5jnUJ04l=(g})u^dM?)f+eN@61cAxv^`6}|XwcuR=Xd8P}la+7EpQNHny8r+H literal 0 HcmV?d00001 diff --git a/Lists and Libraries Management/Get the number of files and folders in library/TotalNoOfItems.ps1 b/Lists and Libraries Management/Get the number of files and folders in library/TotalNoOfItems.ps1 new file mode 100644 index 00000000..38add1ae --- /dev/null +++ b/Lists and Libraries Management/Get the number of files and folders in library/TotalNoOfItems.ps1 @@ -0,0 +1,67 @@ +function Get-SPOListItemCount +{ +param ( + [Parameter(Mandatory=$true,Position=1)] + [string]$Username, + [Parameter(Mandatory=$true,Position=2)] + [string]$Url, + [Parameter(Mandatory=$true,Position=3)] + [string]$AdminPassword, + [Parameter(Mandatory=$true,Position=4)] + [string]$ListTitle + ) + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $password) + $ctx.Load($ctx.Web) + $ctx.ExecuteQuery() + + $list=$ctx.Web.Lists.GetByTitle($ListTitle) + $ctx.Load($list) + $ctx.ExecuteQuery() + + $spqQuery = New-Object Microsoft.SharePoint.Client.CamlQuery + $spqQuery.ViewXml =""; + $listItems=$list.GetItems($spqQuery) + $ctx.Load($listItems) + $ctx.ExecuteQuery() + +<# 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 + + #> + + return $list.ItemCount + + +} + +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 + + Get-SPOListItemCount -Username $Username -AdminPassword $Password -Url $Url -ListTitle $ListTitle From 8d5ff3953668add776fe0bccc8713e40c4ce971c Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:23:43 +0200 Subject: [PATCH 45/48] Create Set the major version limit for all the lists and libraries (data loss involved) --- ...e lists and libraries (data loss involved) | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) new file mode 100644 index 00000000..c95d7eea --- /dev/null +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) @@ -0,0 +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 5dd619f39a9bd86cb87fcf6a91efd8cc80820cdb Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:26:43 +0200 Subject: [PATCH 46/48] Delete Set the major version limit for all the lists and libraries (data loss involved) --- ...e lists and libraries (data loss involved) | 70 ------------------- 1 file changed, 70 deletions(-) delete mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) deleted file mode 100644 index c95d7eea..00000000 --- a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved) +++ /dev/null @@ -1,70 +0,0 @@ -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 cd76693dad60518630707e26afb25cd4dd0a9eaa Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:27:01 +0200 Subject: [PATCH 47/48] Create description.md --- .../description.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md 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 new file mode 100644 index 00000000..c95d7eea --- /dev/null +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/description.md @@ -0,0 +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 21171acbeb651f8c6915a79292948f36e428c71e Mon Sep 17 00:00:00 2001 From: PowershellScripts <42035526+PowershellScripts@users.noreply.github.com> Date: Sat, 14 Mar 2020 18:27:46 +0200 Subject: [PATCH 48/48] Add files via upload --- .../Capture21.PNG | Bin 0 -> 30218 bytes .../Set-VersionLimit.ps1 | 113 ++++++++++++++++++ .../versioningPS2 (1).png | Bin 0 -> 60409 bytes 3 files changed, 113 insertions(+) create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Capture21.PNG create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Set-VersionLimit.ps1 create mode 100644 Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/versioningPS2 (1).png diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Capture21.PNG b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Capture21.PNG new file mode 100644 index 0000000000000000000000000000000000000000..39acc9da874a117ba2febcaf252692c068a7f810 GIT binary patch literal 30218 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 N*JYHXvm^~4{SRm#aGC%B literal 0 HcmV?d00001 diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Set-VersionLimit.ps1 b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Set-VersionLimit.ps1 new file mode 100644 index 00000000..60bab7c4 --- /dev/null +++ b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/Set-VersionLimit.ps1 @@ -0,0 +1,113 @@ +function Set-VersionLimit +{ +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)] + [int]$VersionLimit, + [Parameter(Mandatory=$false,Position=5)] + [bool]$Versioning + ) + + $ctx=New-Object Microsoft.SharePoint.Client.ClientContext($Url) + $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 $ctx.Url -BackgroundColor White -ForegroundColor DarkGreen + + foreach($list in $ctx.Web.Lists) + { + $csvvalue= New-Object PSObject + $csvvalue | Add-Member -MemberType NoteProperty -Name "Previous Versioning Status" -Value $list.EnableVersioning + +# $list.EnableVersioning = $Versioning + $list.MajorVersionLimit = $VersionLimit + $list.Update() + $listurl=$null + + if($ctx.Url.EndsWith("/")) + { + $listurl= $ctx.Url+$list.Title + } + else + { + $listurl=$ctx.Url+"/"+$list.Title + } + + + $csvvalue | Add-Member -MemberType NoteProperty -Name "Url" -Value ($listurl) + $csvvalue | Add-Member -MemberType NoteProperty -Name "Title" -Value $list.Title + $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 $_.Exception.Message -ForegroundColor Red + } + finally + { + $ErrorActionPreference="Continue" + } + + + } + + if($ctx.Web.Webs.Count -gt 0) + { + for($i=0; $i -lt $ctx.Web.Webs.Count ; $i++) + { + Set-VersionLimit -Username $Username -Url $ctx.Web.Webs[$i].Url -Password $Password -VersionLimit $VersionLimit -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 + +#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 diff --git a/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/versioningPS2 (1).png b/Lists and Libraries Management/Set the major version limit for all the lists and libraries (data loss involved)/versioningPS2 (1).png new file mode 100644 index 0000000000000000000000000000000000000000..7ba64cebe32f2ca94a83872cea07eefd7a61035e GIT binary patch literal 60409 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⪅1t5F*p$<58^7KppxqIRB9*lemF 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 literal 0 HcmV?d00001