pwshguy

joined 2 years ago
MODERATOR OF
 

Announcements!

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

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!

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

 

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

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

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Announcements!

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

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

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

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Announcements!

Blogs, Articles, and Posts

  • Terminal Chat now included in GitHub Copilot Free
    Windows Terminal Canary users can now use Terminal Chat with the GitHub Copilot Free plan! GitHub Copilot Free is limited to 50 chat messages per month. This includes the usage of Copilot in the CLI, VS Code, and Visual Studio.
  • Microsoft Graph PowerShell SDK Runs into Choppy Waters
    A bunch of problems with V2.26 of the Microsoft Graph PowerShell SDK V2.26 make the software unusable. Not only did Microsoft do a horrible job of testing the new release before making it available to customers, but they also failed to communicate the level of change in the new SDK and how it could impact Azure Automation runbooks.
  • Practical Graph: Creating SharePoint News Items from an RSS Feed
    This article explains how to use the SharePoint Pages API to create new site pages with the Microsoft Graph PowerShell SDK after reading information from an RSS feed. Parsing the RSS feed to find article details is just one of the challenges encountered and solved to accomplish the goal.
  • Practical PnP: Automating Teams Creation using Templates
    In this installment of Practical PnP, Sean McAvinue dives into how PnP PowerShell can help to improve automated Teams provisioning using templates and preset structures.
  • Using Warp as PowerShell terminal
    This week, after the official Windows release of Warp on February 26th, I saw many YouTube clips of the new Terminal app. I decided to try it and see what it does differently from my trusty Windows Terminal app. This blog post will show you my first impression of the application.
  • 25 Years of Active Directory and my PowerShell experience managing it
    This week, on the 17th of February, Active Directory celebrated its 25th birthday :) I will share my experience managing it with PowerShell in this blog post.
  • Understanding OAuth: Coding the authentication flow yourself vs using an SDK
    Dive into Microsoft Graph authentication with PowerShell. In this blog we explore OAuth flows, PKCE security, and token handling. Learn how to build a secure auth flow from scratch and why the SDK might still be the best choice for automation.
  • Export All App Registrations with Certificates and Secrets in Microsoft Entra
    Imagine spending your afternoon sifting through dozens of app registrations in Entra ID to determine which ones are still active, and which are relics from past projects. As an admin, you know that applications use certificates and secrets for app registrations to securely authenticate—but many of these credentials persist
  • How to stringify nested Json in PowerShell and back to a PSObject
    Stringify dynamic child properties in Json with PowerShell I had a fun one yesterday that I want to share here. We have a database at work (new job at InSpark), in the database we have a table in which we can create a row ourselves by making a request via a put method. The row … Continue reading How to stringify nested Json in PowerShell and back to a PSObject

Projects, Scripts, and Modules

