


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

PowerShell Weekly for April 25, 2025
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

PowerShell Weekly for April 18, 2025
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 w

PowerShell Weekly for April 11, 2025
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, an

PowerShell Weekly for April 4, 2025
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 t

PowerShell Weekly for March 28, 2025
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'

PowerShell Weekly for March 21, 2025
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 alwa

PowerShell Weekly for March 14, 2025
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 (DS

PowerShell Weekly for March 7, 2025
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

PowerShell Weekly for February 28, 2025
Announcements!
- Microsoft Update changes for PowerShell 7
\ This blog outlines the expected behavior of MU releases for PowerShell 7. - v7.6.0-preview.3
\ Start testing your scripts against the next gen now.
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

PowerShell Weekly for February 21, 2025
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 y

PowerShell Weekly for February 14, 2025
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..

PowerShell Weekly for February 7, 2025
Announcements!
- Microsoft Entra PowerShell module now generally available
\ Manage and automate Microsoft Entra resources programmatically with the scenario-focused Microsoft Entra PowerShell module.
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](https://sid-500.com/2025/02/04/powershell-how-to-find-empty-attributes

PowerShell Weekly for January 31, 2025
Announcements!
- PowerShell v7.5.0
\ The official v7.5 is out now!
Blogs, Articles, and Posts
- Build a Scalable PowerShell Pester Testing Framework
\ Learn how to create a maintainable and organized Pester testing framework for PowerShell that scales with your needs. Perfect for large test suites. - If Maester couldn’t get any better…Custom Test Collection now available
\ The time has finally come. I have created a public repository to store custom Maester tests for everyone. As well as a website for deeper understanding where needed. - Identifying Privileged Applications and Their Secret Passwords
\ Securing applications in an Entra tenant is crucial, espe

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
- PowerShell 101: Creating a Real-World Module: Scaffolding Functions
\ Learn how to create powerful PowerShell modules from scratch by building a computer inventory tool. Perfect for sysadmins who need custom automation solutions. - PowerShell Universal + dbatools!
\ Join me as I show off how to use PowerShell Universal to create APIs using dbatools to get at your SQL Instance and databases information.
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
- PowerShell + DevOps Global Summit 2025
\ April 7-10, 2025 Bellevue, WA

PowerShell Weekly for January 24, 2025
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
- Final Days for the MSOnline and AzureAD PowerShell Modules
\ After many twists and turns since August 2021, the MSOnline module retirement will happen in April 2025. The AzureAD module will then retire in the 3rd quarter. It's way past time to upgrade PowerShell scripts. The question is whether to use the Entra module or the Microsoft Graph PowerShell SDK. I know which option is best and say why in this article. - PowerShell: How to execute PowerShell Scripts (*.ps1) on Remote Computers
\ PowerShell scripts can be executed locally or remotely. In this article I will show how scripts can

PowerShell Weekly for January 10, 2025
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 buil

PowerShell Weekly for January 3, 2025
Blogs, Articles, and Posts
- Automated Deployment of a Zero Trust Azure Automation Environment
\ A common and recommended security practice is only allowing access to an Azure Storage Account via a whitelisted IP address. While this is generally a good idea, a problem arises when you need an Azure Automation Account to access one of these Storage Accounts. - PowerShell Reusable Sessions: A Guide to Persistent Remote Connections
\ Learn how to leverage PowerShell reusable sessions to maintain persistent connections with remote systems. This tutorial shows you how to create, manage and effectively use PowerShell sessions for remote administration. - PowerShell 7.5 new features
\ Microsoft has unveiled the first release candidate of PowerShell 7.5, w

PowerShell Weekly for December 20, 2024
This is the final edition of PowerShell Weekly for 2024. Since this newsletter is hand-curated, I always take the last week of the year off to rest and reflect. I’ll return in the New Year with fresh content and my annual year-in-review, covering all the major PowerShell highlights from 2024.
Announcements!
- Announcing a free GitHub Copilot for VS Code
\ We're excited to announce an all new free plan for GitHub Copilot, available for everyone today in VS Code. All you need is a GitHub account. No trial. No subscription. No credit card required.
Blogs, Articles, and Posts
- Processing Microsoft 365 Retention Labels with the Microsoft Graph PowerShell SDK
\ Two types of retention labels are in use: Microsoft 365 retention labels and MRM retention tags. Clients

PowerShell Weekly for December 13, 2024
Blogs, Articles, and Posts
- Install and integrate Microsoft AI Shell with a PowerShell module
\ Microsoft’s new AI Shell integrates AI into command-line workflows, featuring the Azure OpenAI Agent and Copilot in Azure Agent for tasks like PowerShell scripting and cloud automation. You can install AI Shell (aish.exe) as a standalone app or PowerShell module to streamline coding, error resolution, and resource management on Windows, macOS, or Linux. - Jingle All the Way to Savings: Automate Azure Bastion with Azure Automation!
\ In my blog post contribution for this year’s Festive Tech Calendar, I’ll show you how to reduce Azure costs by automating the runtime of your Azure Bastion host(s) with Azure Automation. - [Setting Up VS Code for PowerShell Development: A Beginner’s

Using PowerShell in JupyterHub for Sharing and Collaboration
Hey c/PowerShell community!
I’m excited to announce the launch of my new YouTube series, PowerShell Collaboration Unleashed!.
In the first part, we dive into The Littlest JupyterHub— an awesome tool for creating shared environments on a single server. These environments are accessible from any web browser, allowing you to create, run, and share scripts effortlessly.
Here’s what you’ll learn in the first part of the series:
- An intro to JupyterHub and why it’s a game-changer for collaboration.
- How to provision an Ubuntu server for The Littlest JupyterHub.
- Installing and configuring The Littlest JupyterHub and support for dotnet and PowerShell.
- Setting up shared environments you can start using right away.
Future videos will cover topics like setting up SSH, adding AzureAD/Entra ID authentication, connecting to external resources, securing secrets, logging, and integration with source control.
If yo

PowerShell Weekly for December 6, 2024
Announcements!
- PowerShell VSCode Extension v2024.5.2-preview
\ New PowerShell VSCode extension preview release v2024.5.1! This includes the breakpoint performance improvement I developed, you should see stepping through code work much faster. Please try to break this feature before release!
Blogs, Articles, and Posts
- PowerShell: How to configure a custom PSSessionconfiguration
\ A remote session can be set up with the help of PSSession. The predefined remote session is used by default. However, we can also create our own session configurations and then connect - Install and manage VM watch on Azure Virtual Machines
\ Microsoft announced the public preview of VM watch, a new in-VM service designed for Azure Virtual Machines (VMs) and Virtua

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.

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.

Projects, Scripts, and Modules
- PowerShell - IntelliJ IDEs Plugin
\ Provides PowerShell code completion and script execution support for IntelliJ IDEs.
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 newConvertTo-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.

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.

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.

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
- PowerShell Conference EU 2024 - Full playlist
\ Check out all the sessions from this years PowerShell Conference EU.
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)

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

Thanks! I'd love to hear your thoughts once you've watched it.

Community
- PipeScript, Formatting, and Docker: An In-Depth Conversation with James Brundage
\ In this episode of the PowerShell Podcast, we are joined by Microsoft MVP, former PowerShell team member, and module maker extraordinaire James Brundage. We hear about his experience at Microsoft Build, learn all docker and kubernetes while discussing his Rocker module, UserGroup updates, implicit interpretation in Pipescript, formatting and types, and so much more. Strap in because we go deep in this one. - Breaking Down ModuleFast and More with Justin Grote
\ In this episode of the PowerShell Podcast, host Andrew Pla interviews Microsoft MVP and PowerShell aficionado Justin Grote. They delve into an issue in the Az.Accounts 3.0.0 module, with Justin offering insights and a workaround (use an earlier version of the module). Justin also discusses his innovative ModuleFast project, explaining its architecture and his approach to writing PowerShell scripts and modules. The conversation highlights Justin's passion for APIs and celebrates his contributions as an official PowerShell project contributor. Listeners get a glimpse into Justin's workflow working at a Managed Service Provider (MSP) and how he writes to much PowerShell. He offers valuable advice for those early in their careers. Additionally, Justin shares updates on his PowerHTML (1.2m downloads) project, which originated from a GitHub pull request, showcasing his continuous contributions to the PowerShell community. - PowerShell Community Call - May 16th, 2024
\ Last month's community call with the PowerShell team.

Books, Media, and Learning Resources
- PowerShell Scripting and Toolmaking
\ At long last I've updated the content of the PowerShell Scripting and Toolmaking book from Leanpub. Get the book and you get future updates for free. - Mastering PowerShell Scripting - Fifth Edition
\ Automate repetitive tasks and simplify complex administrative tasks using PowerShell - Send Emails with SendGrid and PowerShell [OC]
\ Learn how you can quickly and easily send emails from PowerShell with SendGrid. - Customize your Windows Sandbox with PowerShell
\ Today we're going to go a bit deeper into Windows Sandbox by walking through custom configurations with PowerShell. - Automate Network Security Testing using PSTcpIp with Anthony Guimelli
\ Join Tony Guimelli for look at how you can automate the arduous process of network security testing using PowerShell and the PSTcpIp module.

Projects, Scripts, and Modules
- passwordstate-management v 4.4.49
\ Powershell Module for managing Password State - PowerQualys v 0.3.0
\ Helper module for Qualys - WinTuner v 0.8.9
\ Package and publish any apps from WinGet to Intune. - Interpreting Audit Records for Teams Meeting Recordings (Again)
\ Three years ago, I wrote a script to analyze the audit records generated for Teams meeting recordings. Then things changed in terms of how the audit records were generated and how the Search-UnifiedAuditLog cmdlet returns audit search results. All of which meant that considerable work was needed to revamp (rewrite) the script. Maybe you need to check any script that uses the Search-UnifiedAuditLog cmdlet too? - tiPS v 1.3.10
\ PowerShell tips delivered straight to your terminal.

Thanks! I'm glad to hear you are finding it useful.

Thanks! I'm glad to hear others are finding it useful.

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%.
I haven't seen a (https://fosstodon.org/tags/PowerShell) (https://fosstodon.org/tags/Podcast) account in the fediverse, but I talked to them anyway 😉

Joel "Jaykul" Bennet is an opinionated DevOps engineer, programmer, speaker, and Microsoft MVP.
I love that description. I can't wait to listen to it tonight!

Just a heads up, I received confirmation from the product team that the AZUREPS_HOST_ENVIRONMENT environment variable is going away. They are moving the backend to containers. Also, the COMPUTERNAME one that was always "client" is going to change too. The COMPUTERNAME will now be "Sandbox-###" with # being random numbers. I started using the code block below in my runbooks to find if they are running in Azure or hybrid worker/locally. It accounts for the current and the updates that will be rolling out in the near future.
undefined
$isHybridWorker = $true if (($env:computername) -eq "CLIENT") { $isHybridWorker = $false } elseif ($env:USERNAME -eq 'ContainerAdministrator') { $isHybridWorker = $false } ``

Typically, when I have a script I need to test locally, I’ll comment out the identity connection command and just authenticate outside of my script. If I’m feeling real fancy, I’ll write a try/catch to attempt to authenticate first as the managed identity then if it fails prompt me for credentials. Not the most elegant solution, but it works.
undefined
try { Add-AzAccount -Identity -SubscriptionId $SubscriptionId -ErrorAction Stop | Out-Null } catch { Add-AzAccount -SubscriptionId $SubscriptionId }