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.
February 20
Podcast 447 - Bob's Smarter than Us
February 19
Installing Web Apps on Chromium Edge

When Windows 10 came out I found out I had a pretty healthy dislike for the Edge browser that came with it. My dislike turned into public mocking and shaming. I was a Chrome man, like my father before me, and Edge had no chance of supplanting it as my browser of choice. No one liked Edge, probably not even Edge’s mother, and we all got a good chuckle at its expense.

And then Edge didn’t suck anymore.

In December of 2018 Microsoft announced that it was going to move to the Chromium engine for Edge. I remembered being pretty “Meh” about the announcement. It was confirmation of what I had always said, Edge was a stinker, and I was already using Chrome which was built on top of the Chromium engine, obviously, so what on Earth could Edge possibly offer me? I was about to find out.

Last year at Ignite Marc was telling me how he was using the Chromium Edge (henceforth affectionately referred to as ChrEdge) and he liked it. I asked him what was so great about it, besides it not being the crappy Edge. He slow played it and said “nothing much,” but that he enjoyed it. I kept my eye on it though. Considering how much work I do with Microsoft web technologies I had to. Plus I really like making fun of stuff, and if the first Edge was any indication, this Edge was going to find itself in my crosshairs too.

Then it grew on me.

The first thing I really liked about ChrEdge was not only did it have the profiles that I used constantly in Chrome, it allowed me to set up the Sync for those profiles with Microsoft accounts. That made my ears perk up. Most of my work is with Microsoft accounts and this made things a lot easier. I started using ChrEdge more and more each day.

And then it did the undoable, it made me hate Microsoft Teams less!

If there’s one new Microsoft technology I would complain about more than legacy Edge, it was Teams. I don’t want to get into all of my grievances here (it’s a long, long list, and this is a family friendly site) but I will highlight two of them. The Windows Desktop client is excruciatingly slow to switch tenants or identities, and in some cases it will disconnect you from a meeting if you do. Not cool, Teams, not cool. The other thing I hated was if you wanted to do two things at once it was difficult to navigate the interface to do that. For instance two chats, or heaven forbid, a chat and a meeting. And like I mentioned before, if those things were in two different tenants you had to wait for the context switching and your call would get hung up if you were on one. Teams wouldn’t come right out and kick you in the shin when you did it, but I’m sure that’s on the Teams roadmap somewhere.

One day, after a full complement of coffee, I’m sure, I got the bright idea to make the Teams experience suck just a little bit less by opening up the web client. I pointed ChrEdge at https://teams.microsoft.com/ and was able to experience the bliss that is being in a video call with Person A while chatting with Person B. I wasn’t saying anything about about Person A to Person B, I swear.

While I was poking around in ChrEdge I saw this new menu option I had never seen before, Apps. What is this? Chrome doesn’t have this! I clicked it and saw the option, “Install this site as an app!”

image 

I’m the curious sort, I clicked it. Some whirring happened and the next thing I know there’s a new icon in my Taskbar.

image 

The outlined icon, on the left, is the app that ChrEdge installed. The icon next to it is the regular Windows Teams Desktop client. You can see this web app looks like the real app, not like ChrEdge in the Taskbar. The icon is cool and all, but how does the app itself compare? Here’s a side by side comparison.

image 

The ChrEdge web app for Teams is pretty good. In Red I highlighted a couple of the differences between the two. In the lower left the web app has a link to download the full app. Obviously the full app doesn’t have that. Smile The web app also has an extra title bar across the top, which honestly is usually the only way I can tell them apart during the day when I’m flittering about between them. That title bar has a three dot drop down menu that offers some browser specific goodies like printing, zooming, casting, and uinstalling. Nothing obvious is missing from the web app. In Green I highlighted a couple of pleasant similarities. In the upper right of the web app you can see that we can switch tenants just like the full app. This is handy if you are on a call in the full app and want to reply to an IM in another tenant. I also use this to maximize the video in a video call on one screen then have the chat window for that same video call in the web app on another screen. Finally, I was happy to see that the web client can also do audio and video calls just like the full app.  Color me impressed Teams and ChrEdge, color me impressed. <slow clap>

Fresh off of this victorious life hack I started looking for that little “Apps” menu option in other Microsoft web apps. I found it in Outlook, OneNote, and OneDrive, among others. It popped up enough that I knew this wasn’t just a Teams or Office thing. Turns out it’s a web standard called Progressive Web Apps, PWAs. Many companies are taking part in this, not just Microsoft. Microsoft does, though, offer some guidance on making PWAs for Windows.

Since PWAs aren’t simply a Microsoft concoction you can find them all over the Internet. Wikipedia, Disney+, Amazon, and Slack among others have the option of installing a web based PWA.

image 

You may be asking yourself why you’d want a PWA version of something that has a legit app. There are a few reasons. For one, you may be on a platform that doesn’t support the regular app, like a Chromebook or a machine running Windows S mode, like my Surface Go. Or, you just might not want to sully your machine with a big bulky download. Regardless of the reason, they’re worth a look. If you’re on Windows you can find the installed PWAs listed in the “Apps & Features” or at edge://apps in ChrEdge.

image 

I indulged myself in a bit of a PWA sidetrack there. Thanks for sticking around. Long story short, the PWA version of Microsoft Teams in ChrEdge, was a game changer. It made me more productive and lowered my blood pressure by a considerable amount.

tk

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

February 19
Podcast 446 - Cascade of Events

Todd and Shane are finally back. With the holidays and some conferences, they've had a hard time being able to keep up as well as being able to publish the previous podcasts. They start with catching up on some language fun that they've noticed. They talk about a few technical topics with the Teams changes for private channels and wrapping your head around that, PowerShell for the Graph, and saving files from Power Apps to SharePoint. They also talk about some cord cutting changes. Wrapping up with kicking off the annual TK Birthday Charity Drive.

Recorded 12/18/2019

Audio File

Video File

Podcast 446 - Cascade of Events (Time 0_19_35;22)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 46:49

Links:

05:50 Lexicon Valley
05:51 Because Internet
14:37 SPFest in Chicago
17:48 SysKit Insights
24:17 YouTube TV
36:50 Graph PowerShell
40:35 Save files from Power Apps directly to a SharePoint Document Library
42:42 TK Charity

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

February 18
Podcast 445 - Meat and Potatoes
February 14
Podcast 444 - Meh, at Best

Shane and Todd talk about PowerApps, cord cutting, and Azure this week.

Recorded 10/30/2019

Audio File

Video File

Podcast 444 - Meh, at Best (Time 0_17_18;12)

YouTube (Subscribe)

Subscribe in iTunes

Running Time: 47:14

Links:

Curated PowerApps content
Sony kills Playstation Vue
Hallmark Movies Now
Office 365 User Offboarding Done Right

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

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

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.