Community

  • MS Graph and Stepping into Public Speaking with Morten Kristensen
    In this episode of the PowerShell Podcast, we sit down with Morten Kristensen, an automation specialist and PowerShell enthusiast, to discuss his journey with PowerShell, his experience working with the Microsoft Graph API, and his recent leap into public speaking. Morten shares insights from his first-ever technical talk, the challenges of working with Graph API, and how he's navigating his professional growth.

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Blogs, Articles, and Posts

  • Processing Multiple Message Attachments with the Microsoft Graph PowerShell SDK
    Many examples are available online to explain how to add a single attachment to messages using the Microsoft Graph PowerShell SDK. Here we look at the principles behind how to add attachments (one or many) to messages before sending them with the Send-MgUserMail cmdlet. Get the principles right and you’ll never go wrong!
  • A Mini Dive into the Microsoft Entra PowerShell Module: An Intune Administrator’s Perspective
    In this post, we'll analyse the Entra PowerShell module's authentication implementation and discuss whether it's necessary for your Intune automation needs if you're already using the Microsoft.Graph.Authentication module, part of the Microsoft Graph SDK, to handle your tokens.
  • Retrieve blocked DNS queries from PiHole using PowerShell
    I use PiHole for Ad-blocking at home, and yes, sometimes that causes some issues if it blocks Microsoft (Or other) management addresses. In this blog post, I will show how you can live-track blocked DNS queries and get some insights while troubleshooting :)
  • Practical PowerShell: Parameter Input Validation
    In previous Practical PowerShell articles, Michel discussed using parameters in advanced functions and utilizing dynamic parameters. In this article, we will dive in a bit deeper on a topic we touched on lightly in those articles, which is ways to validate parameter input.
  • Automating Sysmon installation and configuration with PowerShell
    Introduction In today’s fast-paced digital world, quick response to security incidents is crucial. Sysmon (System Monitor) from Microsoft’s Sysinternals suite is an essential tool for detailed system monitoring and security analysis. However, traditional installation can be time-consuming, especially in urgent situations. This blog post introduces a PowerShell script that automates the download, extraction, and installation of Sysmon, along with applying a pre-configured setup.
  • The Micromine Alastri Hub Launcher Tool that leverages a RAM Disk for Temporary Data
    I would like to introduce you to a PowerShell tool I originally created in early 2024, which was in the research and planning stage for about 12 months previous to that. If you or your customer runs Micromine Alastri Software, especially in a virtualised desktop platform from Vendors such as Citrix, Omnissa, Parallels, Microsoft and […]Author informationJeremy SaundersTechnical Architect | DevOps Evangelist | Software Developer | Microsoft, NVIDIA, Citrix and Desktop Virtualisation (VDI) Specialist/Expert | Rapper | Improvisor | Comedian | Property Investor | Kayaking enthusiast at J House ConsultingJeremy Saunders is the Problem Terminator. He is a highly respected IT Professional with over 35 years’ experience in the industry. Using his exceptional design and problem solving skills with precise methodologies applied at both technical and business levels he is always focused on achieving the best business outcomes. He worked as an independent consultant until September 2017, when he took up a full time role at BHP, one of the largest and most innovative global mining companies. With a diverse skill set, high ethical standards, and attention to detail, coupled with a friendly nature and great sense of humour, Jeremy aligns to industry and vendor best practices, which puts him amongst the leaders of his field. He is intensely passionate about solving technology problems for his organisation, their customers and the tech community, to improve the user experience, reliability and operational support. Views and IP shared on this site belong to Jeremy.TwitterFacebookGoogle+LinkedIn
  • Preparing for Microsoft’s Strong Certificate Mapping Enforcement – What You Need to Know
    The post Preparing for Microsoft’s Strong Certificate Mapping Enforcement – What You Need to Know appeared first on PKI Solutions.

Projects, Scripts, and Modules

  • How to Find Inactive Teams in MS Teams
    Since 2020, Microsoft Teams has taken the lead as the go-to communication tool in organizations. From chats to meetings, it’s become the collaboration hub for team projects. However, as projects come to an end, many of the teams gradually fade into inactivity.
  • Get-PSChooseFileName
    A bridge to AppleScript's Choose File Name command
  • PowerShell Bug Reproductions
    A small repo to reproduce PowerShell bugs in.
  • DesktopManager
    DesktopManager is a C# library and PowerShell module that allows to play with desktop settings. It allows to get information about monitors, display devices, wallpapers and set wallpapers.

Books, Media, and Learning Resources

