
Announcements!
- Microsoft Graph PowerShell SDK V2.29 Now Available \ Version 2.29 of the Microsoft Graph PowerShell SDK can now be downloaded from the PowerShell Gallery. Initial tests show that the release is stable. However, it’s recommended that you deploy V2.29 on a few workstations to test essential scripts before proceeding to a full-scale roll-out. V2.29 does not address the issue with PowerShell runtime in Azure Automation, but overall, first indications are that V2.29 is a good release.
- Microsoft finally bids farewell to PowerShell 2.0 \ Users still clinging on to PowerShell 2.0 just received notice to quit as the command-line tool is officially leaving Windows.
Blogs, Articles, and Posts
- CleanupMonster v 3.1.5 \ This module provides an easy way to cleanup Active Directory from dead/old objects based on various criteria. It can also disable, move or delete objects. It can utilize Azure AD, Intune and Jamf to get additional information about objects before deleting them.
- Free up RAM in Windows with taskkill, PowerShell, and Sysinternals RAMMap \ Freeing up RAM on Windows can significantly improve system performance, especially when certain applications consume excessive memory. In this guide, you’ll learn how to free up RAM using taskkill on the command prompt, PowerShell, wmic, and the free Sysinternals RAMMap tool, with step-by-step instructions for each method.
- Send Email Alert for Break Glass Account Activity \ Break glass accounts in Microsoft 365 are used for emergency access when admin accounts get locked out. But since they hold global admin privileges, they’re a prime target for attackers.
- Practical Graph: Tracking Critical App Actions Through Audit Events \ App management audit events are captured when changes are made to Entra registered and enterprise apps. Critical app management audit events should be closely monitored to ensure that permissions are used properly and attackers haven't attempted to penetrate the tenant to extract data. This article explains how to find and analyze audit data for some critical app management audit events and run the code as an Azure Automation runbook.
- How to Remove SharePoint Sharing Links using PowerShell \ In our earlier blog we explored how to export all sharing links to track and audit file sharing across your SharePoint Online environment. The post helped admins identify various link types, spot risky shares, and gain visibility into shared content across sites.
- PowerCLI Reimagined: Deep Dive into VCF PowerCLI 9.0 \ Introduction PowerCLI has long established itself as one of the most trusted and widely adopted automation tools across VMware environments.
- How to Update PowerShell on Windows (All Methods) \ PowerShell may take time to respond to your commands or return with errors. At times, PowerShell may also fail to open on your Windows PC. So, if you think that PowerShell is outdated on your device, it’s time to update it to the latest version.
Projects, Scripts, and Modules
- dbatools v 2.1.32 \ The community module that enables SQL Server Pros to automate database development and server administration
- TerminalBlocks v2.0.0 (pre-release) \ PowerShell Native Prompt Blocks
Books, Media, and Learning Resources
- PSCONFEU 2025 \ More videos from PSCONFEU 2025 are being added daily.
- Optimize Your Microsoft Graph Calls \ Building a Graph Pre-Processor Module with Christian Ritter
Community
- Building Layers of Protection and Purpose - Miriam Wiesner \ In this episode of the PowerShell Podcast, we catch up with returning guest and security research program manager at Microsoft, Miriam Wiesner. Recorded live at PowerShell Conference EU in Malmö, Sweden, we dive into her fascinating journey from Premier Field Engineer to her current role in security research. Miriam reflects on her early talks about Just Enough Administration (JEA), shares insights into MFA bypass techniques involving browser cookies (with a fun appearance from Cookie Monster), and emphasizes the importance of defense-in-depth and layered security.
Events
- Teaching AI to Use Your Tools \ It's Not Just Devs Using Your Code Anymore
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Apologizes for the abridged version of PowerShell Weekly. It's a holiday and my nephew's waiting on me to take him fishing. I owe you all an extra-large edition next week. Thanks for understanding!
Blogs, Articles, and Posts
- How to Add Timeouts to Pester Tests with PowerShell Runspaces \ Prevent Pester tests from hanging indefinitely using PowerShell runspaces. Learn to handle variable scoping, module loading, TestDrive access, and stream capture challenges with timeout protection.
- How to Block Registry Editor in Windows Devices using PowerShell Script Group Policy and Intune Policy \ Hello - Here is the new HTMD Blog Article for you. Enjoy reading it.
Projects, Scripts, and Modules
- Azure Arc: Uninstall the Connected Machine agent and clean up related resources on Windows using a PowerShell script \ In this blog post, I’ll walk you through removing the Azure Arc Connected Machine agent from a Windows machine and cleaning up all related folders, files, registry keys, other agents, and configuration files using a PowerShell script.
Books, Media, and Learning Resources
- Automating Microsoft 365 with PowerShell Second Edition \ The Office 365 for IT Pros team are thrilled to announce the availability of Automating Microsoft 365 with PowerShell (2nd edition). This completely revised 350-page book delivers the most comprehensive coverage of how to use Microsoft Graph APIs and the Microsoft Graph PowerShell SDK with Microsoft 365 workloads. Existing subscribers can download the second edition now free of charge.
Community
- Behind the Shell with Microsoft \ In this episode, recorded live at PSConfEU, Andrew catches up with some of the PowerShell team from Microsoft to talk all things PowerShell—from AIShell to PSResourceGet to the future of DSC and OpenSSH.
Events
- NYC Agentic Foundation – First Meetup \ I’ll be attending. They're demoing Claude, Roo, and early agentic workflows. If you're into orchestration, multi-agent coordination, or spec-driven dev (AIDD, anyone?), it's worth a look.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
An external USB monitor. It's old so it's actually only a USB 2.0.
Blogs, Articles, and Posts
- Token Protection Extends to Microsoft Graph PowerShell SDK Sessions \ The conditional access policy condition for token protection now extends to Microsoft Graph PowerShell SDK interactive sessions. Any account within the scope of a CA policy that requires token protection can use Web Account Manager (WAM) to sign in and check that everything is secure and ready to go. It’s a protection that might be of interest to administrators and developers that access sensitive data in Graph SDK sessions.
- PowerShell 101: Creating a Module Manifest \ Maybe you've put together some great functions but struggle to make them cohesive, intuitive, or shareable. Without a way to define your module's identity and functionality, managing or scaling as your scripts evolve into robust tools can be a headache. Not unless you have a module manifest in place.
- Reboot with PowerShell: Use Restart-Computer to restart locally, remotely, and automate reboots for multiple Windows computers \ Rebooting a Windows PC via PowerShell is a routine administrative task. This guide will teach you how to use the PowerShell cmdlet Restart-Computer to reboot a local Windows PC, restart a remote computer, and automate the reboot process for multiple systems.
- 10 Powerful PowerShell Select-String Examples \ As a PowerShell administrator, I mostly worked with the PowerShell Select-String cmdlet. So, I thought to show you 10 real examples of Select-String in PowerShell.
- Practical Graph: Finding Owners for Ownerless Apps from Audit Data \ When administrators create new Entra ID apps, the apps don't have an owner unless an owner is explicitly assigned. The net result is that a tenant can end up with many ownerless apps. In this article, we explain how to find ownerless apps, and how to use audit data to find suitable owners for those apps. All done with PowerShell, of course.
Projects, Scripts, and Modules
- EntraFIDOFinder Update \ June( v0.0.18) update is here and we skipped May as I could tell they were still making some changes so I didn’t push them to the PowerShell gallery. This month they removed 50+ keys as they were unapproved models, but there are still over 150 keys that are Entra Attestation capable!
Books, Media, and Learning Resources
- Optimizing Visual Studio Code for PowerShell, 2025 Edition \ In this session, Justin Grote presents an in-depth overview of optimizing Visual Studio Code (VS Code) specifically for PowerShell development. He begins by establishing the importance of VS Code as the recommended editor for PowerShell, having evolved from a basic text editor to a powerful tool that supports a variety of programming languages and capabilities. The lecture aims to provide a structured approach for setting up VS Code for PowerShell users, whether they are new to the environment or seasoned developers looking to refine their setup.
- Lightning Demos from PSConfEU \ See the Lightning Demos from PSConfEU 2025
Community
- A Conversation from the Heart of PSConfEU \ In this episode of the PowerShell Podcast, host Andrew Pla reports live from PowerShell Conference Europe 2025 in Malmö, Sweden. With energy high and community engagement stronger than ever, Andrew chats with key figures shaping the PowerShell ecosystem.
- The Dos and Don'ts of PowerShell with Steven Judd and Gilbert Sanchez \ In this episode of the PowerShell Podcast, we’re joined by Steven Judd and Gilbert Sanchez, two active contributors and speakers in the PowerShell community. We talk about the Dos and Don'ts of PowerShell. We cover topics like documentation, testing, community, how you should view yourself in your growth, and even get some top tips on logging from those who have done PowerShell at the highest levels.
- PowerShell Community Call \ June 2025 Community Call recording
Events
- NYC Agentic Foundation – First Meetup \ I’ll be attending. They're demoing Claude, Roo, and early agentic workflows. If you're into orchestration, multi-agent coordination, or spec-driven dev (AIDD, anyone?), it's worth a look.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- Announcing Microsoft Desired State Configuration v3.1.0 \ This post announces the release of Microsoft Desired State Configuration v3.1.0. We discuss the features and benefits of DSC and how it differs from PowerShell DSC.
- What's New in PowerShell-Docs for 2025 \ This article lists notable changes made to docs each month and celebrates the contributions from the community.
- PowerShell + DevOps Global Summit 2025 \ All recordings from the PowerShell + DevOps Global Summit 2025 are now live!
Blogs, Articles, and Posts
- Automating Network Diagnostics with Globalping PowerShell Module \ Are you tired of manually running network diagnostics like Ping, Traceroute, or DNS queries? The Globalping PowerShell Module is here to save the day! With its easy-to-use cmdlets, you can automate measurements from probes distributed across the globe.
- QuietShell – Executing PowerShell without a Console Window \ For some time I’ve used a simple VBScript wrapper in code projects and scheduled tasks to allow silent execution of PowerShell scripts in the user context without displaying a console window: But with the deprecation of VBScript and it’s eventually being removed from the Windows OS, it was time to look at alternative ways
- AI Inception: Building AI Solutions with AI for AI \ Last month I had the pleasure of speaking at the Sydney event for Global Azure. My session was the title of this post, AI Inception: Building AI Solutions with AI for AI. One key component of my talk was on Recursive AI.
- Download Windows Themes using PowerShell \ You can switch your Windows Theme using the Settings app and the Microsoft Store, but you can also download them from the Microsoft site using PowerShell to save them locally for easy switching between them. In this blog post, I will show you how.
Projects, Scripts, and Modules
- DiskReportingTools \ A set of PowerShell tools for disk reporting and visualization. The tools rely on CIM cmdlets so this module requires a Windows platform.
- AIShell.Ollama.Agent \ This agent is used to interact with a language model running locally or remotely by utilizing the Ollama API. Before using this agent locally you need to have Ollama installed and running.
- Updating the Entra ID Custom Banned Password List with PowerShell \ Microsoft 365 tenants with Entra P1 or P2 licenses can use a custom banned password list to stop people using specific terms in their passwords. The idea is to prevent easily-guessed terms being used in passwords. You could also block words deemed to be objectionable. In any case, this article explains how to maintain the custom blocked password list with a PowerShell script.
- GenXdev v 1.184.2025 \ GenXdev PowerShell Utilities and helpers
Community
- The Life and Code of The PoSh Wolf \ This week, we sit down with Anthony Howell, better known as The PoSh Wolf, for an inspiring and entertaining conversation about PowerShell, community, and creativity. From his early days in a two-person IT department to speaking at PowerShell Summit, Anthony shares how passion, persistence, and curiosity have fueled his journey. He dives into his creative use of PowerShell for managing game servers and even building a Discord bot, proving that automation isn't just for enterprise tasks. We explore how side projects can grow into real skills, the value of sharing in the community, and how embracing mistakes makes us all better. Anthony also gives insights into using .NET in PowerShell, learning Go, and building resilient systems for fun and work.
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
- Doug vs. the Machine: Agents Gone Wild \ This is part of an 8-part livestream series happening Tuesdays and Thursdays in June. Live prompt engineering. Real problems. Wild demos.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Blogs, Articles, and Posts
- Registry Redirection: Why You Should Never Hardcode Wow6432Node and How to Properly Access Registry Views in PowerShell \ The Windows Registry is a critical component of the operating system that stores configuration settings, application options, and system parameters. On 64-bit Windows systems, the registry is divided into two views: one for 64-bit applications and another for 32-bit applications. This duality is essential for compatibility but can trip up administrators and scripters who aren’t aware of it.
- Microsoft shares script to restore inetpub folder you shouldn’t delete \ Microsoft has released a PowerShell script to help restore an empty 'inetpub' folder created by the April 2025 Windows security updates if deleted. As Microsoft previously warned, this folder helps mitigate a high-severity Windows Process Activation privilege escalation vulnerability.
- How to Block Ad-Hoc Email-Based Subscriptions \ The old Set-MsolCompanySettings cmdlet is no more, so how can a Microsoft 365 tenant block email-based subscriptions? With the Graph, of course! Seriously, there’s no 1-to-1 mapping from the old cmdlet to a new, but some of the settings are available in the Entra ID authorization policy. We can update the authorization policy with PowerShell to block email-based subscriptions, like Copilot Studio.
- Warp Launch Log 3: MCP support, refine prompt, image upload, reusable prompts, git support \ Warp, the top terminal app with AI support, has introduced new features in its GA release, including MCP support and Refine for AI responses. The Preview release now allows image uploads and the saving of reusable AI prompts. I also found a few new features that weren’t mentioned in the Launch Log 3 post.
- Concatenate String in Write-Host In PowerShell \ In this tutorial, I’ll walk you through multiple methods to concatenate strings in PowerShell’s Write-Host command, from the most basic approaches to advanced techniques. String concatenation in PowerShell, especially when using the Write-Host cmdlet, is something you’ll do almost daily if you’re writing scripts for system administration or automation tasks.
- Intune Drift Control PowerShell \ This is my latest training exercise, building configuration drift control for Microsoft Intune with PowerShell and the pester module. I wanted to be able to check my clients configuration against my own baseline for Microsoft Intune. Of course, there are many tools out there that can do this for you. Like Andrew Taylor’s EUCToolbox.
- Using the Polyglot extension from VSCode for creating Jupyter notebooks containing PowerShell code and how to use the PowerShellNotebook module \ I did a small demo session at Experts Live NL this week about this topic. In this blog post, I aim to demonstrate the capabilities of the Polyglot extension, explain its functionality, which is easier compared to the original method of creating Jupyter notebooks, which I covered in 2022.
Projects, Scripts, and Modules
- MSGraphStuff v 1.1.6 \ Microsoft Graph API related functions. Some of them are explained at https://doitpshway.com/.
Community
- From DJ Decks to Cloud Architecture - Shannon Eldridge-Kuehn \ In this episode of the PowerShell Podcast, we chat with Shannon Eldridge-Kuehn, a seasoned technologist whose career spans from spinning vinyl as a DJ to leading cloud and FinOps consulting. Shannon shares her unique journey into tech, driven by curiosity and a desire to record her DJ sets, which ultimately led to a successful career in cloud infrastructure, Azure, platform engineering, and FinOps. We explore Shannon’s transition into IT without a traditional tech background, her time at Microsoft, and her current work in FinOps. She discusses the challenges of cloud adoption, navigating imposter syndrome, and why strong communication skills are just as critical as technical ones. This episode is a masterclass in resilience, career evolution, and staying curious.
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
- Doug vs. the Machine: Agents Gone Wild \ This is part of an 8-part livestream series happening Tuesdays and Thursdays in June. Live prompt engineering. Real problems. Wild demos.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- Azure CLI and Azure PowerShell Build 2025 Announcement \ At Microsoft Build 2025, we're excited to announce several new capabilities aligned with these priorities
Blogs, Articles, and Posts
- Managing Guest Users in PowerShell with Microsoft Graph API \ Managing Guest Users in PowerShell with Microsoft Graph API In today’s collaborative work environments, inviting guest users to access organizational resources has become a common practice.
- Exchange Online Upgrades Its Message Tracing Capabilities \ Microsoft announced the GA for the new message tracing feature on June 3. The old code will be deprecated in September 2025, so it's time to update any PowerShell scripts that use the Get-MessageTrace or Get-MessageTraceDetail cmdlets. Upgrading is easy and shouldn’t take too long, once you find the time to do the work.
- Enhanced Dashboards with PSWriteHTML – Introducing InfoCards and Density Options \ Discover new features in the PSWriteHTML PowerShell module – including New-HTMLInfoCard, improved layout controls with the -Density parameter, and customizable shadows for clean, modern dashboards and reports.
- Avoid The Five Big Errors in Graph PowerShell Scripts \ Everyone learns from experience. This article covers five important building blocks for writing great Graph PowerShell scripts, the product of hard-won experience and many mistakes. Filtering, properties, permissions, and pagination all make the list.
- Creating/downloading videos from Azure OpenAI Sora by PowerShell/API \ Finally the OpenAI Sora model is released in preview for Azure AI Foundry. You can read more about it here. Sora is a text to video model that lets you input a description of a scene and it generates a video from it. Using the Video playground in AI Foundry its super easy to generate
- Practical PowerShell: Crafting Collections \ PowerShell scripting becomes far more powerful when you master collections like arrays and hash tables. In this article, we review the basics of standard collection types. Then, walk through additional useful options that leverage other object types available through the .NET Framework.
- How to Get SharePoint Document Library Size using PnP PowerShell? \ One of my clients recently asked how to check the size of a specific SharePoint document library. The easiest way is through SharePoint’s Storage Metrics, which is available in the site settings. It provides the total size, %of Site Quota, etc. In this article, I will also explain how to get the SharePoint document library
- How do I get the full Azure Advisor Recommendation from an API? \ Recently at work I was writing a script to pull all Azure Advisor recommendations for a set of subscriptions for further analysis and display, and I wanted to make sure that my output included as much information as possible. The list of recommendations is readily available via the API, and based on the example output I thought - perfect! This should have all of the information I could need!
Projects, Scripts, and Modules
- MySQLite v 1.0.0 \ A small set of PowerShell commands for working with SQLite database files. - jdhitsolutions/MySQLite
Community
- Hacking Games and Building a Career - Mateus Pimentel \ In this episode of the PowerShell Podcast, we take a detour from our typical PowerShell conversations to explore the fascinating world of game hacking with backend services developer Mateus Pimentel. Mateus shares his journey from crafting bots for MMORPGs to reverse engineering games and ultimately working in online services for a major gaming company.We discuss his early experiences hacking Tibia, how he overcame being hacked himself as a kid, and how those formative experiences shaped his approach to software development and cybersecurity. Mateus also dives into powerful learning experiences from hacking games, participating in Capture the Flag competitions, and avoiding the dark paths that lure many curious technologists. This episode is a compelling exploration of hacking culture, ethics, and personal transformation.
- How to Write a CFP That Gets You to the PowerShell + DevOps Global Summit 2026 \ So, you want to speak at the PowerShell + DevOps Global Summit 2026? Great. But before you start dreaming about standing ovations and post-talk high-fives, let’s talk about the one thing standing between you and that stage: your Call for Proposals (CFP).
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
- Doug vs. the Machine: Agents Gone Wild \ This is part of an 8-part livestream series happening Tuesdays and Thursdays in June. Live prompt engineering. Real problems. Wild demos.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Either my wife or I will bust out "Bye, Felicia" at least once a week.
The Taco Bell jingle has lived rent free in my head for 20 years now
Thanks! That's why it takes so long between my videos coming out. That and I have a full time job, 2 kids, coach my daughter's soccer team, and suck at video editing.
Mine is definitely a passion project. I make videos on automation using PowerShell. I aim to make videos that teach the thought process and fundamentals and not just step by step tutorials. I've been busy moving halfway across the country but plan to start uploading some more once I'm settled in two weeks.
Blogs, Articles, and Posts
- Microsoft Edit: Terminal editor for Windows and Linux \ Microsoft has recently launched Edit, a lightweight terminal editor for Windows and Linux. It revives the spirit of the MS-DOS Editor, which debuted in 1991 as a full-screen text editor for DOS and early Windows systems. Edit eliminates the need to leave the terminal to edit files. While Edit doesn't feature a traditional GUI, it supports tab management and can be navigated using a mouse. On Linux, the open-source tool can be seen as an alternative to nano.
- How to List Hidden Group Memberships with the Graph \ A user reported that a script didn't list any details of hidden group memberships and asked why. The reason is that a separate Graph permission controls access to hidden group memberships. If an app doesn’t have the permission, the Graph returns null memberships, which is probably not all that helpful. Once the right permission is in place, everything works.
- Track Microsoft Entra Application Operations Using PowerShell \ When applications are registered in Microsoft Entra, they are granted with surprising number of privileges like accessing sensitive data to acting on behalf of users. But these permissions aren’t static. Once an app is registered, its configuration can evolve over time through various operational changes.
Projects, Scripts, and Modules
- Using the Convert Module in PowerShell \ When you have Objects in a format that you can't read, or when you want to convert Objects to another format, or to switch from Celsius to Fahrenheit, you can use the Cmdlets from the Convert module from Andrew Pearce :) In this small blog post, I will show you how you can use this great module!
- Intune Automation Collection Community Solution Helps to Build Workflows with PowerShell Scripts and More \ Hello - Here is the new HTMD Blog Article for you. Enjoy reading it.
- WinTuner v 1.1.1 \ Package and publish any apps from WinGet to Intune.
- WebSocket \ WebSocket is a small PowerShell module that helps you work with WebSockets.
- PesterExplorer \ Pester does a wonderful job printing out tests results as they're running. The difficulty can be where you're looking at a large number of results. PesterExplorer creates a Text User Interface to explore Pester results.
Books, Media, and Learning Resources
- June 2025 Update for the Automating Microsoft 365 with PowerShell eBook \ The June 2025 update for the Automating Microsoft 365 with PowerShell eBook is now available. Coding automation with Microsoft 365 PowerShell can be challenging, but not with this book beside you. It contains hundreds of examples of working with Entra ID, Exchange Online, SharePoint Online, OneDrive for Business, Teams, and Planner using regular PowerShell cmdlets and the Graph APIs.
- using powershell to call llama3.2 and saving the file locally \ Scripts included
Community
- Building Fast Tools and Smarter Workflows with Justin Grote \ In this episode of the PowerShell Podcast, we welcome back Justin Grote, a Microsoft MVP and open-source powerhouse, for an in-depth and fast-paced conversation. Fresh off his PowerShell Wednesday presentation, Justin shares the thinking behind his latest innovations, including the creation of the high-performance ExcelFast module and his evangelism for dev containers and modern development workflows.
- Add enhanced splatting RFC draft by jborean93 \ Anyone interested in yet another attempt at trying to enhance splatting in PowerShell. I've tried to collate all the options proposed over the years with their pros/cons. Hoping to get any community feedback before trying to champion a proper RFC
- PowerShell + DevOps Global Summit 2025 \ The recordings from the PowerShell + DevOps Global Summit 2025 are starting to roll out on YouTube.
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- AI Shell Preview 4 Release! \ We're excited to share the latest preview release of AI Shell that includes new features and improvements based on your feedback.
Blogs, Articles, and Posts
- Learning Python via PowerShell - A turn to the dark side? \ PowerShell and Python are powerful programming languages with many similarities. While PowerShell is technically a shell scripting language (like Bash), functionally it has a lot more in common with Python, and can be used to generate scripts of equal complexity.
- Deploy and automatically update WinGet apps in Intune using PowerShell without Remediation or 3rd party tools \ In this blog post, I will show you how to use PowerShell and the WinGet module to install a specific or the latest version of software using Intune Win32 Detection and install scripts. This solution will automatically update your apps if updates are available without using Remediation, Enterprise App Catalog, or third-party tools.
- PowerShell Get-ItemProperty [with Examples] \ As a PowerShell administrator, I use the Get-ItemProperty cmdlet a lot. You can use this cmdlet to gather installed software information, access registry values, or retrieve file metadata, etc. In this tutorial, I will explain how to use Get-ItemProperty in PowerShell effectively with real-world examples that I’ve personally used throughout my decade-plus career with PowerShell.
- Simplifying Dell Command Warranty with PowerShell \ TLDR: Get-DellWarrantyInfo Function can be found here: garytown/hardware/Dell/CommandUpdate/EMPS/Dell-EMPSWarranty.ps1 In this post I’ll cover the Dell Warranty CLI tool they provide, and how I’ve converted it to use a “PowerShell Wrapper” to make it simple and useful.
Projects, Scripts, and Modules
- How to Get All Risky Users in Microsoft Entra \ Identifying risky users in Microsoft Entra is more than just a security best practice.
- Pi-hole Multi-Instance Control Dashboard \ Pi-hole Multi-Instance Control Dashboard with PowerShell Universal (free)
- \ Looking to simplify your module installation life? Well, look no further, just released the latest version of PSFramework.NuGet
Books, Media, and Learning Resources
- June 2025 Update for the Automating Microsoft 365 with PowerShell eBook \ The June 2025 update for the Automating Microsoft 365 with PowerShell eBook is now available. Coding automation with Microsoft 365 PowerShell can be challenging, but not with this book beside you. It contains hundreds of examples of working with Entra ID, Exchange Online, SharePoint Online, OneDrive for Business, Teams, and Planner using regular PowerShell cmdlets and the Graph APIs.
- Live PowerShell Coding: Improving ModuleExplorer with Joshua Dearing \ Let's code some PowerShell, live! Joshua Dearing, PowerShell Podcast guest and PowerSheller extraoirdinaire, will join me for some good old-fashioned pair programming.
Community
- Building Confidence and Community with PowerShell with Brock Bingham \ In this episode of the PowerShell Podcast, we sit down with Brock Bingham, a longtime PowerShell enthusiast, educator, and community advocate. Recorded live from PDQ Headquarters in Salt Lake City, Utah, this episode captures the high energy and camaraderie of a PowerShell Wednesday in person. Brock shares his journey from PowerShell beginner to mentor, his passion for community building, and the power of sharing knowledge with others.
- PowerShell 7.5 and DSC 3.0.0 with Jason Helmick \ What's new in PowerShell 7.5? Richard talks to Jason Helmick about the latest version of PowerShell. Jason talks about 7.5 being a version with plenty of community contributions and what that means for everyone. He also...
- A talk with the Angry Admin about VMWare, PowerShell, AI and more \ In this "Inside IT Automation" episode, Heiko has a conversation with Piotr Tarnawski aka AngrySysOps aka Angry Admin. They talk about VMware automations, PowerShell, AI and more.
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- v7.4.10 Release of PowerShell \ PowerShell 7.4.10 has been released
Blogs, Articles, and Posts
- Shorten Azure CLI commands in PowerShell without backticks \ Learn how to shorten Azure CLI commands in PowerShell using arrays and splatting. No backticks needed. Cleaner, safer, and easier automation.
- Microsoft Graph PowerShell SDK V2.28 Attempts to Restore Stability \ On May 10, 2025, Microsoft released V2.28 of the Microsoft Graph PowerShell SDK in the hope that the new version would fix a bunch of annoying problems that have dogged the SDK for several months. The first few days haven’t revealed any new problems and bug reports are being closed, so the signs are positive. But do test before deploying V2.28 into production.
- What are GitHub Copilot instruction files? A simple usage example \ In Visual Studio Code version 1.100, Microsoft introduced GitHub Copilot instruction files, which mirror the Rules feature in AI IDEs like Cursor and Windsurf. Instructions allow you to guide the AI assistant’s behavior by providing specific, context-aware directives tailored to your coding standards and project requirements.
- Get SharePoint List Column Details [Internal Name, Display Name, Data Type] Using PnP PowerShell \ A few weeks before, I developed a Power Apps application for a client that takes data sources as a SharePoint list. There are almost six lists, and each list has more than 20 fields. Due to some permission issues, we had to manually create all the lists and columns on the SharePoint site.
- How to Check if a PowerShell String Contains Special Characters (5 Easy Methods) \ Recently, I was working on a PowerShell script to validate user inputs, and I needed to check if strings contained special characters. This is a common requirement when validating usernames, passwords, or parsing data files. The challenge is that PowerShell treats many special characters differently since they have specific meanings in the language.
- Using Show-ObjectTree to browse PowerShell Objects \ You can use Get-Member to discover all Methods and Properties when working with Variables. But browsing them in your PowerShell Terminal is easier using Show-ObjectTree. In this small blog post, I'm having a busy week and preparing for my WorkplaceNinjasNL session next week, I will show you how that cmdlet works :-)
Projects, Scripts, and Modules
- IntuneMermaid \ This module was created to generate diagrams on Mermaid format for Intune assignments of profiles and applications.
Books, Media, and Learning Resources
- PowerShell: Creating viewer requested script 01 \ In this video, I will be demonstrating viewer requested script for modifying taskbar behaviors settings.
- How to Create Amazing Websites with Obsidian and GitHub \ In this episode of PowerShell Wednesday, we're joined by Joshua Dearing (aka Fortress) who delivers a fantastic, beginner-friendly walkthrough on how to build and publish a personal website using GitHub Pages.
Community
- PowerShell, Security, and the Path to Mastery. \ In this episode of the PowerShell Podcast, we bring you a special double feature! We chat with Bogdan Calapod live from PDQ HQ, a seasoned security expert and co-founder of Coda, who reflects on his path from hackathon projects to helping organizations secure their environments. Then, we sit down with Lucas Allman live from the PowerShell + DevOps Global Summit, where he shares his journey from podcast listener to conference presenter. Key topics in this episode include:
Fun
- PowerShell Terminal Setup \ I just got back from Midwest Management Summit (MMS MOA), and I was a little surprised how many people wanted to know how I setup my terminal. I figured that since I had to read a couple of blog posts to get exactly the setup that I was after, this deserved a blog post.
Events
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Blogs, Articles, and Posts
- Sudo for Windows (PowerShell) \ Sudo for Windows is a new way for users to execute commands with elevated privileges (as an administrator) directly from a non-relevant console session on Windows.
- How to Permanently Remove Mailbox Items with the Graph API \ Some new Graph APIs were announced on April 1 to close a feature gap with EWS. The new APIs permanently remove mailbox items and other objects, including folders, calendars, and calendar items. Permanent deletion means that items cannot be recovered through clients because they end up in the Purges folder in Recoverable Items. This article explains how the new APIs work, including a practical example.
- How to Check if a Variable is Null or Empty in PowerShell? \ While working on PowerShell scripts, you’ll often need to check if a variable contains data before performing operations on it. There are various methods for checking this. In this article, I’ll show you several methods to check if a PowerShell variable is null or empty.
- Export All Mailboxes in Microsoft 365 Using PowerShell \ Managing Exchange Online mailboxes is one of the most essential responsibilities for Microsoft 365 administrators. Whether you’re conducting audits, offboarding M365 users, or handling routine mailbox maintenance, having quick access to a complete and accurate list of mailboxes is vital.
- Using PowerShell to disable (audio) devices in Windows \ I often encounter this issue. I dock my laptop at a customer's location and start a Teams call with someone. No idea what audio device my microphone in Teams will be or what output device it will use, the built-in speakers of the monitor attached to the docking station? My Sony earplugs? In this small blog post, I will show you how you can search and disable a lot of (audio) devices at once using PowerShell :)
- PowerShell Format Number: Essentials Made Easy \ Discover the art of PowerShell format number and master the nuances of numeric formatting. This concise guide unveils tips for polished scripts.
- How Can You Dramatically Boost Exchange PowerShell Performance with Multi-Threading? - PUPUWEB \ Is Your Bulk Exchange Script Sluggish? Discover the Game-Changing PowerShell Parallelism! Optimizing bulk operations in Microsoft Exchange using
- The PowerShell Pipeline \ When I first started learning PowerShell, one of the most fascinating things to discover was the “pipeline”. I was already amazed with the data that I could gather by running commands, but using the pipeline took that to the next level.
Projects, Scripts, and Modules
- New version of EntraFIDOFinder is out now \ Now with over 15 new keys! It was a little slow last month, but this month they made up with adding 6 new Vendors too. For the module, most of the enhancements were on the backend, where I created a function to reorganize any keys that weren’t following the standard configuration.
- Oh My Posh update to non-module version \ After my latest (not so) regular update of installed PowerShell modules, I was surprised by a breaking change in the Oh My Posh module. Fortunately, a link to an online migration guide was displayed directly in the terminal to get me started, but it still took me some time to get it working again.
- dbatools v2.1.31 \ The community module that enables SQL Server Pros to automate database development and server administration
- Intune Primary User Mix Up \ Tired of one tech “owning” every Intune device? Use my quick PowerShell cleanup script and put the right users back in charge fast!
Community
- Growing with PowerShell and Community Support - Joshua Dearing \ In this episode of the PowerShell Podcast, we sit down with Joshua Dearing, aka Fortress, to explore his personal and professional growth through PowerShell, community engagement, and saying yes to new opportunities. Fresh off his first PowerShell Wednesday presentation, Joshua shares the story of how he overcame imposter syndrome, started his blog, and found confidence by getting involved in the PowerShell community. Key topics in this episode include:
Events
- Rolling Your Own Configuration as Code Toolset \ Lucas will demo his home-grown toolset which includes custom PowerShell modules for maintaining the environment, the Microsoft.PowerShell.SecretManagement module for managing automation credentials, GitHub for versioning and collaboration and good old Window Task Scheduler.
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Blogs, Articles, and Posts
- PowerShell: Changing Active Directory User Logon Names (Bulk) \ Active Directory users log on with their logon names and password. But what are the rules for assigning usernames? g.surname? surname? gsurname? What are the naming conventions?
- Automating Microsoft 365 with PowerShell Update #11 \ Update #11 for the Automating Microsoft 365 with PowerShell eBook is now available for subscribers to download. The eBook is now over 300 pages long and includes extensive coverage of using PowerShell to interact with Exchange Online, Teams, Planner, SharePoint Online, and OneDrive for Business data using workload modules or the Graph APIs (and Microsoft Graph PowerShell SDK).
- Check the Windows Server version to determine if an in-place upgrade to Server 2025 is supported \ Before upgrading to Windows Server 2025, check your existing Windows Server version to determine if an in-place upgrade is feasible. You can check the Windows version via the graphical user interface, Windows PowerShell, or the command prompt.
- How to Add Items to an Array in PowerShell (5 Simple Methods) \ Recently, I was developing an automation script to manage a large inventory of servers, and I needed to add items to an array as the script ran dynamically. The challenge is that PowerShell handles arrays differently than many other programming languages. In this tutorial, I will show you five proven methods to add items to
- Set Up Email Notifications for Application Credentials Expiry in Microsoft Entra \ Each organization registers applications in Microsoft Entra ID for various purposes, such as integrating third-party services, enabling Single Sign-On (SSO), or automating business processes. To ensure these applications function smoothly, they require credentials like client secrets or certificates, which are used to obtain access tokens and access organizational resources.
- Creating Intune Randomized Rollouts with Entra Group Membership \ In our org, we have around 40k devices. Rolling out policies in the Group Policy days was a little bit easier for us, as we weren’t hitting every device at once (way too many forests). The great thing about Intune, is that we can hit all the devices at once. The bad thing about Intune, is we can hit all devices at once!
- Using PowerShell to Find Outdated Ubuntu Containers \ With Ubuntu 20.04 LTS’s sunset on the horizon, my manager forwarded an email about the need to update all of our Docker images to version 22.04. He sent it out as an FYI, but I took a moment to context switch towards answering this question because I thought that I could figure this out quickly using a one-liner in PowerShell.
Books, Media, and Learning Resources
- PowerShell Using the Pipe Line \ Intro into the PowerShell Pipeline
- Build Amazing WinUI 3 GUIs with PowerShell in Minutes! \ Want to build stunning modern Windows GUIs directly from PowerShell? In this episode of PowerShell Pro Tips, Microsoft MVP Andrew Pla dives into the WinUIShell module — an open-source gem that lets you create slick WinUI 3 interfaces with just a few lines of PowerShell code.
Community
- Lessons in Leadership from PowerShell Pioneers Jeffrey Snover and Don Jones \ In this very special episode of the PowerShell Podcast, we sit down with two legends of the PowerShell world: Jeffrey Snover, the inventor of PowerShell, and Don Jones, bestselling author, teacher, and longtime PowerShell community builder. Recorded live at the PowerShell + DevOps Global Summit, this conversation is packed with personal insights, impactful moments, and the kind of storytelling that only Snover and Jones can deliver.
Events
- Rolling Your Own Configuration as Code Toolset \ Lucas will demo his home-grown toolset which includes custom PowerShell modules for maintaining the environment, the Microsoft.PowerShell.SecretManagement module for managing automation credentials, GitHub for versioning and collaboration and good old Window Task Scheduler.
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- PowerShell v7.5.1 \ Come and get the latest and greatest!
Blogs, Articles, and Posts
- Restrict and report logon hours for Active Directory accounts \ For security purposes, it may be beneficial to restrict Active Directory account logins to regular working hours. These logon times can be configured using the calendar widget in Active Directory Users and Computers (ADUC). However, PowerShell provides a more efficient and flexible alternative, particularly because it offers reporting capabilities that the graphical interface does not.
- How to Report the Sponsors of Entra ID Guest Accounts \ Entra ID populates the sponsor property for new guest accounts with details of the person who invites the guest to the tenant. It's data that can be used for different purposes, such as having someone to justify the continued presence of a guest account in a Microsoft 365 tenant. This article explains how to report guest accounts and their sponsors with some straightforward PowerShell.
- Why aligning equals signs in PowerShell hash tables matters \ If you ever formatted a hash table in PowerShell, you know how easy it is to focus on function over form. But what if one minor formatting tweak could improve readability, reduce syntax errors, simplify code reviews, and enhance script maintainability?
- Windows PowerToys 2 in 1 Short cuts \ In Windows 11 there’s a really powerful set of tools called “Microsoft PowerToys“. Within the features there’s a section to make your own shortcut hot keys under “Keyboard Manager”
- Tab completions in PowerShell \ While learning about Fast Node Manager, I noticed completions for PowerShell being mentioned in the documentation. I wasn't aware of completions beyond filenames and cmdlets were even supported in PowerShell. I decided to try them out with Fast Node Manager first and then check if they are available for other command line tools I regularly use.
- How to post on Bluesky with PowerShell \ I wanted to know how to use the Bluesky APIs and PowerShell for new posts (or Skeets). Bluesky has published a sample to post via code, also they have very good documentation about their API.
Books, Media, and Learning Resources
- Video: Windows Server App Control and Azure Arc \ Are you looking for ways to enhance the security of your Windows Server environment? In this video, we explore how to leverage App Control to secure your Windows Server and manage it at scale using Microsoft Azure Arc.
- PowerShell Execution Policy: A Comprehensive Guide \ Have you encountered an error “execution of scripts is disabled on this system” while trying to run a PowerShell script? I am sure you must have at least at the beginning. This is because of PowerShell’s execution policy settings. In this article, I will walk you through everything you need to know about PowerShell execution
Community
- The Powershell Podcast Summit sessions with Adam Rivera, Asmar Fontenot, & Luis Orta \ In this episode of the PowerShell Podcast, we bring you another Summit Sessions special recorded live at the PowerShell + DevOps Global Summit 2025! This episode is a celebration of first-time attendees, newcomers to the PowerShell community, and those discovering their voice in tech. Andrew Pla sits down with passionate IT professionals who share their personal stories of growth, connection, and finding purpose through PowerShell and community.
Fun
- PSPodcast \ A few commands to get and display information of episodes of The PowerShell Podcast.
- Basically me to my new coworkers this week. \ 100% agree!
Events
- Rolling Your Own Configuration as Code Toolset \ Lucas will demo his home-grown toolset which includes custom PowerShell modules for maintaining the environment, the Microsoft.PowerShell.SecretManagement module for managing automation credentials, GitHub for versioning and collaboration and good old Window Task Scheduler.
- PowerShell Conference Europe 2025 \ 23-26 June 2025
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- Important Purview eDiscovery Changes Take Effect in May 2025 \ Microsoft is making some important changes to Purview eDiscovery from May 26, 2025. The changes affect how content searches work and are likely to affect many Microsoft 365 tenants. Administrators and eDiscovery investigators will both have to master new ways of working with eDiscovery cases, searching for information, reviewing search results, and exporting what’s found. Changes to PowerShell cmdlets might affect scripts, so there’s lots to consider.
- PowerShell, OpenSSH, and DSC team investments for 2025 \ Come read about the investments Microsoft has planned for PowerShell in 2025.
- PnP PowerShell v3 released! \ It has been in the works for a long time, but finally we’re excited to announce that PnP PowerShell 3.0 has been released.
Blogs, Articles, and Posts
- Microsoft Attempts to Fix Microsoft Graph PowerShell SDK Problem with Azure Automation \ V2.26 and V2.26.1 of the Microsoft Graph PowerShell SDK were low-quality, buggy disasters. Microsoft aims to fix the problem in the next version to make it possible for the SDK to work with Azure Automation runbooks again and address many of the obvious problems that should never have appeared outside Microsoft. It will take time for customer confidence to be restored.
- Build your own natural language interface for PowerShell using the Azure OpenAI API \ This article presents a PowerShell script leveraging the Azure OpenAI API, enabling you to execute PowerShell commands using natural language. A key benefit compared to comparable AI tools like ShellGPT is the ability to customize the script.
- Vibe Coding: How I Built a 120K Line App Without “Learning to Code” \ Building real applications with AI isn't just for developers anymore. Here's how I went from PowerShell scripts to a full-stack React/Express app by embracing "vibe coding" with AI.
- Create a Catalog of Windows Update Data using Microsoft Graph \ For some time I have run my own reporting solution for Windows Updates since I’ve never really been happy with the canned reports Microsoft have created in Intune and Windows Update for Business reports, even to this day.
- How to Append Text to Files in PowerShell \ As a PowerShell user, I’ve found that one of the most common tasks is writing data to files, especially appending content to existing files without overwriting previous information. This will be helpful in scenarios such as creating logs, generating reports, or saving script output, etc. In this tutorial, I’ll walk you through the different methods
- Practical AI: Managing My Travel Calendar with PowerShell \ AI is supposed to make our lives easier, so how about writing some PowerShell to block out timeslots in a travek calendar when the calendar's owner is on the move? Eventually AI gets the task done, but it needed some coaching and firm instruction along the way.
- Using the Get-NetView PowerShell Module for Network Troubleshooting \ Collecting enough logs and information from a system with networking issues can be difficult. You always need just one more to troubleshoot the problem. ;-) In this blog post, I will show you how the built-in Get-NetView module can help you collect all the necessary logs and information.
Projects, Scripts, and Modules
- AutoCategorizerPS \ A series of scripts that perform zero-shot (untrained) data classification using AI.
- Metro.AI.PowerShell \ Metro-AI is a unified PowerShell module that streamlines management of Azure AI Agent and Assistant APIs.
- psBluesky v2.6.0 \ Heads up PowerShell PSBluesky users, time to update the module. Thanks to @wragg.io for adding StarterPack commands.
Community
- The PowerShell Podcast Summit 2025 - Missy, Leslie, & Hailey \ In this episode of the PowerShell Podcast, we bring you a special edition live from the PowerShell + DevOps Global Summit 2025 — the Summit Sessions! This episode is packed with energy, community stories, and career inspiration as Andrew Pla chats with community leaders, organizers, and first-time contributors about what makes this event and the PowerShell community so special.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- v7.6.0-preview.4 Release of PowerShell \ Come test out the latest release.
Blogs, Articles, and Posts
- PowerShell script: BgInfo deployment script for Windows Server 2025 \ In this blog post, I’ll show you how to deploy and configure the latest version of BgInfo on a serverContinue Reading
- Build your own natural language interface for PowerShell using the Azure OpenAI API \ This article presents a PowerShell script leveraging the Azure OpenAI API, enabling you to execute PowerShell commands using natural language. A key benefit compared to comparable AI tools like ShellGPT is the ability to customize the script.
- Mastering Error Handling in PowerShell: Try, Catch, and Finally \ Error handling is a critical aspect of writing robust scripts in any programming language. PowerShell provides a powerful structure for handling errors gracefully using try, catch, and finally blocks.
- Automate Your Virtual Infrastructure Management: A Handy PowerCLI Script for On-Call Situations \ Imagine a scenario where a power outage or building power-up event causes your ESXi hosts to remain in maintenance mode.
- Practical Graph: Running Audit Log Searches with the AuditLog Query API \ After a year or so of using the AuditLog Query Graph API, we have enough experience to be able to explain how to take advantage of the API and when it could be used to run audit searches instead of the Search-UnifiedAuditLog cmdlet. There's lots of PowerShell code in this article to give anyone who wants to experiment with the API a good start to finding audit events.
Books, Media, and Learning Resources
- Create a Web Server on the fly using PowerShell with James Brundage \ Join Microsoft MVP James Brundage for a look at how you can create a fully functional web server in just 50 lines of PowerShell code! 🚀 Come see the potential of transforming PowerShell scripts into dynamic web front ends, setting the stage for your next development project. Don’t miss it!
Community
- PowerShell Summit Bar Sessions 2025 - David R \ In this casual bar-session chat recorded at the PowerShell + DevOps Global Summit 2025, host Andrew Pla sits down with David R, a first-time attendee with a passion for learning PowerShell. David shares how the PowerShell Podcast itself inspired him to attend and helped shape his scripting journey. What began as a work assignment turned into a powerful learning path, community connection, and a personal transformation.
- Discovering the Deeper Layers of PowerShell with Jeff Hicks \ In this episode of the PowerShell Podcast, we’re joined by the legendary Jeff Hicks, PowerShell educator, author, speaker, and community pillar. With decades of experience shaping the PowerShell landscape, Jeff returns to the podcast to share insights from his latest projects, discuss the evolution of the community, and offer wisdom for both new and experienced PowerShell users. From PowerShell Summit to writing foundational books and building up new contributors, Jeff continues to play a critical role in shaping the PowerShell ecosystem.
- PowerShell Summit Bar Sessions 2025 - Frank Lesniak \ In this episode of the PowerShell Summit 2025 Bar Sessions, Frank Lesniak makes a triumphant return to the podcast. Frank has taken the reigns In this two-sided interview, Frank flips the script and interviews Andrew, but only after we talk about how his week is going, fine dining, how to grow in your career and capitalize on opportunity, the value of empowering others, and more!
- PowerShell Summit Bar Sessions 2025 - Steven Judd \ In this episode of the PowerShell Summit Bar Sessions we talk with Steven Judd. We talk about Summit, Sean Kearney Spirit award, community, career, and more!
- Writing Better PowerShell with Jeff Hicks \ How do you write better PowerShell? Richard talks to Jeff Hicks about his latest book, Behind the PowerShell Pipeline, and his efforts to promote writing PowerShell scripts that are easy to understand, use, and maintain! Jeff...
Announcements!
- PowerShell + DevOps Global Summit 2025 \ The summit starts on Monday! I can’t wait to see a bunch of you there!
Blogs, Articles, and Posts
- How to Check CPU Temperature Using PowerShell Command \ Let's check real-time CPU temperature logging using powershell command. In this guide we have discuss best powershell command to monitor CPU temp.
- Duplicate Mail User Objects Created for Guest Accounts \ The February 2025 EX1015484 incident explains why mail user objects with duplicate SMTP addresses are created for guest accounts. That’s a problem because Exchange Online can’t route messages to objects with duplicate email addresses. Fortunately, you can find out if any duplicates exist in your tenant with some PowerShell. Problems happen!
- How to Find Who Assigned Retention Labels to SharePoint Files \ A reader asked if it's possible to discover who made retention label assignments for SharePoint files. The Files Graph API can't tell you who (or what policy) made retention label assignments, but it’s possible to find this information in the audit log and use that data to report the requested information. All with a few lines of PowerShell!
Projects, Scripts, and Modules
- TeamViewerPS v 2.2.0 \ TeamViewerPS allows to interact with the TeamViewer Web API as well as a locally installed TeamViewer client.
- PSCalendar v2.10.1 \ A set of PowerShell commands for displaying calendars in the console. The module is compatible with Windows PowerShell and PowerShell 7.
- Creating a No-Prompt ConfigMgr Boot Image ISO \ Here are two PowerShell scripts that can be used to create a No-Prompt ConfigMgr Boot Image ISO. This is particularly useful when performing large-scale deployments of virtual machines, or for any automation related to VM deployments, such as our Image Factory solution for ConfigMgr.
Books, Media, and Learning Resources
- PowerShell best practices for Intune: Error Handling \ In the next part of our PowerShell best practices series, we go over how to get started with error handling.
Community
- Contribute a tip (now available via PR template) \ Have a PowerShell tip you want to share? Know of a great module, blog post, or community event that you think others should know about?
- From Proper Football to Databases with Jess Pomfret \ In this episode of the PowerShell Podcast, we reconnect with Jess Pomfret, a PowerShell and SQL Server powerhouse, LinkedIn Learning instructor, and community advocate. From her early days in England to becoming a respected speaker and consultant, Jess shares her journey into tech, her passion for automation, and the importance of mentorship, curiosity, and community.
- MVP Summit 2025 \ This year was my first in-person MVP Summit at the Microsoft Campus in Redmond. In this blog post, I will highlight a few things about the week, but... I won't share any details about the sessions because of the non-disclosure agreement (NDA). :)
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- Docker images containing PowerShell now maintained by the .NET team \ For years, the PowerShell team has maintained official PowerShell Docker images. Moving forward, we are using the Docker images produced by the .NET team.
Blogs, Articles, and Posts
- Install IIS and PHP 8.x on Windows 11 and Server 2025 (Core) \ PHP is still available on Windows despite Microsoft no longer providing support for version 8.x. It can be integrated as a script engine into Internet Information Services (IIS), either through the graphical IIS Manager or via PowerShell, which is especially useful for Server Core installations.
- Using Windows Terminal Chat with GitHub Copilot \ Terminal Chat enables the integration of GitHub Copilot, Azure OpenAI, and OpenAI's AI services into Windows Terminal Canary. Through this experimental feature, you can request assistance from an AI for your PowerShell commands and directly execute the AI's recommendations in the terminal.
- AI-powered administration in the terminal without cutoff date using OpenAI GPT-4o Search in PowerShell and Warp \ The GPT-4o Search model offers search engine functionality similar to ChatGPT Search or Perplexity when accessed via the OpenAI API. With the free OpenAI Python Library, you can enhance your terminal AI by adding online search features, overcoming the limitations of LLM cutoff dates, and eliminating the frustration of outdated instructions.
- Artificial Intelligence, PowerShell, and Microsoft 365 Administration \ Artificial Intelligence and PowerShell should be a good thing to help hard-pressed Microsoft 365 tenant administrators cope with common tasks. The early signs are there with Copilot in the Microsoft 365 admin center. However, the current state of the art depends on what’s gone before and can’t handle the kind of complex automation that tenants sometimes need, like generating a licensing report from Entra ID, product information, and license costs.
- Launching Start Menu apps using PowerShell \ Sometimes, you want to run a few applications as a different (Admin) user on your system. Usually, I do that by (Shift) Right-clicking applications, etc... In this small blog post, I will show you a simple way to start multiple applications using PowerShell, making life somewhat easier ;-)
- Identify and Block Sign-in for Shared Mailboxes in Microsoft 365 \ Shared and resource mailboxes in Microsoft 365 are designed for collaboration, not for direct sign-ins. However, if sign-in remains enabled, attackers could exploit these accounts to bypass security policies, send unauthorized emails, or access confidential data—posing a serious compliance and security risk.
- New MiToken Graph PowerShell module for multi-tenant apps \ Connect to multi-tenant apps using a managed identity using Microsoft Graph PowerShell with the MiToken PowerShell module.
- Human Readable File Sizes in PowerShell \ Simple way to humanize a file size in powershell
Projects, Scripts, and Modules
- PSScriptTools v3.0.0 \ A set of PowerShell functions you might use to enhance your own functions and scripts or to facilitate working in the console. Most should work in both Windows PowerShell and PowerShell 7, even cross-platform.
- AiLogging v 2.0.5 \ Helper module for PowerShell developers that allows easy logging of script activity to Azure Application Insights
Books, Media, and Learning Resources
- PowerShell 20 Basic Commands and Their Uses - Izoate Tech \ Learn the 20 basic PowerShell commands for beginners to manage files, processes, and system tasks efficiently with this easy-to-follow guide.
- Automating Excel with PowerShell: Practical Tips from a Microsoft MVP \ Doug Finke, a 16-time Microsoft MVP and author of "PowerShell for Developers", demonstrates how to streamline Excel report creation using his widely popular PowerShell module, ImportExcel, with over 11 million downloads. Doug shares straightforward methods for automating Excel tasks—from formatting and filtering data, to generating conditional formats, pivot tables, and charts—saving you valuable time and effort. You'll also get practical examples for combining data from multiple sources, quickly reorganizing spreadsheets, and troubleshooting common Excel automation challenges.
Community
- How to Build an IT Career from the Ground Up with Kevin Apolinario (KevTech) \ In this episode of the PowerShell Podcast, we welcome Kevin of KevTech IT Support, a well-known mentor and educator in the IT community. With a background in fast food and law enforcement, Kevin shares his inspiring journey into IT and how he leveraged mentorship, home labs, and community engagement to build a thriving career. We dive into help desk fundamentals, breaking into IT, career development, and Kevin helps give you a map to career success.Key topics in this episode include:
Events
- PowerShell + DevOps Global Summit 2025 \ April 7-10, 2025 Bellevue, WA
Blogs, Articles, and Posts
- Mastering Active Directory Hygiene: Automating SIDHistory Cleanup with CleanupMonster \ Security Identifier (SID) History is a useful mechanism in Active Directory (AD) migrations. It allows users and groups in a new domain to retain access to resources that still rely on permissions from the old domain. However, once migrations are completed, these historical SIDs can become clutter, posing both security and administrative challenges.
- SharePoint Online PowerShell Module Gets Modern Authentication \ Microsoft has announced that the SharePoint Online PowerShell module will be upgraded from the very old and now obsolete IDCRL protocol to use modern (OAuth) authentication in versions released from March 28, 2025. The update to OAuth should not affect scripts, but it’s always wise to test in case your use of the module is an edge case that Microsoft doesn’t test.
- EntraFIDOFinder now with over 50 new keys! \ I guess I should be careful what I ask for now.. Not sure if you saw, but when Microsoft first made this update it blew up my repo with over 100 issues due to all the changes and I assumed Microsoft had changed how they formatted their website, but they hadn’t.
- Ensure a Function Should be Invoked \ it’s been a long time since I’ve written; I know. I still use PowerShell at every opportunity; I just don’t write about it like I used to. An average of a post per week for nine years, which is what I managed previously, wasn’t always something I planned to maintain.
- ShellGPT for PowerShell: AI assistant with local Ollama support \ In this guide, I’ll walk through installing ShellGPT (shell_gpt) – a command-line AI assistant – on PowerShell using a local Ollama LLM. This approach lets you use AI in your terminal without relying on cloud APIs, which is great for privacy. This review highlights the use of ShellGPT on Windows through PowerShell. If you are using Mac or Linux, check out our earlier review of ShellGPT.
- How to update multiple Hyper-V VMs offline \ In environments with multiple VMs running the same Windows version, powering down the Hyper-V VMs during a maintenance window is usually the most efficient way to update them offline. This involves mounting the virtual disk and installing updates through PowerShell. This approach also benefits VMs that have been powered off for an extended period. Instead of starting them in an outdated and potentially vulnerable state, you can apply critical security updates in advance.
- How To Extract Mailboxes From EDB File \ Sponsored – Exchange Server Database (EDB) files consist of the emails, contacts, notes, calendar, and other crucial mailbox items. Several reasons may prompt you to extract these mailboxes from EDB file.
- Reinventing PowerShell in C/C++ – SCRT Team Blog \ Reinventing PowerShell in C/C++: Bypassing Security FeaturesThe article demonstrates creating a full PowerShell console using native C/C++ code, bypassing security features like AMSI and Constrained Language Mode.
- Windows Server Core – Command Line Only Administration \ Run Windows Server Core in 2025—CLI setup, roles, remote ops, FAQs. Full guide for IT pros. Master it now!
Projects, Scripts, and Modules
- Auto Archive Inactive Teams in Microsoft Teams \ Each project in an organization follows a lifecycle, including start, execution, and completion. However, even after a project ends, the corresponding team often remains in the execution phase, leading to a growing number of inactive teams in Microsoft Teams.
- Dynamics 365 F&O IAM PowerShell Module \ Over the years I’ve written many an integration with identity sources. Dynamics 365 F&O though is one that has come up a number of times. With that in mind I’ve written a PowerShell Module to expose and simplify integration with Dynamics 365 F&O for Users and Roles.
Books, Media, and Learning Resources
- Inside IT Automation | E20 \ Microsoft MVP Doug Finke talks about the state of AI and PowerShell
Community
- Exploring PowerShell for Physical Security and Automation with Cody Paternostro \ In this episode of the PowerShell Podcast, we welcome Cody Paternostro, a rising star in PowerShell automation, to discuss his unique journey into IT, the power of persistence in learning, and his work on RemotePro, a sophisticated PowerShell-based security camera management tool. Cody shares how he transitioned from food delivery to IT, leveraged PowerShell to streamline operations in physical security, and how asking the right questions helped accelerate his growth.
- PowerShell Community Award Nominations \ Nominate a deserving community member today! Submissions close April 3, 2025, at 5 PM ET
Events
- PowerShell + DevOps Global Summit 2025 \ April 7-10, 2025 Bellevue, WA
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Announcements!
- Announcing Microsoft Desired State Configuration v3.0.0 \ This post announces the release of Microsoft Desired State Configuration v3.0.0. We discuss the features and benefits of DSC and how it differs from PowerShell DSC.
- PowerShell Community Award Nominations \ Nominate a deserving community member today! Submissions close April 3, 2025, at 5 PM ET
Blogs, Articles, and Posts
- Get started with Microsoft Desired State Configuration v3.0.0 \ This post show you how to install DSC v3.0.0 and get started using the dsc command.
- Authoring Enhancements in Microsoft Desired State Configuration v3.0.0 \ This is the third post in a multi-part series about the new release of DSC. Microsoft Desired State Configuration (DSC) v3.0.0 provides powerful feature that enhance the authoring experience. Shell completion Schema-based validation Support for modern DSLs like Azure Bicep DSC command completer The completer command returns a shell script that, when executed, registers completions
- PowerShell: The new Entra ID Module \ The new PowerShell Entra ID Module is a powerful tool designed to streamline the management and automation of Microsoft Entra resources.
- SharePoint Online PowerShell Module Gets Modern Authentication \ Microsoft has announced that the SharePoint Online PowerShell module will be upgraded from the very old and now obsolete IDCRL protocol to use modern (OAuth) authentication in versions released from March 28, 2025. The update to OAuth should not affect scripts, but it’s always wise to test in case your use of the module is an edge case that Microsoft doesn’t test.
- Optimize and customize Windows 11 with PowerShell and Winhance \ Winhance is a PowerShell utility for optimizing and customizing Windows 11. It enables users to remove unwanted software, prevent reinstallation, and enhance system privacy and performance settings.
- How to Check Who Deleted Emails from Shared Mailbox in Microsoft 365 \ With multiple users having access to Microsoft 365 shared mailboxes, the risk of important emails disappearing is a real challenge. A single missing email can disrupt client interactions or halt progress in collaborative projects. Therefore, this blog will show you how to monitor shared mailbox email deletion to identify who…
- Practical Graph: Nag Users to Upgrade to a Strong Authentication Method \ Convincing people to use MFA is one challenge. Convincing them to use a stronger authentication method than SMS is another. This article explains how to use PowerShell to find people still using SMS for MFA and send email to ask them to upgrade their authentication method.
- How to manage most Rest APIs with just a few PowerShell functions \ A cmdlet around the endpoint, or a cmdlet per method? Disclaimer: every REST API works different, so this script should be an example of how you can build a function for each REST API. Nowadays there are more and more Rest APIs that we can use instead of Cmdlets (which use the Rest API in … Continue reading How to manage most Rest APIs with just a few PowerShell functions
Projects, Scripts, and Modules
- Get-MacInfo 2.0.1 \ A macOS version of the Get-ComputerInfo module
Books, Media, and Learning Resources
- Find retiring Azure features and address them safely en masse with PowerShell \ See how to find which of your Azure resources will be impacted by upcoming Azure retirements. I also show an approach to targeting updating specific Azure resources, allowing you to more safely modify resources en masse, such as by environment, with PowerShell and the Az PowerShell module. There are other ways to do this as well; this is just one workflow I often use.
- PowerShell: Summarizing YouTube transcripts with AI \ In this video, 16-time Microsoft MVP Doug Finke demonstrates the PSAI PowerShell module to summarize Scott Hanselman’s NDC London 2025 AI keynote.
Announcements!
- Microsoft Graph PowerShell SDK V2.26.1 Remains Flawed \ The developers rushed out Version 2.26.1 of the Microsoft Graph PowerShell SDK to fix some obvious issues. Alas, problems persist in PowerShell SDK cmdlets, including licensing failures and an issue that prevents the Connect-MgGraph cmdlet from being able to obtain an access token from Entra ID. My advice is to stay with V2.25 until Microsoft resolves the problems and generates a new stable version of the SDK.
Blogs, Articles, and Posts
- The not so simplified syntax of Where-Object in PowerShell \ PowerShell 3.0 introduced several notable improvements to its cmdlet library, with one of the most useful features in this release being the simplified syntax for the Where-Object cmdlet. This enhancement made filtering objects more efficient and user-friendly by introducing Property and Value parameters and a switch parameter for every comparison operator. This article explores how these changes work, their usefulness, and how to leverage them in your scripts.
- EntraFIDOFinder March Update \ We are in March, and looks like no new major changes. I may have to start sending this update out later in the week, as I’m wondering if Microsoft hasn’t updated their page yet. Some things I did notice were that a few of the YubiKey names slightly changed on the FIDO Alliance database
- Warp for Windows \ We have reviewed Warp's Mac and Linux versions multiple times, as it stands out as the top terminal application. The newly released Windows edition introduces AI-driven automation for PowerShell administrators.
- AI-powered Azure Function for querying Azure in natural language \ In this post, I introduce an AI-powered Azure Function that connects to the Azure OpenAI API. This Function allows you to execute queries in natural language to fetch Azure resource information without requiring a deep knowledge of the Azure Resource Graph Query Language (KQL).
- Retrieve End of Life information using PowerShell \ One of the things that I do when writing documents for customers is check if the products I advise or the customers use are still supported. The end-of-life date is essential, and in this blog post, I will show you how to retrieve that information quickly :)
- Practical Protection: Automating Inactive Account Blocking with PowerShell \ Inactive accounts aren’t glamorous, but they’re a real risk! In this episode of Practical Protection, we dive into the basics of inactive account blocking and share some PowerShell scripts to help automate this process.
Projects, Scripts, and Modules
- Announcing AI Shell Preview 2 \ We are pleased to share a new preview release of AI Shell!
- Create Entra ID Guest invite using PowerShell and Graph API \ It’s easy to create an Entra ID guest account using the interface. But as usual, the automation and bulk are the challenges. In Entra ID, there is the option to create bulk invitations, but I still find it limited.
- Dayforce PowerShell Module \ A foundational Dayforce PowerShell Module to query Employee data.
Community
- PowerShell as a Defender’s Secret Weapon with Michael Haag \ In this episode of the PowerShell Podcast, we sit down with Michael Haag, Principal Threat Researcher at Splunk, to dive into PowerShell security, threat detection, and automation. Michael shares his journey from IT support to becoming a security expert, the role of PowerShell in modern cybersecurity, and his work on PowerShell Hunter and Atomic Red Team.
Events
- PowerShell + DevOps Global Summit 2025 \ April 7-10, 2025 Bellevue, WA
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
No Azure DevOps automatically increments it every time you run the pipeline.
Just looking at it from the point of view of making the script more portable and easier for someone else to run, there are a few things I would address.
The first is the Write-Host
commands all over the script. I would recommend converting those to Write-Verbose
. Here is a great explanation when to use Write-Host
vs other outputs.
There are also numerous Write-Output
commands in the script. Anything sent to the Write-Output
will be returned to the calling console. If you need to take additional actions based on the results of this script, this could cause issues. You can run into problems with the New-Item
commands in there too, as they will produce output. You might consider saving them to a variable or piping to Out-Null
.
Also, there is no need to call exit and set an exit code in the way you are. If you want to write and error but have the script continue you can use, Write-Error
. If you want the processing to terminate then use throw
. Doing it this way will allow PowerShell’s built-in error handling to take care of the exit codes. It will also give you greater flexibility with using Error Action Preferences and using try/catch statements.
Finally, you have a path hardcoded for the workingDir. I would suggest making this a parameter or using an environment variable as this will make it more portable. Also, when creating the log variable, you will want to use the Join-Path cmdlet instead of just joining strings.
If I understand correctly, the signatures generated by PuTTY aren’t perfectly random, so if someone got a hold of a bunch of keys from a server, they could figure out the pattern. It takes about 60 keys. This affects not just PuTTY, but also FileZilla, WinSCP, TortoiseGit, and TortoiseSVN.
In other words if you have NIST P-521 keys, or any others using 521-bit ECDSA, you should revoke them and generate new key pairs. After you update your software.
I installed some security cameras around my house and set up Shinobi using an old PC. Unfortunately the PC is too old to use the built-in detectors in Shinobi. So, I took my first dive into playing around with some image detectors.
I wrote some python to download the daily recording from old PC to a newer one with a 3080 GPU. Then checks the videos for people. It will then trim the videos to only include times were there are people in frame. It cut my the storage requirements by over 95%.
For some reason their API would not return anything for assembly. I was curious to see where it would rank too,
Apparently it due to an issue with Kotlin - https://github.com/code-golf/code-golf/issues/151#issuecomment-1126266250
Biggest things I'm seeing is CVE-2023-21709 for Exchange requires a PowerShell script to be run after patching. Also, CVE-2023-29328/29330 for Teams affect all devices (Windows, Mac, iOS, and Android).
The book I wrote. When I first talked with the publisher he asked, "what skills would you look for in someone who wants to do your job?" And that's the premise I stuck with writing it.
I feel down a rabbit hole, a few years ago wonder the same thing about C#. Here is what I found.
- C# was developed in 2000 as a successor to C++. Doubling the ++ to a #.
- C++ was developed in the early 80s as a successor to C. Adding plus (+) to a name was a common way of indicating it was an enhancement. Also ++ is the incrementing operator for C.
- C was developed in the early 70s as a successor to the B programming language. C comes after B.
- B was developed in 1969 and was derived from the BCPL language. Basically, B was a stripped down version of BCPL.
- BCPL (Basic Combined Programming Language) was developed in 1967 and was a designed as an simpler version of CPL.
- CPL (Combined Programming Language) was developed in the early 60s at Cambridge. The original name was "Cambridge Programming Language" but was changed to Combined when it was published jointly with the University of London.
Interesting. As someone who mainly deals in PowerShell, this is very similar to the Where-Object clause and could save me some headaches when I need to work in Python.
From personal experience, it seems like things outside of your normal listening don't affect too much. At least in my case, my daughter making me play the Encanto soundtrack 250,000 times hasn't affected my weekly or daily playlists.
That's pretty similar with what happened with me and the train. Kept getting random drops from a plant. I went out to investigate and everything tested perfect and the network was staying up. That was until a freight train rolled by. Turns out AT&T had run the line by shoving a piece of PVC through the gravel between two cross-ties, then running the cable through it.
I've actually had an excavator take out my network. I've also had networks taken out by forklift, train, and a semi-truck towing three other semi-trucks.
Basically every Windows sysadmin is indebted to Mark Russinovich and SysInternals. Fortunetly, PowerToys has come a long way because I'm pretty sure sysinternals haven't been updated since Windows XP.
I've been using WordPress on Bluehost for a few years. I'm looking to move to something like Jekyll. Pretty much everything I get from WordPress can be done with a like JavaScript and Jekyll. There are plenty of examples out there of building it off of GitHub actions.
I also do NOT recommend Bluehost. I was having issues with my site going down for no reason a while back. I contacted their support to see what was going on and they told me it wasn't on their end. And guess what, it was on their end. Ended up catching the guy in a lie. Just been trying to find the time to move everything off of them.

Father, author, blogger, enthusiast of all things PowerShell and automation. http://linktr.ee/mdowst