<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>PowerShell | Vlad Talks Tech</title><description>Do you want to learn all about PowerShell? Whether it&apos;s small tips and tricks, PowerShell for Office 365, this is the page where all PowerShell content is!</description><link>https://vladtalkstech.com/</link><language>en-us</language><item><title>Managing SharePoint Online Storage – Everything You NEED to Know | Theory + Demo</title><link>https://vladtalkstech.com/microsoft-365/managing-sharepoint-online-storage-everything-you-need-to-know-theory-demo/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=40725</guid><description>Learn effective strategies for managing SharePoint Online storage, including licensing details, storage calculation methods and strategies.</description><pubDate>Wed, 30 Aug 2023 13:31:00 GMT</pubDate><content:encoded>&lt;p&gt;Managing SharePoint Online storage is no small task! Don’t worry. I’m here to help!&lt;/p&gt;
&lt;p&gt;This is a clip from my full Configuring and Managing SharePoint Online and OneDrive for Business course available on Pluralsight that goes in-depth into managing the full SharePoint Online and OneDrive for Business services.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://spvlad.com/SPOandOD4BAdminCourse&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Full Course&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;video-summary&quot;&gt;Video Summary&lt;/h2&gt;
&lt;p&gt;Here are the key points from the video:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloud Storage Benefits&lt;/strong&gt;: One of the main advantages of using cloud services like SharePoint and OneDrive for Business is that you don’t have to manage storage hardware, just the licensing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SharePoint Storage Calculation&lt;/strong&gt;: SharePoint Online storage is pooled and depends on the number of licensed users. Each organization starts with 1 TB plus an additional 10 GB per licensed user.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Managing SharePoint Storage&lt;/strong&gt;: You can manage SharePoint storage either automatically, where each site can use up to 25 TB, or manually, where you set specific limits for each site.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring Storage&lt;/strong&gt;: Storage usage can be monitored through the SharePoint Online admin center or using PowerShell commands. You can also set notifications for site owners when storage limits are nearing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PowerShell for Reports&lt;/strong&gt;: PowerShell can be used to create detailed storage reports, showing storage usage and quotas for all SharePoint sites, helping to keep track of storage consumption effectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information, read the transcript blog below, or watch the video above!&lt;/p&gt;
&lt;h2 id=&quot;video-transcript&quot;&gt;Video Transcript&lt;/h2&gt;
&lt;p&gt;Let’s start by covering the basics of storage for SharePoint and OneDrive for Business. One of the benefits of the cloud is not having to manage storage hardware, especially with software as a service products. There’s nothing to manage except licensing. When it comes to storage, SharePoint and OneDrive for Business have different ways of licensing storage. At a high level, in SharePoint Online, the included storage depends on the number of licensed users in your tenant. For OneDrive for Business, most enterprises have unlimited individual cloud storage, though there are some limitations.&lt;/p&gt;
&lt;p&gt;Starting with SharePoint, the total storage for the organization depends on the number of licensed users for SharePoint in your tenant, known as pooled storage. The formula is one terabyte to start with, plus an extra 10 gigabytes for each licensed user. For example, if your organization has 200 licensed users, you would get one terabyte plus 200 times 10 gigabytes, totalling around three terabytes. You can check this in the SharePoint Online admin center on the active sites page.&lt;/p&gt;
&lt;p&gt;There are some limitations, such as field worker licenses (Microsoft 365 F1 and F3 or Office 365 F3) not granting the 10 gigabytes per license increase. To manage storage in SharePoint Online, you can choose between automatic and manual strategies. The automatic option sets the storage limit for all sites to 25 terabytes, even if your tenant doesn’t have that much available storage. It’s up to you to monitor sites to ensure one site doesn’t use all the storage. You can monitor storage using the admin center or PowerShell.&lt;/p&gt;
&lt;p&gt;If you choose the manual option, you can set specific limits for each site and configure notifications for site owners when they reach a certain percentage of their storage limit. This can be done from the active sites page in the admin center or using PowerShell with the set-SPOsite cmdlet. PowerShell can also be used to create reports, such as listing all SharePoint sites with their storage usage and quotas, sorted by storage usage.&lt;/p&gt;
&lt;p&gt;Finally, let’s move on to OneDrive for Business storage.&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><category>SharePoint</category><author>Vlad Catrinescu</author></item><item><title>SharePoint Online site template IDs for PowerShell (2026)</title><link>https://vladtalkstech.com/microsoft-365/sharepoint-online-site-template-id-list-for-powershell/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=33190</guid><description>Complete list of all SharePoint Online site template IDs for PowerShell provisioning and reporting - updated for 2026</description><pubDate>Fri, 27 Dec 2019 21:35:27 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;Last updated: April 2026&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you want to automate certain parts of your SharePoint Online provisioning process, or simply need a one-time creation of many sites, you probably want to automate everything with PowerShell! But in order to create the new sites with the intended template, you need to know the right template ID that needs to be passed through PowerShell. So this blog post is a list of all of the different SharePoint Online Site Template IDs you will need for either creating a large number of sites, or maybe just creating reports of your SharePoint Online environment!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; You can always retrieve the latest list of available templates directly from your own tenant by running &lt;code&gt;Get-SPOWebTemplate&lt;/code&gt; in the SharePoint Online Management Shell, or &lt;code&gt;Get-PnPWebTemplates&lt;/code&gt; in PnP PowerShell. This is a good way to double-check which templates are currently available to you.&lt;/p&gt;
&lt;h2 id=&quot;modern-sharepoint-sites&quot;&gt;Modern SharePoint Sites&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; font-family: sans-serif; font-size: 14px;&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 20%; text-align: left;&quot;&gt;Template ID&lt;/th&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 30%; text-align: left;&quot;&gt;Title&lt;/th&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 50%; text-align: left;&quot;&gt;Description / Additional Info&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;STS#3&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Team site (no Microsoft 365 group)&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;A site with no connection to a Microsoft 365 Group.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;SITEPAGEPUBLISHING#0&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Communication site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Publish dynamic, beautiful content to people in your organization to keep them informed and engaged on topics, events, or projects.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;GROUP#0&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Microsoft 365 Group associated Team Site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;&lt;strong&gt;For Reporting Only&lt;/strong&gt; – You cannot create sites with this template.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;POINTPUBLISHINGPERSONAL#0&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Delve Blog&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;&lt;strong&gt;For Reporting Only&lt;/strong&gt; – &lt;a href=&quot;/microsoft-365/delve-blogs-retired-another-one-bites-the-dust/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Delve and Delve Blogs have been retired&lt;/a&gt; (Delve was fully retired in December 2024). You may still see these in your tenant reports for historical sites.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;SPSPERS#10&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;OneDrive for Business personal Site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;&lt;strong&gt;For Reporting Only&lt;/strong&gt; – Use the &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/module/sharepoint-online/request-spopersonalsite?view=sharepoint-ps&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Request-SPOPersonalSite&lt;/a&gt; cmdlet to pre-provision a OneDrive for Business site.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;RedirectSite#0&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Redirect Site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Placeholder template for the old URL when you rename the Site URL. This is &lt;strong&gt;for reporting only&lt;/strong&gt; and those sites are only created by Microsoft programmatically.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;TEAMCHANNEL#0&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Teams Private Channel Site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Lightweight site collection provisioned for each Teams Private Channel. This is &lt;strong&gt;for reporting only&lt;/strong&gt;, and not for manual provisioning through SharePoint Online.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;TEAMCHANNEL#1&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Teams Shared Channel Site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Lightweight site collection provisioned for each Teams Shared Channel. This is &lt;strong&gt;for reporting only&lt;/strong&gt;, and not for manual provisioning through SharePoint Online. The shared channel site inherits the sensitivity label of the parent team.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;As you can see, while there are 9 different “modern” templates, only two of them (STS#3 and SITEPAGEPUBLISHING#0) can really be used for site creation. The other seven are for reporting purposes only. To use those templates, you can use the &lt;a href=&quot;https://learn.microsoft.com/en-us/powershell/module/sharepoint-online/new-sposite?view=sharepoint-ps&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;New-SPOSite&lt;/a&gt;) PowerShell cmdlet as in the example below:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-SPOSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;TemplateTest - 01&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;contoso.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Test123 &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Template &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;STS#3&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Owner vlad@contoso.com &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;StorageQuota &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;1024&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;modern-sharepoint-sites--pnp-powershell&quot;&gt;Modern SharePoint Sites – PnP PowerShell&lt;/h2&gt;
&lt;p&gt;If you prefer to use &lt;a href=&quot;https://pnp.github.io/powershell/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;PnP PowerShell&lt;/a&gt; to automate things, this is the list of sites you can use!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; The old &lt;code&gt;SharePointPnPPowerShellOnline&lt;/code&gt; module has been retired and archived. The replacement is &lt;code&gt;PnP.PowerShell&lt;/code&gt;, which is cross-platform (Windows, Mac, Linux) and requires PowerShell 7.4 or newer. You also need to register your own Microsoft Entra ID application for authentication. See the &lt;a href=&quot;https://pnp.github.io/powershell/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;PnP PowerShell documentation&lt;/a&gt; for setup instructions.&lt;/p&gt;
&lt;p&gt;To install the current module:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Install-Module&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; PnP.PowerShell&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; font-family: sans-serif; font-size: 14px;&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 20%; text-align: left;&quot;&gt;Site Type&lt;/th&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 30%; text-align: left;&quot;&gt;Title&lt;/th&gt;&lt;th style=&quot;border: 1px solid #888; padding: 6px 10px; width: 50%; text-align: left;&quot;&gt;Description / Additional Info&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;CommunicationSite&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Communication site&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Publish dynamic, beautiful content to people in your organization to keep them informed and engaged on topics, events, or projects.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;TeamSite&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Microsoft 365 Group (including a Team Site)&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Creates a Microsoft 365 Group together with its team site!&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;TeamSiteWithoutMicrosoft365Group&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Team site (no Microsoft 365 Group)&lt;/td&gt;&lt;td style=&quot;border: 1px solid #888; padding: 6px 10px;&quot;&gt;Creates a modern team site without a connected Microsoft 365 Group (equivalent to STS#3).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;To create a site using those templates, first connect to your tenant and then use the &lt;a href=&quot;https://pnp.github.io/powershell/cmdlets/New-PnPSite.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;New-PnPSite&lt;/a&gt; PowerShell cmdlet as in the examples below:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Connect to SharePoint Online (requires your registered Entra ID App)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnPOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;tenant.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ClientId &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;your-app-client-id&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Interactive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Create a Communication Site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-PnPSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Type CommunicationSite &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title Contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;tenant.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;contoso&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Create a Team Site with Microsoft 365 Group&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-PnPSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Type TeamSite &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;Team Contoso&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Alias contoso&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Create a Team Site without a Microsoft 365 Group&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-PnPSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Type TeamSiteWithoutMicrosoft365Group &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title Contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;tenant.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;contoso&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using the New-PnPSite PowerShell cmdlet, you can also specify which type of Communication Site you want out of the three default ones by providing the name in the -SiteDesign parameter as in the example below.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-PnPSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Type CommunicationSite &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title Contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;tenant.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;SiteDesign Showcase&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, if you want to use PnP to create any of the templates in the Modern SharePoint Sites section (ex: STS#3) you can use the &lt;a href=&quot;https://pnp.github.io/powershell/cmdlets/New-PnPTenantSite.html&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;New-PnPTenantSite&lt;/a&gt; PowerShell cmdlet as in the example below:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;New-PnPTenantSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Title Contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;tenant.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;contoso &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Owner user@example.org &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;TimeZone &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Template STS&lt;/span&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;#3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;how-to-retrieve-template-ids-from-your-tenant&quot;&gt;How to retrieve template IDs from your tenant&lt;/h2&gt;
&lt;p&gt;If you want to get the full list of available templates directly from your own tenant, you can run the following commands. This is useful to verify which templates are available or to check if Microsoft has added any new ones.&lt;/p&gt;
&lt;p&gt;Using the SharePoint Online Management Shell:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Connect to SharePoint Online Admin Center&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-SPOService&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;https://contoso-admin.sharepoint.com&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Get all available site templates&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Get-SPOWebTemplate&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Title&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Description &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Name&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using PnP PowerShell:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Connect using PnP PowerShell&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnPOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;https://contoso.sharepoint.com&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ClientId &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;your-app-client-id&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Interactive&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;# Get web templates available in the site&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Get-PnPWebTemplates&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Select-Object&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Name&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Title &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Sort-Object&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Name&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;a-note-on-custom-site-templates-site-designs&quot;&gt;A note on custom site templates (site designs)&lt;/h2&gt;
&lt;p&gt;Beyond the base template IDs listed above, SharePoint Online also supports custom site templates (previously called site designs). These allow you to define a set of actions (like applying a theme, creating lists, or setting navigation) that run automatically when a new site is created using one of the base templates. If you are provisioning sites at scale, custom site templates are a great way to standardize your environment. You can learn more about them in the &lt;a href=&quot;https://learn.microsoft.com/en-us/sharepoint/dev/declarative-customization/site-design-overview&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;Microsoft documentation on site templates and site scripts&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;classic-sharepoint-sites&quot;&gt;Classic SharePoint Sites&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important update for 2026:&lt;/strong&gt; Microsoft is actively retiring classic SharePoint components in SharePoint Online. SharePoint Add-Ins and Azure ACS authentication will stop working on April 2, 2026. Creation of new classic publishing sites has been blocked since September 2025, and classic SharePoint Alerts will be fully retired by July 2026. If you still have classic sites in your environment, it is strongly recommended to start planning your migration to the modern experience.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 20%;&quot;&gt; &lt;col style=&quot;width: 30%;&quot;&gt; &lt;/colgroup&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 40%;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;**Template ID**&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;**Title**&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;**Description**&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;STS#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Classic Team Site&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A place to work together with a group of people.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;APPCATALOG#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;App Catalog Site&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for sharing apps for SharePoint and Office&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;BDR#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Document Center&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site to centrally manage documents in your enterprise&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;BICenterSite#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Business Intelligence Center&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for presenting Business Intelligence content in SharePoint.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 96px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;BLANKINTERNETCONTAINER#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Publishing Portal&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A starter site hierarchy for an Internet-facing site or a large intranet portal. This site can be customized easily with distinctive branding. It includes a home page, a sample press releases subsite, a Search Center, and a login page. Typically, this site has many more readers than contributors, and it is used to publish Web pages with approval workflows. **Note:** Creation of new classic publishing sites has been blocked since September 2025.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 32px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;BLOG#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Blog (retired)&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Classic blog sites have been retired. The ability to create new classic blog sites through the user interface has been turned off. Use Communication sites and news posts instead.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 96px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;COMMUNITY#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Community Site&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A place where community members discuss topics of common interest. Members can browse and discover relevant content by exploring categories, sorting discussions by popularity or by viewing only posts that have a best reply. Members gain reputation points by participating in the community, such as starting discussions and replying to them, liking posts and specifying best replies.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;COMMUNITYPORTAL#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Community Portal&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for discovering communities.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 16px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;DEV#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Developer Site&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for developers to build, test and publish apps for Office&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 64px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;ENTERWIKI#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Enterprise Wiki&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for publishing knowledge that you capture and want to share across the enterprise. It provides an easy content editing experience in a single location for co-authoring content, discussions, and project management.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 80px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;OFFILE#1&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Records Center&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;This template creates a site designed for records management. Records managers can configure the routing table to direct incoming files to specific locations. The site also lets you manage whether records can be deleted or modified after they are added to the repository.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 80px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;PRODUCTCATALOG#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Product Catalog&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for managing product catalog data which can be published to an internet-facing site through search. The product catalog can be configured to support product variants and multilingual product properties. The site includes admin pages for managing faceted navigation for products.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 48px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;PROJECTSITE#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Project Site&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for managing and collaborating on a project. This site template brings all status, communication, and artifacts relevant to the project into one place.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 96px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;SRCHCEN#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Enterprise Search Center&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site focused on delivering an enterprise-wide search experience. Includes a welcome page with a search box that connects users to four search results page experiences: one for general searches, one for people searches, one for conversation searches, and one for video searches. You can add and customize new results pages to focus on other types of search queries.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 64px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;SRCHCENTERLITE#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Basic Search Center&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site focused on delivering a basic search experience. Includes a welcome page with a search box that connects users to a search results page, and an advanced search page. This Search Center will not appear in navigation.&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height: 48px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;visprus#0&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;Visio Process Repository&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;A site for viewing, sharing, and storing Visio process diagrams. It includes a versioned document library and templates for Basic Flowcharts, Cross-functional Flowcharts, and BPMN diagrams.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;While knowing what the classic SharePoint templates are is useful for reporting purposes, I strongly recommend only creating modern SharePoint sites from now on. Do not add any classic SharePoint sites to your environment, as it would add extra content to migrate to modern in the future. With Microsoft actively retiring classic components throughout 2025 and 2026, creating new classic sites is no longer a viable long-term option.&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><category>SharePoint</category><author>Vlad Catrinescu</author></item><item><title>Find a user’s OneDrive for Business site URL with PowerShell</title><link>https://vladtalkstech.com/microsoft-365/find-a-users-onedrive-for-business-site-url-with-powershell/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=32052</guid><description>In this blog post, we will cover how to find a user’s OneDrive for Business site URL with PowerShell by leveraging the PnP PowerShell cmdlets</description><pubDate>Thu, 04 Apr 2019 15:00:50 GMT</pubDate><content:encoded>&lt;p&gt;While working on an offboarding script, one of the requirements was to send an e-mail to the manager with the OneDrive for Business URL of the user that was going to get disabled. There is quite some information on the internet on how to get this with CSOM, but not a lot in how to get it with PowerShell for IT Pros like me … we prefer PowerShell cmdlets to code! While this is not available in the default SharePoint Online Module ,we can use the &lt;a href=&quot;https://github.com/SharePoint/PnP-PowerShell&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;PnP PowerShell cmdlets&lt;/a&gt; to do it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2019/03/031919_0628_FindausersO1.png&quot; alt=&quot;Office 365 logo with the PowerShell and SharePoint icons&quot; width=&quot;321&quot; height=&quot;139&quot;&gt;&lt;/p&gt;
&lt;p&gt;The first thing you must do is to get your credential and use the Connect-PnPOnline cmdlet to connect to your SharePoint Online Admin Center!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-Credential&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnPOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;tenant&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;admin.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credentials $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can then run the Get-PnPUserProfileProperty cmdlet to get the information about the user’s profile and select only the PersonalUrl which is the URL of that user’s OneDrive for Business!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$username &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;#x3C;UserName&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $OneDriveUrl &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-PnPUserProfileProperty&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Account&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$username &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; select PersonalUrl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2019/03/031919_0628_FindausersO2.png&quot; alt=&quot;Find a user’s OneDrive for Business site URL with PowerShell&quot; srcset=&quot;/wp-content/uploads/2019/03/031919_0628_FindausersO2.png.w480.webp 480w, /wp-content/uploads/2019/03/031919_0628_FindausersO2.png 786w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;786&quot; height=&quot;270&quot;&gt;&lt;/p&gt;
&lt;p&gt;That’s it! Once you know the right cmdlets to use, it’s that simple!&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>OneDrive</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Change External Sharing Settings Across a Hub Site with PowerShell</title><link>https://vladtalkstech.com/powershell/change-external-sharing-settings-across-a-hub-site-with-powershell/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=32064</guid><description>Want to apply bulk changes to External Sharing Settings Across a Hub Site? Check out this PowerShell script that does exactly that!</description><pubDate>Tue, 26 Mar 2019 15:00:55 GMT</pubDate><content:encoded>&lt;p&gt;One of the big Information Architecture changes with modern SharePoint is the flat architecture, which means that now, instead of your Intranet being one Site Collection with multiple subsites, it will now be multiple Site Collections. I’ve seen multiple example architectures where an Intranet can easily become over 15 Site Collections! That means, each Site Collection has its own settings, including external access! While a new SharePoint Admin Center is shipping, you cannot bulk-change External Sharing settings.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2019/03/032219_2206_ChangeExter1.png&quot; alt=&quot;Active sites list in the SharePoint admin center showing four sites associated with the Work @ Contoso hub site&quot; width=&quot;424&quot; height=&quot;187&quot;&gt;&lt;/p&gt;
&lt;p&gt;So I have built a quick PowerShell script that you can simply provide the URL of a Hub Site and the level of external sharing you want to enable, and it will do the magic for you! The script seen below requires two parameters, and it has some validations in to make sure you supply the right type of values.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;HubSiteUrl&lt;/strong&gt; : The URL of a Hubsite&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ExternalSharing&lt;/strong&gt; : one of the following options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Disabled&lt;/strong&gt;&lt;/em&gt; – don’t allow sharing outside your organization&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;ExistingExternalUserSharingOnly&lt;/strong&gt;&lt;/em&gt; – Allow sharing only with the external users that already exist in your organization’s directory&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;ExternalUserSharingOnly&lt;/strong&gt;&lt;/em&gt; – allow external users who accept sharing invitations and sign in as authenticated users&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;ExternalUserAndGuestSharing&lt;/strong&gt;&lt;/em&gt; – allow sharing with all external users, and by using anonymous access links.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you examine the script, you will realize that I run the Get-SPOSite twice , that is because when you run Get-SPOSite without specifying a URL , it doesn’t return the HubSiteId , so that’s why we have to do it!&lt;/p&gt;
&lt;p&gt;Download the following script and save it as HubExternal.ps1.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;( &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Parameter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;Mandatory&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]$HubSiteUrl&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Parameter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;Mandatory&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)][&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;ValidateSet&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Disabled&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;ExistingExternalUserSharingOnly&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;ExternalUserSharingOnly&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;ExternalUserAndGuestSharing&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    [&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;String&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]$ExternalSharing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$HubId &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Get-SPOHubSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.SiteUrl &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $HubSiteURL}).Id.Guid&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($HubId &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;	Throw&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;URL provided is not a valid Hub Site url&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$sites &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-SPOSite&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Limit All&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($site &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Sites)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;	$siteDetails &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-SPOSite&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $site.Url&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;	If&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($siteDetails.HubSiteId.Guid &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $HubId)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;		{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;		Write-Host&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Setting &quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $site.Url &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot; external sharing permissions to &quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $ExternalSharing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;		Set-SPOSite&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $siteDetails &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;SharingCapability $ExternalSharing&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is an example on how to run it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.\HubExternal.ps1 &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;HubSiteUrl https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;valo365.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;sites&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;contoso&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;work &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ExternalSharing ExternalUserAndGuestSharing&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this is what it should look like when running it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2019/03/032219_2206_ChangeExter2.png&quot; alt=&quot;External Sharing Settings Across a Hub Site&quot; srcset=&quot;/wp-content/uploads/2019/03/032219_2206_ChangeExter2.png.w480.webp 480w, /wp-content/uploads/2019/03/032219_2206_ChangeExter2.png 774w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;774&quot; height=&quot;175&quot;&gt;&lt;/p&gt;
&lt;p&gt;I hope this helps! You can of course modify this script to take the same logic, and do a bunch of different changes on all the Site Collections in a certain Hub Site!&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no country set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-country-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31903</guid><description>In this blog post we are using PowerShell for Finding users with no country in their SharePoint Online / Office 365 User Profile</description><pubDate>Mon, 05 Nov 2018 19:43:04 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2054_Office365Pr1.png&quot; alt=&quot;Finding users with no country&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2054_Office365Pr1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2054_Office365Pr1.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Finding users with no country/ set in the user profile&lt;/p&gt;
&lt;p&gt;In this blog post, we will focus on how to find users that do not have a Country set as part of their Office 365 Profile. The Country can be very useful for international company with more advanced people directories. It can also allow admins to create reports, or do changes by keying on this property.&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module : &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to Azure Active Directory.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without a country.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have anything in the Country property of their Azure AD user profile. If not, we will add our user to the array!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user.Country &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoCountry.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user.Country &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoCountryUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoCountry.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have the country in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2054_Office365Pr2.png&quot; alt=&quot;Finding users with no country&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2054_Office365Pr2.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2054_Office365Pr2.png 886w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;886&quot; height=&quot;495&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FsqX8y&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2GuDycC&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2EkGJTI&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2DMXxFM&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FrCR2z&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; alt=&quot;YouTube logo&quot; srcset=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png.w480.webp 480w, /wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png 1000w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot; width=&quot;147&quot; height=&quot;58&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no manager set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-manager-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31859</guid><description>In this blog post we are using PowerShell for Finding users with no manager in their SharePoint Online / Office 365 User Profile</description><pubDate>Mon, 05 Nov 2018 19:41:38 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr1.png&quot; alt=&quot;Office 365 Delve profile page for Vlad Catrinescu showing his email, phone numbers, OneDrive link and recent documents&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2030_Office365Pr1.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;finding-users-with-no-manager-set-in-the-user-profile&quot;&gt;Finding users with no manager set in the user profile&lt;/h1&gt;
&lt;p&gt;In this blog post, we will focus on how to find users that do not have a manager set as part of their Office 365 Profile. The Manager property is absolutely needed for features such as the Organization Chart, approvals in Microsoft Flow, quick team-calendar view and other productivity features in Office 365.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr2.png&quot; alt=&quot;Microsoft Flow Document Approval with Reminder flow with the Get manager (V2) action taking Created By Email as the User (UPN)&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr2.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2030_Office365Pr2.png 791w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;791&quot; height=&quot;270&quot;&gt;&lt;/p&gt;
&lt;p&gt;There is no out of the box report on Profile Completeness in Office 365, so PowerShell is your best tool in creating reports on user’s profiles! Here is what we will need to get started:&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module : &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to Azure Active Directory.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without a manager.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have a manager or not set as part of their Azure AD user profile. If not, we will add our user to the array!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $Manager &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUserManager&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ObjectId $user.UserPrincipalName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($Manager &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoManager.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $Manager &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUserManager&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ObjectId $user.UserPrincipalName&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($Manager &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoManagerUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoManager.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have a manager in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr3.png&quot; alt=&quot;UsersWithNoManager.csv open in Excel listing DisplayName and UserPrincipalName of Office 365 users with no manager set&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2030_Office365Pr3.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2030_Office365Pr3.png 886w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;886&quot; height=&quot;495&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 222px;&quot;&gt; &lt;col style=&quot;width: 891px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; class=&quot;alignnone wp-image-31510 size-full&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 161px;&quot;&gt; &lt;col style=&quot;width: 952px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr style=&quot;height: 5px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; class=&quot;alignnone size-full wp-image-31745&quot; alt=&quot;YouTube logo&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; class=&quot;&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no skills set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-skills-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31869</guid><description>In this blog post we are using PowerShell for Finding users with no skills in their SharePoint Online / Office 365 User Profile</description><pubDate>Mon, 05 Nov 2018 19:36:14 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2031_Office365Pr1-1.png&quot; alt=&quot;Vlad Catrinescu&amp;#x27;s Delve profile in Office 365 showing his contact details, profile picture and recent documents&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2031_Office365Pr1-1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2031_Office365Pr1-1.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;finding-users-with-no-skills-set-in-the-user-profile&quot;&gt;Finding users with no skills set in the user profile&lt;/h1&gt;
&lt;p&gt;In this blog post, we will focus on how to find users that did not set their skills as part of their SharePoint Online profile. The Skills field can be very useful in an expertise finder directory, when people try to find other colleagues that have knowledge in a certain area or in certain products. Without the skills information being set, the expertise finder in your organization will be way less valuable&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2031_Office365Pr2-1.png&quot; alt=&quot;People Finder web part filtered by Skills showing Vlad Catrinescu&amp;#x27;s card with SharePoint, Photoshop, AutoCad and PowerShell&quot; width=&quot;308&quot; height=&quot;360&quot;&gt;&lt;/p&gt;
&lt;p&gt;There is no out of the box report on Profile Completeness in Office 365, so PowerShell is your best tool in creating reports on user’s profiles! Here is what we will need to get started:&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SharePoint Online Administrator&lt;/li&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module : &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SharePoint Online PnP Module: &lt;a href=&quot;https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to both Azure Active Directory and the SharePoint Online Admin Center (with the PnP cmdlets)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnpOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;globomanticsorg-admin.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credentials $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without any skills .&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have a SharePoint Online Profile or not (since the skills are  stored in the SPO profile, not in Azure AD).   If the profile exists, and the SPS-Skills property is equal to an empty string, it means the skills for this user are not set, so we will save the user object in the array we created in the previous step!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $SPProfile  &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-PnPUserProfileProperty&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Account $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;          if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile.UserProfileProperties.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;SPS-Skills&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;               $NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoSkills.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnpOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;globomanticsorg-admin.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credentials $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $SPProfile  &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-PnPUserProfileProperty&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Account $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;          if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile.UserProfileProperties.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;SPS-Skills&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;               $NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoSkillsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoSkills.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have any skills in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2031_Office365Pr3-1.png&quot; alt=&quot;UsersWithNoSkills.csv in Excel listing DisplayName and UserPrincipalName of Office 365 users with no profile skills&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2031_Office365Pr3-1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2031_Office365Pr3-1.png 886w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;886&quot; height=&quot;495&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FsqX8y&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2GuDycC&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2EkGJTI&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2DMXxFM&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FrCR2z&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; alt=&quot;YouTube logo&quot; srcset=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png.w480.webp 480w, /wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png 1000w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot; width=&quot;147&quot; height=&quot;58&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no Picture set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-picture-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31879</guid><description>In this blog post we are using PowerShell for Finding users with no Picture in their SharePoint Online / Office 365 User Profile</description><pubDate>Mon, 05 Nov 2018 19:28:06 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-1.png&quot; alt=&quot;Vlad Catrinescu&amp;#x27;s Delve profile in Office 365 showing his contact details, profile picture and recent documents&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr1-1.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;finding-users-with-no-picture-set-in-the-user-profile&quot;&gt;Finding users with no Picture set in the user profile&lt;/h1&gt;
&lt;p&gt;In this blog post, we will focus on how to find users that did not set their picture as part of their Office 365 profile. With remote work becoming more and more popular and with teams spread across the board, it’s important to be able to put a face on a name. Multiple Office 365 experiences such as Teams, Delve, SharePoint leverage that profile picture in order to make the tools you use look a lot better, and quickly identify people inside the company. Without pictures, all of those experiences will only show gray placeholders, which is not optimal.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr2-1.png&quot; alt=&quot;Valo intranet People Directory with department filters and employee cards showing photos, titles and contact details&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr2-1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr2-1.png 805w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;805&quot; height=&quot;393&quot;&gt;&lt;/p&gt;
&lt;p&gt;There is no out of the box report on Profile Completeness in Office 365, so PowerShell is your best tool in creating reports on user’s profiles! Here is what we will need to get started:&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;Exchange Online Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Exchange Online PowerShell Module (only if using MFA)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to both Azure Active Directory and Exchange Online!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Session &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; New-PSSession&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ConfigurationName Microsoft.Exchange &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ConnectionUri https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;outlook.office365.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;powershell&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;liveid&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Authentication Basic &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;AllowRedirection&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Import-PSSession&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Session&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without a picture.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have a picture as part of their profile. If not, we will add that user object to the array we have created earlier!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $Picture &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-UserPhoto&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Identity $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($Picture &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoPicture.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Session &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; New-PSSession&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ConfigurationName Microsoft.Exchange &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ConnectionUri https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;outlook.office365.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;powershell&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;liveid&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Authentication Basic &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;AllowRedirection&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Import-PSSession&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Session&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $Picture &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-UserPhoto&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Identity $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($Picture &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoPictureUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoPicture.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have a picture set in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr3-1.png&quot; alt=&quot;UsersWithNoPicture.csv in Excel listing DisplayName and UserPrincipalName of Office 365 users without a profile picture&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr3-1.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr3-1.png 941w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;941&quot; height=&quot;545&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 222px;&quot;&gt; &lt;col style=&quot;width: 891px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; class=&quot;alignnone wp-image-31510 size-full&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 161px;&quot;&gt; &lt;col style=&quot;width: 952px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr style=&quot;height: 5px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; class=&quot;alignnone size-full wp-image-31745&quot; alt=&quot;YouTube logo&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; class=&quot;&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no Past Projects set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-past-projects-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31883</guid><description>In Office 365, profile completeness is key to multiple cloud experiences. Finding users with no Past Projects is one you to want to know.</description><pubDate>Mon, 05 Nov 2018 19:23:53 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-2.png&quot; alt=&quot;In this blog post we are using PowerShell for Finding users with no birthday in their SharePoint Online / Office 365 User Profile&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-2.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr1-2.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;finding-users-with-no-past-projects-set-in-the-user-profile&quot;&gt;Finding users with no Past Projects set in the user profile&lt;/h1&gt;
&lt;p&gt;In this blog post, we will focus on how to find users that did not set their Past Projects as part of their SharePoint Online profile. The Past Projects field can be very useful in an expertise finder directory, when people try to find other colleagues that have experience in a certain type of project. Without the project info being set, the expertise finder in your organization will be way less valuable&lt;/p&gt;
&lt;p&gt;There is no out of the box report on Profile Completeness in Office 365, so PowerShell is your best tool in creating reports on user’s profiles! Here is what we will need to get started:&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SharePoint Online Administrator&lt;/li&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module : &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SharePoint Online PnP Module: &lt;a href=&quot;https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline/&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/SharePointPnPPowerShellOnline/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to both Azure Active Directory and the SharePoint Online Admin Center (with the PnP cmdlets)&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-PnpOnline&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Url https:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;globomanticsorg-admin.sharepoint.com&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credentials $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without past projects.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have a SharePoint Online Profile or not (since the past projects are stored in the SPO profile, not in Azure AD).   If the profile exists, and the SPS-PastProjects property is equal to an empty string, it means that there are no Past projects for this user,  so we will save the user object in the array we created in the previous step!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $SPProfile  &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-PnPUserProfileProperty&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Account $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;          if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile.UserProfileProperties.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;SPS-PastProjects&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;               $NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoProjects.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    $SPProfile  &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-PnPUserProfileProperty&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Account $user.UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;ErrorAction SilentlyContinue&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;          if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($SPProfile.UserProfileProperties.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;SPS-PastProjects&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;               $NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoProjectsUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoProjects.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have their past projects set in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr2-2.png&quot; alt=&quot;In this blog post we are using PowerShell for Finding users with no birthday in their SharePoint Online / Office 365 User Profile&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr2-2.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr2-2.png 886w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;886&quot; height=&quot;495&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FsqX8y&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2GuDycC&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2EkGJTI&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2DMXxFM&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://amzn.to/2FrCR2z&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; alt=&quot;YouTube logo&quot; srcset=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png.w480.webp 480w, /wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png 1000w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot; width=&quot;147&quot; height=&quot;58&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;/p&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item><item><title>Office 365 Profile Completeness: Finding users with no department set in the user profile</title><link>https://vladtalkstech.com/powershell/office-365-profile-completeness-finding-users-with-no-department-set-in-the-user-profile/</link><guid isPermaLink="false">https://vladtalkstech.com/?p=31888</guid><description>In this blog post we are using PowerShell for Finding users with no department in their SharePoint Online / Office 365 User Profile</description><pubDate>Mon, 05 Nov 2018 18:03:49 GMT</pubDate><content:encoded>&lt;p&gt;In Office 365, profile completeness is key to multiple cloud experiences. For example, you cannot really do approvals by the manager, if the manager is not set in the user’s profile! Another good example would be a people directory, which would be a bit useless if users don’t have their location and phone numbers filled in! In this series, we will look at how to use PowerShell to create a report of Office 365 Users missing key properties!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-3.png&quot; alt=&quot;Office 365 Profile Completeness: Finding users with no department set in the user profile&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr1-3.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr1-3.png 732w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;732&quot; height=&quot;321&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Office 365 Profile Completeness Series&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Birthday&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hW&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hW&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Manager&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8hR&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8hR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Cell Phone&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iq&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Picture&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ib&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ib&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Department&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8ik&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8ik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Country&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8iz&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Skills&lt;/strong&gt; set in the user profile:  &lt;a href=&quot;https://wp.me/p3utgI-8i1&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8i1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;About Me&lt;/strong&gt; set in the user profile : &lt;a href=&quot;https://wp.me/p3utgI-8iv&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8iv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Finding users with no &lt;strong&gt;Past Projects&lt;/strong&gt; set in the user profile: &lt;a href=&quot;https://wp.me/p3utgI-8if&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://wp.me/p3utgI-8if&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;finding-users-with-no-department-set-in-the-user-profile&quot;&gt;Finding users with no department set in the user profile&lt;/h1&gt;
&lt;p&gt;In every people directory, the department is a key property that people filter on when searching for other employees. It also allows Office 365 administrators to apply different settings to different people, depending on the department.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr2-3.png&quot; alt=&quot;Office 365 Profile Completeness: Finding users with no department set in the user profile&quot; width=&quot;308&quot; height=&quot;360&quot;&gt;&lt;/p&gt;
&lt;p&gt;There is no out of the box report on Profile Completeness in Office 365, so PowerShell is your best tool in creating reports on user’s profiles! Here is what we will need to get started:&lt;/p&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Azure AD Administrator&lt;/li&gt;
&lt;li&gt;AzureAD PowerShell Module : &lt;a href=&quot;https://www.powershellgallery.com/packages/AzureAD&quot; rel=&quot;noopener noreferrer&quot; target=&quot;_blank&quot;&gt;https://www.powershellgallery.com/packages/AzureAD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-script&quot;&gt;The Script&lt;/h2&gt;
&lt;p&gt;First thing we are going to do is get our Office 365 credentials, and connect to Azure Active Directory.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I will then get all of the users in my tenant, that are internal to the company (Member) and that have at least one license assigned to them.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next up, we will create an empty array in which we will later store our users without their department setup.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that we have all our information, we will loop trough each user, and find out if they have anything in the Department  property of their Azure AD user profile. If not, we will add our user to the array!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user.Department &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lastly, we will export the results to a CSV file&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoDepartment.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here is the full script in one piece!&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;powershell&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$cred &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; get-Credential&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;Connect-AzureAD&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Credential $cred&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$$&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Users &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Get-AzureADUser&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;All &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$True&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; Where&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;$_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.UserType &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;Member&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -and&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.AssignedLicenses &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-ne&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; @&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $Users) &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ($user.Department &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;-eq&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; $null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        $NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; $user&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$NoDeptUsers &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Select DisplayName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; UserPrincipalName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;|&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; Export-Csv&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Path &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;C:\O365Reports\UsersWithNoDepartment.csv&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; -&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;NoTypeInformation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;the-result&quot;&gt;The Result&lt;/h2&gt;
&lt;p&gt;The final result is a CSV file in which we can see the display names and user names of all of the users in our tenant that don’t have their department set in their profile! You can either contact them individually, or even &lt;a href=&quot;/powershell/send-email-from-powershell-in-office-365/&quot;&gt;Send Email from PowerShell in Office 365&lt;/a&gt; in order to automatically send them a nicely formatted HTML e-mail asking them to fill it!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr3-2.png&quot; alt=&quot;UsersWithNoDepartment.csv open in Excel listing DisplayName and UserPrincipalName of Office 365 users with no department set&quot; srcset=&quot;/wp-content/uploads/2018/11/110418_2032_Office365Pr3-2.png.w480.webp 480w, /wp-content/uploads/2018/11/110418_2032_Office365Pr3-2.png 886w&quot; sizes=&quot;(max-width: 960px) calc(100vw - 48px), (max-width: 1176px) calc(100vw - 416px), 760px&quot; width=&quot;886&quot; height=&quot;495&quot;&gt;&lt;/p&gt;
&lt;h1 id=&quot;more-resources&quot;&gt;More Resources&lt;/h1&gt;
&lt;p&gt;PowerShell for Office 365 is an essential tool as part of every Office 365’s administrator toolbox. Without PowerShell, you cannot do cool reports such as the one in this blog post, and you are missing out on multiple Office 365 reporting, productivity and security settings. Here are some resources that you could use to learn PowerShell for Office 365:&lt;/p&gt;
&lt;h1 id=&quot;books&quot;&gt;Books&lt;/h1&gt;
&lt;p&gt;Books are really ways to learn a topic from start to master, and even if they cost some dollars, they’re always a good investment!&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 222px;&quot;&gt; &lt;col style=&quot;width: 891px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2017/12/pso365180.webp&quot; class=&quot;alignnone wp-image-31510 size-full&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;180&quot; height=&quot;256&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;Essential PowerShell for Office 365: Managing and Automating Skills for Improved Productivity&lt;br&gt;&lt;/strong&gt;Take your Office 365 skills to the next level. Master PowerShell for Office 365 to stay competitive in today’s world of highly sought after cloud management skills. With expert guidance, IT pros will learn how to leverage the muscle of PowerShell to automate many advanced administrative tasks not otherwise accessible in the Office 365 Admin Center. You will discover how to unlock configuration options and automate tasks in order to free up valuable time and resources.&lt;br&gt;&lt;br class=&quot;blank&quot;&gt;&lt;strong&gt;Get it on Amazon at the following links:&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.com: &lt;a href=&quot;http://amzn.to/2FsqX8y&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FsqX8y&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.ca: &lt;a href=&quot;http://amzn.to/2GuDycC&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2GuDycC&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.fr: &lt;a href=&quot;http://amzn.to/2EkGJTI&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2EkGJTI&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.uk: &lt;a href=&quot;http://amzn.to/2DMXxFM&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2DMXxFM&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;text-align: left;&quot;&gt;Amazon.de: &lt;a href=&quot;http://amzn.to/2FrCR2z&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://amzn.to/2FrCR2z&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h1 id=&quot;video-training&quot;&gt;Video Training&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Pluralsight is a paid resource unlike Channel9, Youtube, and Microsoft Virtual Academy which are free. The quality they provide is also superior because of all the quality checks they go through, and the instructors are one of the best in the industry. The Pluralsight courses have a link to where you can get a free trial and decide for yourself if paying a subscription or not is worth it, but the 10 day free trial should allow you to view all those courses for free.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse;&quot; border=&quot;0&quot;&gt;&lt;colgroup&gt;&lt;col style=&quot;width: 161px;&quot;&gt; &lt;col style=&quot;width: 952px;&quot;&gt;&lt;/colgroup&gt;&lt;tbody valign=&quot;top&quot;&gt;&lt;tr style=&quot;height: 5px;&quot;&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi6.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for Office 365&lt;br&gt;&lt;/strong&gt;In this course, you will learn how to use PowerShell to manage Office 365 services. You will learn how to connect and manage users and licensing, SharePoint Online, Exchange Online, Compliance Center and last but not least, Skype for Business Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PowerShellO365&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;http://spvlad.com/PowerShellO365&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi7.png&quot; class=&quot;alignnone&quot; alt=&quot;Learn PowerShell for Office 365&quot; width=&quot;142&quot; height=&quot;75&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell Playbook for Office 365&lt;br&gt;&lt;/strong&gt;A more advanced look at multiple real-life scenarios that span across all Office 365 Services and show you how your PowerShell for Office 365 skills can be applied in your day to day life&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;a href=&quot;https://spvlad.com/PowerShellPlaybook&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://spvlad.com/PowerShellPlaybook&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Free Pluralsight Trial:&lt;/strong&gt; &lt;a href=&quot;http://spvlad.com/PS10DayTrial&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Get a free 10 day Pluralsight Trial!&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; src=&quot;/wp-content/uploads/2018/04/2000px-Logo_of_YouTube_2015-2017.svg_.png&quot; class=&quot;alignnone size-full wp-image-31745&quot; alt=&quot;YouTube logo&quot; width=&quot;1000&quot; height=&quot;421&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;PowerShell for common Office 365 Operations&lt;br&gt;&lt;/strong&gt;In this 300 level session, you will learn how to automate the management of Office 365 using Windows PowerShell. We will discuss how to connect Windows PowerShell to Office 365, tour the Office 365 cmdlets, and demonstrate how to manage domains, users, and services including Exchange Online, and SharePoint Online.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=I2lj1rbzjCk&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://www.youtube.com/watch?v=I2lj1rbzjCk&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img decoding=&quot;async&quot; class=&quot;&quot; src=&quot;/wp-content/uploads/2016/08/083116_0243_70346Managi9.png&quot; alt=&quot;Microsoft Virtual Academy logo&quot;&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;padding-left: 7px; padding-right: 7px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;&quot;&gt;&lt;strong&gt;Support Corner: Using PowerShell to Manage Office 365 Users&lt;br&gt;&lt;/strong&gt;Join us in this fast-paced demo to learn how to manage Office 365 users using PowerShell. Experts show you how to create and delete users, update user IDs and passwords, assign licenses and groups, and much more.&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt;: &lt;a href=&quot;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;https://mva.microsoft.com/en-US/training-courses/support-corner-using-powershell-to-manage-office-365-users-8934?l=KGtEBIC3_304984382&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content:encoded><category>Microsoft 365</category><category>PowerShell</category><author>Vlad Catrinescu</author></item></channel></rss>