Community

  • Building a Game in PowerShell from the Ground Up with Greg Martin
    In this episode of the PowerShell Podcast, we welcome Greg Martin, a longtime developer and PowerShell enthusiast, who has taken PowerShell beyond system administration and into the realm of game development. Greg shares his journey of building Eldoria, a terminal adventure game written entirely in PowerShell, and how his experience across multiple programming languages influenced his approach.

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Blogs, Articles, and Posts

  • Primer: Using Exchange Online PowerShell in Azure Automation Runbooks
    In this primer, we cover how to create and execute Azure Automation Exchange Online runbooks (scripts) using cmdlets from the Exchange Online management module. Some setup is necessary before runbooks can process Exchange cmdlets, but once the necessary resources and permissions are in place, it’s all plain sailing.
  • Custom Maester Tests: Validate Full Addresses Now and Cleaned Up Wording
    Added 3 new tests which I think the first two will be game changers. The first 2 are tests for validating locations, in which the user must have street, city, state, postal code, country, business phone, and company name the same as the valid location in the json.
  • 02-14-2025 MSOnline and AzureAD PowerShell modules.. One last Valentine’s day card each
    If you haven’t seen the news already, MSOnline and AzureAD PowerShell modules will be no longer supported after March 30, 2025. So looks like this will be our last year to give them a Valentine’s day card for all the times they’ve been there for us in!
  • Cline vs. Roo Code – Which VS Code extension is better for the AI-augmented IT pro?
    In a prior article, I showcased automating PowerShell management in natural language using the VS Code extension Cline. Roo Code (formerly Roo Cline) is a Cline fork that provides extra valuable features for the AI-enhanced IT pro. Roo Code remains comparable, and the insights I shared about working with MCP servers in Cline also apply to Roo Code. The main difference is that Roo Code serves system administrators more effectively, as it provides a mode more suitable for natural language use in a CLI. Additionally, Roo Code's support of VS Code's Code Actions feature makes it perfect for understanding and modifying a colleague's scripts.
  • Using the PowerShell WinGet Client module to install your apps on your new computer
    Installing all your (management) apps on a new system always takes too much time. In this blog post, I will show you how to use PowerShell and the WinGet Client module to install them quickly.
  • Not the Error I expected! Connect-NsxtServer
    Howdy! It’s been quite a while since I created a blog post. Not sure I would want to say exactly how long. However, today I had a brand new VM that I was using to write some automation with PowerShell/PowerCLI. It took me a few minutes to figure this one out. Maybe it was me?
  • DPRK hackers dupe targets into typing PowerShell commands as admin
    North Korean state actor 'Kimsuky' (aka 'Emerald Sleet' or 'Velvet Chollima') has been observed using a new tactic inspired from the now widespread ClickFix campaigns.
  • Behind the PowerShell Pipeline
    Welcome to Behind the PowerShell Pipeline a subscription-based newsletter that will dive deeply into the world of PowerShell.

Projects, Scripts, and Modules

Books, Media, and Learning Resources

Community

  • Building Secure PowerShell Solutions with Jake Hildreth
    In this episode of the PowerShell Podcast, we welcome back security-focused PowerShell expert Jake Hildreth for an insightful conversation about PowerShell, security tools, and his continued journey in the PowerShell community. Jake shares updates on Locksmith v2, his work with PowerPUG, and his experience learning new PowerShell techniques to refine and improve his tools.

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Announcements!

Blogs, Articles, and Posts

  • Automating Code Compliance: AI-Driven Code Style Enforcement for Pull Requests
    As teams increasingly rely on automation for code quality and compliance, ensuring consistent coding standards can be challenging during the pull request (PR) process. In this article, we explore how to build an AI-powered style enforcement pipeline using modern tools like GPT-4 and CI/CD workflows.
  • PowerShell: How to find empty Attributes
    We are often looking for attributes, but what about the empty attributes? How can I find out if an attribute is empty? That is the focus of this article.
  • Now you can use your own company standards with Maester custom tests
    I thought checking to see if they were filled in or even formatted correctly wasn’t enough.. now you can config the validation.json file in the Validating folder with your company standards to make only those values pass. Here are the fields so far, and will be adding more!
  • Get All Teams Channels With External Members
    Channels in Microsoft Teams are the heartbeat of collaboration, designated to help teams organize conversations, files, and tasks around specific topics or projects. However, they also come with challenges—especially when external members are involved.
  • Microsoft Entra PowerShell modules
    The new Microsoft Entra PowerShell modules are available, replacing the deprecated AzureAD modules. This blog post will highlight the installation, changes, and features.
  • New Microsoft script updates Windows media with bootkit malware fixes
    Microsoft has released a PowerShell script to help Windows users and admins update bootable media so it utilizes the new "Windows UEFI CA 2023" certificate before the mitigations of the BlackLotus UEFI bootkit are enforced later this year.

