Skip Ribbon Commands
Skip to main content
 

 Follow Me

 
 
 
 
 

 SharePoint Blog List

 
  
  
  
  
  
  
  
  
  
  
  
  
Todd Klindt's home page > Todd Klindt's Office 365 Admin Blog
What's going on with TK.
January 16
I’m speaking at the SharePoint Conference 2020! Yippee!

The cat is out of the bag and I’m glad I can talk about it. This picture is worth at least 9 or 10 words:

SPC_2020_SpeakerBanners_KLINDT 

The mighty SharePoint Conference is May 19-21, 2020 at the MGM Grand in Las Vegas.

I’m doing two sessions, PowerShell, a Microsoft 365 Admin's Best Friend and Automating and Standardizing Site Creation with Site Designs and Site Scripts. Both will be amazing, I’m sure.

If you haven’t signed up for SPC yet, first, shame on you! Second, there are still spots. You can sign up here. To really put a bow on that SPC registration, you can use discount code “Sympraxis”. For that, you get $50 off of the already reasonably priced admission, and the eternal love and adoration of the entire Sympraxis gang. Except maybe Mike, he’s a bit prickly. We’re working on him. Marc and Julie are also presenting sessions, so as long they don’t conflict with mine.

Derek and Emily will also be there, so say Hi to them if you see them.

See you there,

tk

ShortURL: https://www.toddklindt.com/SPC20Yippee

January 08
How to Connect to Multiple Office 365 Accounts in Edge, without Losing Your Damned Mind

In two previous blog posts I cover how to easily connect to Office 365 with multiple accounts in PowerShell, and in Chrome. Those techniques still work great and I use them daily.

Microsoft will soon be releasing a new version of the much maligned Edge Browser. The new version will be based on the Chromium engine, and along with that it inherits some great functionality. One of those features is Profiles. This means all of the techniques you use in Chrome to manage your Office 365 users works exactly the same. If you are already running the Chromium Edge (lovingly referred to as “ChrEdge”) beta, you can go to t​his page, edge://settings/profiles, to manage the Profiles, or click the Profile icon in the upper right corner of the browser. 

An added benefit of Microsoft’s added touch to the Chromium Profile engine is that you can sync settings with an MSA (Microsoft Account) account like your old school @hotmail.com account. You can also sign in with an Azure AD account, which we all have courtesy of Office 365. I’ll blog more about that later as it’s a feature I’m really excited about.

tk

ShortURL: https://www.toddklindt.com/ChrEdgeProfiles

November 18
Finding Missing Properties in PnP PowerShell

I’ve recently been working with a customer migrating some content from one SharePoint Online Site Collection to another. They have a lot of content, so automating the migrations with PowerShell was really the only we’d be able to get all of their content migrated before we died of old age. Part of what they wanted migrated over was the custom views they had in their Document Libraries. A couple of extra columns here, a grouping there, nothing too complicated. I fired up PowerShell (really VS Code) and started noodling.

Whenever I’m trying something new in PowerShell I have a standard process. I do a Get-Command to see if there’s a cmdlet that does what I need. In this case there were four cmdlets that piqued my interest, Add-PnPView, Get-PnPView, Remove-PnPView, and Set-PnPView. The process seemed super easy, do a Get-PnPView on the source View, gobble up all the details, then spit them back into Add-PnPView on the other site collection. Easy Peasy. Until it isn’t.

Here’s what the view looked like, roughly.

image

I didn’t do much to it. I added a couple of columns, Created By and File Size and set the view to group by Created By. Pretty standard stuff. Here’s what Get-PnPView told me about said view:

image

I can see the columns I added in the ViewFields property, but there’s no sign of the grouping anywhere. Knowing what I know about SharePoint I know that information is stored in a Query, but the ViewQuery property is conspicuously empty. What gives? The PnP, in an effort to be efficient, doesn’t download all of the property values for the objects we get. It downloads the schema, and then a subset of the properties that it thinks you’re most likely to use. What’s a fella to do if the thing you need is not in the PnP’s favorite list of properties? You break out one of the PnP’s overlooked gems, Get-PnPProperty.

image

Here’s the code for it all:

