Category Archives: SharePoint Online

Goodbye OneDrive Admin center.

The Microsoft OneDrive Admin has now been removed from (https://admin.microsoft.com – All Admins Centers) as of 14th January 2022. All OneDrive administration can now be completed via the SharePoint Admin Center, which I believe is a very sensible move by Microsoft and just makes sense.

So you if need to complete any configuration visit your SharePoint Admin Center as shown below

OneDrive: Consolidation of OneDrive-SharePoint admin centers

All OneDrive admin capabilities, including controls for sharing, access, sync, and storage, will be available in the SharePoint admin center, consolidating admin tools in one place.

  • Feature ID: 65911
  • Added to roadmap: 7/7/2020
  • Last modified: 1/14/2022
  • Product(s): OneDrive
  • Cloud instance(s): Germany, DoD, GCC, GCC High, Worldwide (Standard Multi-Tenant)
  • Platform(s): Web
  • Release phase(s): General Availability, Targeted Release (Entire Organization)

Regards
The Author

Creating Planner tasks from Sharepoint Lists

I have been recently helping a local Paintball site modernize its approach to IT through the use of Microsoft 365. In this journey, I have created a Microsoft Form which is used to collect booking information from its customers and store it into SharePoint Online via a List.

One of the asks from the site was to create a view or process which can be used to follow up with customers who haven’t paid their deposit. This is where Planner comes into play.

Using a Power Automate Flow which has already been created I did the following;

Create a “Condition” based on the Follow Date which is created in SharePoint List and if is not equal to Null

Create a task as followed;

Specify the Group ID of the Planner

Specify the Plan ID for the Planner

Provide a title that is easy to view Customer Name and Date of Booking.

Add the Follow Up Date to the Due Date Time field.

Once a new item was created via the Form this flow would create the task in Planner.

This simple configuration has helped transform how they contact customers.

Regards
The Author – Blogabout.Cloud

Connect-SPOService : Current site is not a tenant administration Site

So I have recently been playing with SharePoint Online via PowerShell and run into the following error when my brain wasnt in gear

To connect to the SharePoint Online site using PowerShell, ypu need to provide the Sharepoint Online Administration Center site URL. The SharePoint online admin center site URL will be like below:

https://<your tenant id>-admin.sharepoint.com/

Example:

$cred = Get-Credential
Connect-SPOService -Credential $cred -Url 'https://skypeme-admin.sharepoint.com/'

Once you provide the correct URL, you will be able to successful connect to SharePoint Online.

Regards
The Author – Blogabout.Cloud

Publishing your Microsoft 365 Service Messages to a SharePoint List.

I have been recently working on a solution for a customer whereby they required Microsoft 365 Service Messages to be logged as an incident using a Service Desk tool and publish to Microsoft Teams Channel.

Microsoft Teams – This was the simple bit as a nice person in the community built a PowerShell script available on GitHub.

Now for the publishing the information to SharePoint Online, this has caused quite a few headaches from banging my head on my desk but it now working. The reason for publishing to SharePoint List is so that it can be used / reference as a data source to pulling the information into ServiceNow.

You can bit with Power Automate however the information required and provided is lacking so the route I am going to demostrate provide a lot more details. Just like the Microsoft Teams post

I have been recently working on a solution for a customer whereby they required Microsoft 365 Service Messages to be logged as an incident using a Service Desk tool and publish to Microsoft Teams Channel.

Microsoft Teams – This was the simple bit as a nice person in the community built a PowerShell script available on GitHub.

https://github.com/einast/PS_M365_scripts/blob/master/AzureAutomation/AzO365ServiceHealth.ps1

Now for publishing the information to SharePoint Online, this has caused quite a few headaches from banging my head on my desk but it now works. The reason for publishing to SharePoint List is so that it can be used / reference as a data source to pulling the information into ServiceNow.

You can bit with Power Automate however the information required and provided is lacking so the route I am going to demonstrate provide a lot more details. Just like the Microsoft Teams post

Create the SharePoint Site

The first thing to do is create a SharePoint Site that can be used as the location for the data. This can be simply done by connecting to SharePoint via PowerShell and running the following command.

You will need the following PowerShell Module
https://www.powershellgallery.com/packages/PnP.PowerShell

$URL =  "blogabout.sharepoint.com"
$Admin = "thewatcher@blogabout.cloud"

$cred = (Get-Credential)

Connect-AzureAD -Credential $cred

Connect-PnPOnline -UseWebLogin -Url $url
New-PnPTenantSite -Url $URL -Title "Health Status" -Owner "$Admin" -TimeZone "2"     

We now need to gather some information which will be used later in this blog. Using the same PowerShell console run the following cmdlet

Get-PnPList

Make a note of the Id for Health Status as we will need this later on.

We now need to configure the SharePoint List with required columns for receiving the data.

The column used are;

– Title
– Status
– Severity
– Service
– Classification
– Uri
– Message
– Reference

Modifying your Azure Automation Account for SharePoint Lists

In this post, I will make an assumption that you have already implemented pushing messages to Microsoft Teams. If you havent, please visit this article.

First of you all, we need to add PnP.PowerShell module to this Azure Automation account. Go to Modules under Shared Resources and Browse Gallery.

Search for PnP.PowerShell and click on the module

Click Import

The import may take a few minutes to complete and once complete we can go on to the next step.

Select Credentials from Shared Resources

Important Notice

Some of the next steps I have already completed in my environment.

Click “Add a credential” and provide;

-Name – This is important for the PowerShell script to call the credentials
– Username
– Password

You can also provide a description if required.

It is time to now modify the Runbook with the required PowerShell cmdlets for publishing to SharePoint Lists.

Select your run book to edit the script

Under User-Defined Variables I have added the following;

Please note: I am not using Automated Variables in this script but they could be used if you add the variable and use Get-AutomatedVariable -Name

$SpListName = "Health-Status"
$ListName = "Add the Health Status ID you gathered earlier"
$SpSiteUrl = "https://blogabout.sharepoint.com/sites/$SpListName"

https://pnp.github.io/powershell/articles/authentication.html

$myCred = Get-AutomationPSCredential -Name 'MyCredential'
$userName = $myCred.UserName
$securePassword = $myCred.Password
$password = $myCred.GetNetworkCredential().Password

$SpCreds = New-Object System.Management.Automation.PSCredential ($userName,$securePassword)

As you can see from above I am using Get-AutomationPSCredential -Name MyCredential to call stored credentials.

Under the following PowerShell cmdlet in the script

# If any new posts, add to Teams
Invoke-RestMethod -uri $uri -Method Post -body $Payload -ContentType 'application/json; charset=utf-8'

I have added;

# Add news post to Sharepoint Site
Connect-PnPOnline $SpSiteUrl -Credentials $SpCreds
$list =  Get-PnPList -identity $ListName

Add-PnPListItem -List $list -Values @{"Title"=$inc.Title;"Reference"=$inc.Id;"Status"=$inc.Status;"Severity"=$inc.Severity;
                "Service"=$inc.WorkloadDisplayName;"Classification"=$inc.Classification;"Uri"=$inc.PostIncidentDocumentUrl;"Message"=$Message}

This will now allow you to publish the data to SharePoint as shown below,

I am using Power Automate to trigger the Runbook for more detail visit the below post.

Hopefully this post will help you publish the data to SharePoint.

Regards
The Author – Blogabout.Cloud

Connect-PnPOnline: The user or administrator has not consented to use the application with ID name ‘PnP Management Shell’

While working with a customer and testing the configuration in my own tenant. I ran in the following error;

Connect-PnPOnline : AADSTS65001: The user or administrator has not consented to use the application with ID 

'31359c7f-bd7e-475c-86db-fdb8c937548e' named 'PnP Management Shell'. Send an interactive authorization request for this 

user and resource.

Trace ID: b2cf58ed-9797-4f25-863e-a946d8fc2e00

Correlation ID: 1fa13b31-284c-4f43-972a-a2e840dc77e6

Timestamp: 2021-03-08 09:56:01Z

At line:240 char:1

+ Connect-PnPOnline $SpSiteUrl -Credentials $SpCreds

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Connect-PnPOnline], MsalUiRequiredException

    + FullyQualifiedErrorId : 