Books, Media, and Learning Resources

  • Monthly Update #116 for Office 365 for IT Pros
    Monthly update #116 (February 2025) is available for the Office 365 for IT Pros eBook. The refresh includes update #8 new files for the Automating Microsoft 365 with PowerShell eBook. We’ve also updated the print (paperback) version that’s sold on an on-demand basis through Amazon.com. Things keep on changing inside Microsoft 365 with agent management a new challenge that’s coming into view.
  • Behind the PowerShell Pipeline
    Discover parts of PowerShell that lie under the surface that can make you a better PowerShell user and scripter. From one of the original PowerShell experts.

Community

  • Exploring the Power of IoT and PowerShell with Mark Go
    In this episode of the PowerShell Podcast, we sit down with Mark Go, a PowerShell enthusiast and innovator, to discuss his exciting journey from the Navy to becoming a tech-savvy system administrator. Mark shares his experiences using PowerShell to make his work life better.

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Announcements!

Blogs, Articles, and Posts

Projects, Scripts, and Modules

  • Get-MacInfo
    This is a powershell module for PS on macOS that, as much as possible, replicates "Get-ComputerInfo".

Community

  • Streamlining PowerShell Package Management with Fred Weinmann
    In this episode of the #PowerShell Podcast, we continue our deep dive with Fred Weinmann, a Microsoftie and PowerShell legend, as he shares more insights and tools that redefine productivity for PowerShell enthusiasts. Picking up where we left off in the last episode, Fred takes us through his journey of mastering PowerShell, collaborating with the community, and optimizing workflows with powerful custom modules.
  • Inside IT Automation | E19
    Jakub Jares talks about PowerShell testing with Pester and more

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

[–] pwshguy 1 points 2 months ago

Projects, Scripts, and Modules

  • All About the Office 365 for IT Pros GitHub Repository
    The Office365ITPros GitHub repository holds over 300 PowerShell scripts showing how to interact with Microsoft 365 and Entra ID. Anyone can contribute to Office365ITPros by forking the code to a copy of the repository and making changes to scripts there. If you want, you can push the changes back to us so that we can consider their inclusion in Office365ITPros. It's a great example of community in action.
  • Creating a ConfigMgr (SCCM) Bootable Media – PowerShell Style
    Here is a PowerShell script that will create Bootable Media for ConfigMgr.
  • pipEnv v 0.1.2
    Unofficial installer, runner and utilities for pipenv.

Books, Media, and Learning Resources

Community

  • PowerShell Changed My Life... with Adam Bacon.
    In this episode of the PowerShell Podcast, Andrew catches up with returning guest Adam Bacon. Adam shares an update on his career and shares how PowerShell has played a huge role in helping him accomplish his dream. 
  • The Art and Science of PowerShell Module Development with Fred Weinmann
    In this episode of the PowerShell Podcast, we sit down with Fred Weinmann, a prolific PowerShell module creator, to explore his remarkable contributions, including PSFramework, PSModuleDevelopment, PSUtil, and PSFramework.Nuget. Fred shares insights on developing impactful solutions, such as the KRBTGT module and the evolution of module development in large-scale environments. 

Events

 

I really appreciate your understanding for the missed edition last week. To make up for it, this week’s issue is packed with even more tips, insights, and updates to level up your PowerShell skills.

Blogs, Articles, and Posts

Continued in the comments...

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

 

Announcements!

  • Pester v5.7.0
    Pester 5.7.0 is out, it adds new code coverage format Cobertura, and other fixes

Blogs, Articles, and Posts

  • PowerShell Pester 101: A Practical Guide for Beginners
    Learn how to validate your PowerShell scripts with Pester testing. This hands-on guide shows you how to write tests that ensure your code works as intended.
  • Automated Provisioning of Windows 365 Cloud PCs: Advanced Scripts
    We decided that we would create some more advanced scripts for admins, which would include some error handling, prompts for input, and more. You will be able to use these scripts to provision your Entra ID joined Cloud PCs for various scenarios, be it using a Microsoft Hosted network or an Azure Network Connection, Enterprise or Frontline builds, or choosing your Cloud PC image, language, or region etc.
  • Using PowerShell to make bulk changes to DotNet .csproj files
    When working on a big DotNet team, it’s easy to create a library but forget to set a configuration property according to your team’s standards. Most people don’t spend a lot of time looking at their…