Connect-PnPOnline -Url https://toddklindt.sharepoint.com/sites/8884aced -Credentials Me
Get-PnPView -List Documents
Get-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef
$view = Get-PnPView -List Documents -Identity 3c4126aa-d2fe-4b57-9a70-e03ebb9c76ef
$view
$view | select *
$view.ViewQuery
Get-PnPProperty -ClientObject $view -Property ViewQuery
$view.ViewQuery
$view
$view | select *

Not only does Get-PnPProperty get the value of the Property, but it also populates the property in the variable. If you’re getting a collection of objects and need to pull one property for each of them it looks like this:

Get-PnPView –List Documents
$viewlist| ForEach-Object { Get-PnPProperty -ClientObject $_ -Property ViewQuery, ListViewXml }

That hydrates the ViewQuery and ListViewXml property for all of the objects in $viewlist.

image

It snuck some other properties in too, but I don’t mind.

In this case I was using the View object, but this method is necessary for any PnP object. In the past I’ve had to use it with PnPFile and PnPLists. Sometimes the PnP gives you an error message telling you you need to get the property value, sometimes it’s just empty and you have to know. Either way, it’s worth trying to get the property’s value with Get-PnPProperty.

tk

ShortURL: https://www.toddklindt.com/PoshGetPNPProperty

October 31
Reversing Arrays easily in PowerShell

I was recently dealt a fun task from a customer. They had a site in SharePoint that had a few links in the Quick Launch (left nav, quick nav, whatever) and they wanted to copy the Quick Launch from another site to it. They wanted to keep the existing links below the new ones. Here are some pictures to help it all make sense:

I want to copy these links:

image

and put them on top of these links on another site.

image

Of course I immediately thought of your friend and mine, the PnP PowerShell for this task. Sure enough, there are cmdlets for that, Get-PnPNavigationNode and Add-PnPNavigationNode. Just what the doctor ordered.

Add-PnPNavigationNode is pretty basic and I had to work a bit to get exactly what the customer wanted. When you add a Navigtation node with Add-PnPNavigationNode it puts it at the end of the list, which makes sense. You can also throw the switch parameter, –First, to put it at the top. In most situations that probably is fine, but mine was tricky. I didn’t want to put the copied nav nodes at the end, I wanted the existing ones to stay there. I also couldn’t just add them all as –First because then they would end up at the top, but in backwards order. When I get the old nav nodes with Get-PnPNavigationNode it returns them in their correct order, so as I walked through them with Foreach the first one would be added on top, but then the second one, also with the –First switch, would end up on top, and so on. Enter [array]::Reverse.

The Array class in PowerShell has quite a few tricks up its sleeve in the form of operations, and Reverse is one of them. If you want to see the rest, go to this page, or type [array]:: in a PowerShell host and tab through the list. It’s quite impressive. 

Here’s what my code looked like:

$oldsiteurl = “https://contoso.sharepoint.com/sites/8884aced
$newsiteurl = “https://contoso.sharepoint.com/sites/PublicTest


$oldsite = Connect-PnPOnline -Url $oldsiteurl -Credentials Compliance -ReturnConnection
$newsite = Connect-PnPOnline -Url $newsiteurl -Credentials Compliance –ReturnConnection


$oldnavlinks = Get-PnPNavigationNode -Location QuickLaunch -Connection $oldsite

[array]::Reverse($oldnavlinks) # <-- The magic goes here

foreach ($link in $oldnavlinks) {
Add-PnPNavigationNode -Location QuickLaunch -Title $link.Title -Url $link.Url -First -Connection $newsite -External
}

There’s a lot of foundation there, but you can see where the Array reversal fits in. Here’s how it looked when I ran it:

image

And here’s what it looked like after I ran it:

image

There’s a lot more tweaking I can do, like make sure “Home” is still on top, stuff like that, but finding Reverse was an important step in the beginning.

tk

ShortURL: https://www.toddklindt.com/PoshReverseArray

October 28
Podcast 443 - Read the History Books

Many important topics are discussed in this week's episode. Shane is excited about the new Meet Now button in Teams and his new PowerApps for SharePoint class. Todd is equally excited about the new version of SnagIt that is out. That and more.

Recorded 10/23/2019

Audio File

Video File

Podcast 443 - Read the History Books (Time 0_18_03;06)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 40:14

Links:

PowerApps for SharePoint People
SnagIt 2020 is here
Office 365 User Offboarding Done Right

ShortURL: https://www.toddklindt.com/Podcast443

October 25
Podcast 442 - Masking Tape on a Stick