Microsoft.Identity.Client.MsalUiRequiredException,PnP.PowerShell.Commands.Base.ConnectOnline

 

Add-PnPListItem : There is currently no connection yet. Use Connect-PnPOnline to connect.

At line:242 char:1

+ Add-PnPListItem -List $SpListName -Values @{"Title"=$Inc.Title;"Statu ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Add-PnPListItem], InvalidOperationException

    + FullyQualifiedErrorId : System.InvalidOperationException,PnP.PowerShell.Commands.Lists.AddListItem

 
In order to resolve this issue, I had to run the following PowerShell cmdlets.
$cred = (Get-Credential)

Connect-AzureAD -Credential $cred

Register-PnPManagementShellAccess -SiteUrl https://skypme.sharepoint.com/sites

Scroll down and press Accept.

This resolved my error and I was able to continue with my testing.

Regards
The Author – Blogabout.Cloud

PowerShell – How to format your PowerShell output into a table using Format-Table

When working with PowerShell and using a (get-command | fl or format-list) you will receive a whole list of information which sometimes can be difficult to digest as shown below. In most cases normally you are only after one or two peices of key information

Get-SPOSite | Format-List

Using Format-List or LT you can specify the required information into something a bit more readable.

For example, I am currently working Get-SPOSite (SharePoint Online Sites) and I would like to know if any of the sites have sharing capabilities and site defined sharing capabilities.

# Command
Get-SPOSite | Select-Object -Property URL,SharingCapability,SiteDefinedSharingCapability | ft
Get-SPOSite | Select-Object -Property URL,SharingCapability,SiteDefinedSharingCapability | ft

As you can see from the above image the output for the required fields is more readable to my needs. You can use this approach for many different scenarios and maybe within a technical script you are writing for a deployment or an action.


Regards

The Author – Blogabout.Cloud