On Tech Community I came across a question about how to  check for broken links on your SharePoint sites in SharePoint Online.

So I’m first starting with the connection to a site collection in Office 365 using PnP PowerShell:

[code lang=text]
$cred = get-Credential -Message “Pass” -UserName “username@tenant.onmicrosoft.com”
Connect-PnPOnline https:/ /tenant.sharepoint.com -Credentials $cred
[/code]

Office 365 - Check your site for broken links in SharePoint Online - Part 1 Microsoft Office 365, Microsoft SharePoint Online powershell

Then to check if a url exists I’m running:

invoke-webrequest $url -DisableKeepAlive -UseBasicParsing -Method head

this returns the following for a valid request:

StatusCode : 200
StatusDescription : OK
Content :
RawContent : HTTP/1.1 200 OK
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
x-ms-request-id: afdbecd9-02c3-419c-8677-94ef...
Forms :
Headers : {[Pragma, no-cache], [Strict-Transport-Security, max-age=31536000; includeSubDomains], [X-Content-Type-Options,
nosniff], [X-Frame-Options, DENY]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 0

So now I just have to go through all sites and all the lists and libraries in my site to collect all the urls from the content. First looping through all the sites.

$web = Get-PnPWeb
Get-WebForBrokenLinks -Web $web
ForEach ($subweb in $subwebs)
{
   Get-WebForBrokenLinks -Web $subweb
}

I will go through the content in part 2 of this series where I will implement the Get-WebForBrokenLinks function that will use the invoke-webrequest.

 

In the meanwhile there is also a uservoice  that needs up voting: https://sharepoint.uservoice.com/forums/330318-sharepoint-administration/suggestions/10208799-broken-link-checker

Part 2 of this series can be found here:

https://sharepains.com/2017/10/09/office-365-check-your-site-for-broken-links-in-sharepoint-online-part-1-2/

 

Avatar for Pieter Veenstra

By Pieter Veenstra

Business Applications Microsoft MVP working as the Head of Power Platform at Vantage 365. You can contact me using contact@sharepains.com

11 thoughts on “Office 365 – Check your site for broken links in SharePoint Online – Part 1”
  1. Hi

    PS doesn’t seem to recognise Get-WebForBrokenLinks – how do I overcome this?? I have module SharePointPnPPowerShellOnline v 2.28.18 installed

    Can anyone help please.

    Thanks

  2. It seems to me that as long as the site collection part of the URL is valid, the Invoke-WebRequest returns 200. If the rest of the URL is actually not valid, it still returns 200, giving you a false positive.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from SharePains by Microsoft MVP Pieter Veenstra

Subscribe now to keep reading and get access to the full archive.

Continue reading