Projects, Scripts, and Modules

  • All About the Office 365 for IT Pros GitHub Repository
    The Office365ITPros GitHub repository holds over 300 PowerShell scripts showing how to interact with Microsoft 365 and Entra ID. Anyone can contribute to Office365ITPros by forking the code to a copy of the repository and making changes to scripts there. If you want, you can push the changes back to us so that we can consider their inclusion in Office365ITPros. It's a great example of community in action.
  • JsonFS
    Mount a Json file as PowerShell file system. Contribute to wgross/json-fs development by creating an account on GitHub.
  • Icewolf.EXO.SpamAnalyze v2.0.14
    This is a Powershell Module that simplifies the Message Trace in Exchange Online (EXO).

Books, Media, and Learning Resources

  • A PowerShell Teaser
    Somewhat ironically, since finishing our long series on Bash scripting I’ve been almost exclusively writing scripts in a completely different language, PowerShell! Being a Microsoft language you’d be forgiven for assuming that means I’ve moved to Windows and started trying to automate things there, but you’d be mistaken, I’m still very much a Mac user! So what gives? Despite what its origins may suggest, the core PowerShell environment is both open source and cross-platform, running just fine on the Mac and Linux as well as Windows.
  • PowerShell in Azure: Adding Tags & Setting Location Restrictions
    In this tutorial, learn how to create and apply tags to Azure resources and enforce a location restriction policy using PowerShell. Effective resource tagging helps you organise and manage your Azure environment, while location restriction policies ensure compliance with regional regulations.
  • Run Data Access Governance reports with PowerShell
    How to run Data Access Governance reports for SharePoint Advanced Management in PowerShell

Community

  • Exploring PnP PowerShell Updates with MVP Gautam Sheth
    In this episode of the PowerShell Podcast, we’re joined by Gautam Sheth, Microsoft MVP and M365 developer extraordinaire, to explore the latest improvements to the PnP PowerShell module and how to get started with it. Gautam shares his unique perspective on automating SharePoint, working with Microsoft 365, and leveraging Microsoft Graph through PowerShell. We discuss practical use cases, best practices, and the significance of PnP PowerShell for modern IT and development workflows. From SharePoint tips to automation strategies, this episode is packed with insights for PowerShell enthusiasts and M365 developers alike. Whether you're just starting or looking for advanced techniques, Gautam provides actionable advice and plenty of inspiration!

Fun

Events

Check out psweekly.dowst.dev for all past editions as well as a searchable archive.

[–] pwshguy 2 points 5 months ago

No Azure DevOps automatically increments it every time you run the pipeline.

[–] pwshguy 1 points 5 months ago* (last edited 5 months ago) (1 children)

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.

[–] pwshguy 4 points 5 months ago

This one in particular takes around an hour to run. It deploys a bunch of resources to Azure and runs a all of our integration tests. It does a complete wipe and redeploy each time, so it takes a while. Fortunately, this pipeline is only run as a final test before prompting to production, so normally I only run it once a month or so. While it's running I'll work on my pull requests, release notes, closing user stories, etc.

[–] pwshguy 3 points 5 months ago

That's why half of my pipelines are just scripts now, so I can run large chunks of them locally. But yeah, commit, test, commit, test, commit, test drive me insane.

[–] pwshguy 1 points 6 months ago
[–] pwshguy 1 points 7 months ago

Community

  • Kubernetes is Easy with Anthony Nocentino
    In this episode of the PowerShell Podcast, we sit down with Anthony Nocentino, a Senior Principal Field Solution Architect at Pure Storage, to dive deep into the world of Kubernetes. Anthony breaks down what Kubernetes is and how it fits into the modern IT landscape. We explore his fascinating career journey, from consulting and SQL Server to educating the masses on Kubernetes and Linux. Anthony also shares invaluable insights on becoming a force multiplier in your career and the critical role of mentorship and offers sage advice for anyone looking to elevate their professional path.
  • PSSaturday Karlsuhe Call for Speakers
    We are excited to announce that we are looking for speakers for the upcoming PSSaturday in Germany this November! Whether you're a first-time speaker or an experienced presenter, we welcome you to share your ideas. If you have an interesting topic and are willing to speak for up to 45 minutes, we want to hear from you.