Todd and Shane are back after a "break" filled with work. They kick off the technical talk with the announcement of the SharePoint Migration Tool updates. Then they mention some cool fun things with PowerPoint presenter, classes they're working on, and articles that they wrote. Then they talk about some fun updates to the Tesla and how much fun playing with the features can be. They wrap up with a little more technology talk about the Surface event and the new releases announced.

Recorded 10/02/2019

Audio File

Video File

Podcast 442 - Masking Tape on a Stick (Time 0_18_56;04)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 44:01

Links:

07:57 SharePoint Migration adds public preview of 2010
39:29 Surface Laptop 3
39:30 Surface Pro
15:24 Everything you need to know about Office 365 September 2019
16:04 PowerPoint Presenter Coach

ShortURL: https://www.toddklindt.com/Podcast442

October 23
Podcast 441 - That's Great Feedback!

Todd airs some grievances, Shane talks about his new iPhone and the maze that is PowerApps licensing. All in this week's podcast.

Recorded 9/25/2019

Audio File

Video File

Podcast 441 - That's Great Feedback! (Time 0_35_15;16)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 39:09

ShortURL: https://www.toddklindt.com/Podcast441

October 23
Podcast 440 - Special Dance that We Do

Quick catch up today with Todd and Shane as they have a lot of pressing engagements. They chat a bit about security cameras and some cord cutting updates and the jump in to a lot of SharePoint news on web parts, modern sites, site swaps and some page publishing enhancements. A lot of content in a short time.

Recorded 9/4/2019

Audio File

Video File

Podcast 440 - Special Dance that We Do (Time 0_06_50;04)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 23:04

Links:

03:14 Blink XT2 cameras
15:46 New SharePoint Web Parts
18:34 SharePoint Page Publishing got some enhancements
19:03 Using Invoke-SPOSiteSwap to Swap in a New Root Site in Office 365
19:10 Using Invoke-SPOSiteSwap to Swap in a New Root Site in Office 365 – Follow Up

ShortURL: https://www.toddklindt.com/Podcast440

October 21
Podcast 439 - Handsome Faces and Witty Repertoire

Todd gives valuable Caribbean vacation advise and demystifies supper for Shane in this week's podcast. After that they cover using VS Code with PowerShell and Azure DevOps, password managers, Ring Cameras, PowerApps, and Shane's disappearing IP address.

Recorded 8/21/2019

Audio File

Video File

Podcast 439 - Handsome Faces and Witty Repertoire (Time 0_21_57;16)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 47:33

Links:

42:27 PowerApps Hide Button based on User
43:05 PowerApps Email Attachments

ShortURL: https://www.toddklindt.com/Podcast439

October 18
Podcast 438 - No Argument. Shut Up. Boom!

Todd and Shane are both around this week to talk about some fun technology. They start with a nice SysKit care package and compare notes on how to make sure that they get everything level this time. Then they start with the news about Skype for Business retiring and how Teams has impacted collaboration. They do talk a bit about SharePoint and Office 365 including some PowerApps and Flow licensing changes. They also talk about some PowerShell and dates and how confusing that can be. Wrapping up with talking about the upcoming conferences that they will be attending.

Recorded 7/31/2019

Audio File

Video File

Podcast 438 - No Argument. Shut Up. Boom! (Time 0_27_49;15)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 46:00

Links:

04:02 Skype for Business Online to Be Retired in 2021
09:37 13 Million Daily User in Teams
17:38 How many document libraries shall I have in a SharePoint Site?
22:11 10 things you should do with your office365 demo or dev tenant
25:46 Wrangling Dates and Times with PowerShell
26:00 Video PowerShell Date and Time
33:31 PowerApps and Flow Licensing Update
41:01 Why does it take 4-6 weeks to unsubscribe
SharePoint Roadmap
PowerApps Hide Button based on User

ShortURL: https://www.toddklindt.com/Podcast438

1 - 10Next
 

 Subscribe to my Netcast

 

You can watch Shane and I's Cloudy Podcast live every Wednesday Morning at 10:00 am Central US time at http://www.toddklindt.com/Netcast

You can subscribe to the Podcast in the following ways:

MP3 Audio

Windows WMV video

YouTube Channel

 

 SPDocKit

 
 

 Todd's Upcoming Events

 
  
  
There are no items to show in this view of the "Events" list.