Summary SharePoint Server Subscription Edition now supports client certificate authentication when interacting with SMTP servers to send e-mail. While this may be an uncommon scenario, this feature is vital for highly secure environments where password-based only security is not allowed. To use this feature, you must install a SharePoint Certificate, using the new SSL Certificate […]
Summary This blogs details how to completely configure a SharePoint Server Subscription Edition Farm to use SharePoint Apps from PowerShell. When necessary, I will show the equivalent GUI steps. Note: Many of these steps apply to all version of SharePoint Server except for the certificate creation steps. Steps 1. Configure DNS with a zone and […]
Summary This is my 2nd version of SharePoint Population Script with a few minor changes. Removed the Hosts file and host header creation to simplify the process. The new script will only create a single DB. A new Web Application using the server host name over a different port is now allowed. A Modern Team […]
Summary This blog details how to install and configure BGINFO to start on multiple servers. What is BGINFO? BGINFO stands for “Background Information”. This program will allow users to display computer details on the desktop wallpaper. This is very handy when working with multiple virtual servers that all have the same default background. Example: Get […]
Problem Description After installing the May 2021 CU you will not be able to open or add new SharePoint Store apps, because the iframe from the appinv.aspx page is now blocked by default. This is an example of the error: Browser Error: Chrome-error://chromewebdata/:1 Refused to display ‘https://spaad.contoso.local/’ in a frame because it set multiple ‘X-Frame-Options’ […]
Problem Summary Your company decided to use Exchange Online for e-mail, but leave the SharePoint Servers on-prem. After doing this you may have noticed that Exchange Online will not be able to deliver e-mail to the Drop folder, were SharePoint processes email for delivery. At this point the incoming e-mail feature in SharePoint is totally […]
Problem Description You may find yourself in the process of deleting a Microsoft 365 Tenant because you’re no longer using it or would like to make the domain name available for reuse. However, when attempting to “Delete all enterprise applications“, you are not able to proceed with error, “You can’t delete this application because it’s […]
Summary After configuring SharePoint with Incoming email and the SharePoint Directory Management Service” to create Distribution Lists in Active Directory, you are unable to create new groups with the following error. Sorry, something went wrong The following error has occurred while attempting to contact the Directory Management Service: The request failed with HTTP status 401: […]
Summary A customer asked if there was a method to identity documents stored in SharePoint online that were encrypted with passwords. Since nothing like this existed, it was created using PowerShell. I’m sharing this because the logic in the script may be useful for others. The Code
#Description: Iterates through each item in a specified list to find documents stored with passwords.
#Author: Mike Lee
#Disclaimer: This PowerShell script is provided "as-is" with no warranties expressed or implied. Use it at your own risk.
#Dependencies: SharePoint Online Client Components SDK: https://www.microsoft.com/en-us/download/details.aspx?id=42038
#Tested with SharePoint Online Client Components SDK version 16.0.6906.1200
#Parameters: $SiteURL, $ListName, $username
#Add references to SharePoint client assemblies
#Your SPO Tenant
$SiteURL = "https://tenant.sharepoint.com"
#The name of your document library
$Listname = "Documents"
#The admin account that has access to the library
$username = "firstname.lastname@example.org"
$password = Read-Host "Enter Password" -AsSecureString
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $password)
$List = $ctx.Web.Lists.GetByTitle($ListName)
#CAML Query to recursively look at all items in the library with a 5000 item row limit.
$camlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
$camlQuery.ViewXml = @"
<OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy>
$items = $list.GetItems($camlQuery)
#function to read documents
function find-docpasswords($ctx, $FileUrl)
#Collect Documents Data
$FileURL = $Item.FieldValues['FileRef']
#Read the files from SharePoint online document library.
$fileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($ctx,$FileURL)
$stream = New-Object System.IO.MemoryStream
#Read the first row of bytes as text
$Start = [System.Text.Encoding]::Default.GetString($stream.ToArray()[0000..2000])
# Record files that are password protected
if($Start -match "E.n.c.r.y.p.t.e.d.P.a.c.k.a.g.e")
Write-Host "$SiteURL$FileURL -- Is Password Protected" -ForegroundColor Yellow
Write-Host "$SiteURL$FileURL -- Not Password Protected" -ForegroundColor Green
#Run the function to loop through all items in the library and find documents stored with passwords
foreach($item in $items)
$fileUrl = $item.FieldValues["fileref"]
find-docpasswords $ctx $fileurl
Takeaways This scripts loops though a specified […]
What is SharePoint Perfwiz and why do we need a replacement? SharePoint Perfwiz was a tool used by Product Support to create performance log counters on SharePoint servers to troubleshoot performance issues. This tool has been deprecated but there is still a need to collect performance data for those pesky performance issues. The Perfwiz tool […]