[–] pwshguy 1 points 7 months ago

Projects, Scripts, and Modules

Books, Media, and Learning Resources

  • Build a Superfast Research Assistant using PowerShell and AI
    In this episode, I’ll show you how to combine PowerShell with AI to automate tasks, chat with your data, and build intelligent agents—all within your console and scripts.
  • Interactive Data at Your Fingertips: PowerShell AI Converts Data to Interactive HTML
    Transform your data with PowerShell and AI. In this video, Doug Finke, a 15x Microsoft MVP, shows how to use the PSAI module to convert Excel and CSV files into interactive HTML pages. You'll learn how to sort and interact with your data directly in your browser using the new ConvertTo-InteractiveHTML function. Doug walks through generating HTML tables with sortable columns and customizing them using AI. Whether you're managing large datasets or need a quick way to visualize your data, this tutorial will guide you through the process. Install the PSAI module and start making your data more dynamic.
  • How To PowerShell Code in Docker Containers
    In this video, we guide you through the process of installing and running Docker using PowerShell on Windows. Whether you're a beginner or an experienced developer, this step-by-step tutorial will help you get Docker up and running quickly and efficiently.
[–] pwshguy 11 points 8 months ago

I remember before scrambling they just put blocks that prevented you from going to certain channels. I somehow figured out if you ran the cable box through the VCR first and put it on channel 2 while the TV was still on 3, it would shift all the channels down one. Cinemax was channel 14, which our box just would not go to. But it would go to 13, so doing my little trick teenage me got to watch a lot of skinamax.

[–] pwshguy 2 points 8 months ago (1 children)

It took me longer than I would have liked, but I did finally get the next video uploaded. I hope you enjoy it as well.

https://youtu.be/Do5Ve6M9mmU

[–] pwshguy 1 points 9 months ago

Projects, Scripts, and Modules

  • 365AutomatedLab and new companion module coming soon
    365AutomatedLab and new companion module coming soon I promise I haven’t forgotten about 365AutomatedLab, but I’ll be honest after Microsoft made the announcement of no more new Dev tenants it hurt a bit as I know how useful they are on learning and testing features and PowerShell without hurting your production environment.
  • How to Create SharePoint List & Add Columns Using PnP PowerShell?
    Recently, I developed one Power Apps application that needed a SharePoint list data source. Before running the application, the client must create the specific SharePoint list on their site. So, I wrote a Power Shell script to create the SharePoint list along columns to avoid mistakes when creating it manually.
  • PowerShell-Yayaml v0.5.0
    What's changed…
  • PSDates v1.0.4
    Tons of new stuff added including calculating sunrise and sunset time.

Books, Media, and Learning Resources

Community

  • Behind the Scenes at PSConf.EU: Harm Veenstra’s Experience and Insights
    In this episode of the PowerShell Podcast, we sit down with Microsoft MVP Harm Veenstra to discuss his exciting experiences at PSConf.EU, where he attended for the first time and embarked on a new journey into public speaking. Harm shares his thoughts on receiving the prestigious Microsoft MVP award and delves into his recent projects, including creating a TCP/UDP listener for testing firewall ports and using a Pi-hole to block ads on his home network. We also explore his perspectives on automation in the MSP world, the power of Microsoft Graph, and why he hasn’t yet adopted AI tools. Tune in for an engaging conversation filled with insights, tips, and highlights from PSConf.EU!
  • Write Code, Write Blogs: Lessons with Brock Bingham
    In our latest Powershell Podcast episode, we chat with Brock Bingham. We explore his transition from sysadmin to writer and his viewpoint of coding as creative problem-solving. Brock also shares insightful blogging tips and advises against the pitfalls of comparison. A must-listen for aspiring PowerShellers. (plz create a blog and share your learnings for future you)
[–] pwshguy 3 points 9 months ago (1 children)

Nice write up, and a great primer for someone coming from the Linux/Bash world.

view more: next ›