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*0BaNCj;!f`7)=n2k*=ekEIUHH^KfnK!bVcRsuxLMGK<_Q-SXx^@
zGo`?Yl}x)LGa$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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