Search
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.. 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
- PowerShell-OpenAuthenticode \ Cross platform PowerShell implementation of Authenticode signing and verification.
Books, Media, and Learning Resources
- Building a Pokedex - ChatGPT vs. Gemini vs. DeepSeek vs. Claude \ Which model can build the best PowerShell Pokédex? ChatGPT vs. Gemini vs. DeepSeek vs. Claude - you will be as surprised as I was!
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
- 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.
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 \ 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
- 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.
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, especially after recent attacks like Midnight Blizzard. This article reviews how to use PowerShell to help identify privileged applications, their permissions, as well as client Secrets.
- Practical Graph: Finding and Removing Underused Microsoft 365 Copilot Licenses from User Accounts \ Microsoft 365 Copilot licensing costs a lot of money. At $360 annually, it's important to make sure that everyone with a license makes full use of Copilot to become more productive and efficient. Usage data is available in the Graph, and some PowerShell can reveal who's using Copilot and who's not. With that data, you can decide whether to remove licenses for reassignment to other users.
- Exploring PowerShell Reflective Loading in Lumma Stealer \ One of the most common techniques I’ve seen used by threat actors to deliver Lumma Stealer payloads to victims is Reflective Loading, leveraging the .NET library. Reflective Loading is a technique…
- 10 Master PowerShell Troubleshooting Commands: Simplify System Diagnostics \ Discover 10 essential PowerShell troubleshooting commands. Learn what each command does, how to use them effectively for system diagnostics.
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
- 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.
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 be executed remotely.
- Update to Entra FIDO Key Attestation Database \ What other keys are you looking to gain compatibility?
- VS Code extension Cline: AI-automated scripting and CLI administration – A PowerShell example \ In a previous post about the new AI features in the Warp terminal, I suggested that AI interfaces would eventually replace the CLI and facilitate the automation of script generation. The Cline extension for Visual Studio Code is a significant step in this direction, allowing you to create scripts using natural language, execute them with AI support in the terminal, rely on AI to analyze shell output and respond to errors. While the extension supports various shells, I'll demonstrate how to utilize Cline to automate PowerShell administration.
- Harnessing AI in PowerShell: Create a multi-model command-line AI assistant (Part 1) \ AI is virtually inescapable these days. From annoying website chat bots to the assimilation of the Microsoft product portfolio by Copilot, AI has been busy spreading its tentacles every which way it can. I must be honest – I’ve never been a fan of it. That is, until I started using GitHub Copilot.
- Find Groups with Disabled Users in Microsoft 365 \ Offboarding users in Microsoft 365 involves more than just blocking sign-ins; there’s a hidden complication that many overlook. Disabled accounts tied to groups hinder group management by inflating group sizes, making it harder to track active members and maintain compliance with access policies.
- Fixing Windows 11 24H2 – No Internet Access Issue using PowerShell and Intune Remediation \ There are articles and forum posts from people who upgraded to Windows 11 24H2 and are experiencing Wi-Fi issues. In this blog post, I will show you an Intune Remediation script that might fix the problem for your devices.
- Powershell - Testing network connectivity and port accessibility \ Testing network connectivity and port accessibility with Powershell
- List all directory objects owned by a user in Entra with PowerShell \ Learn how to use Microsoft Graph PowerShell to list all directory objects, such as apps and groups a user owns in Microsoft Entra.
- PowerShell based Terraform Bootstrap Script \ Create a PowerShell script to bootstrap Terraform, handle installation, create project directories, and automate deployments across Windows, Mac, and Linux.
- Terminal profiles in IDEs \ I spend a significant part of my work day in a terminal. That's why I have it configured to suit my needs with a collection of several useful modules which I occasionally still extend. Although all IDEs I regularly use feature an integrated terminal which opens in repository root by default, I rarely used them because they didn't match my configuration. So I decided to check if there was a way to make them use my default PowerShell profile.
Continued in the comments...
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
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 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
- A little PowerShell humor \ I think we can all agree
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.
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, with the General Availability (GA) launch expected in January or February 2025. This release candidate provides the most accurate preview of the upcoming final production version of PowerShell 7.5. This new version includes hundreds of changes, ranging from minor adjustments to major new features. In the following sections, we will discuss the key changes in this major PowerShell update.
- PowerShell Pipeline Parameters: How to Create Pipeline-Ready Functions \ Learn how to enable pipeline input in your custom PowerShell functions using parameter binding. This tutorial shows you how to use ValueFromPipeline and ValueFromPipelineByPropertyName to create functions that work seamlessly with the PowerShell pipeline.
- Validate list of Email Addresses using PowerShell \ What if you have an extensive list of email addresses? And if you must validate them for syntax and check if there's an email server for that domain? PowerShell is your friend :) In this blog post, I will show you how to import, validate, and export the results of those email addresses.
- Automatically update PowerShell 7.4 with WSUS or SCCM \ Microsoft enabled automatic updates for PowerShell with the release of PowerShell 7.2; that continues now with PowerShell 7.4.
- Quickly Finding Previously Typed Commands With PowerShell \ How to find that extremely convoluted command you typed in three months ago that you can't find in your PowerShell history.
Projects, Scripts, and Modules
- EntraFIDOFinder v0.0.14 is Out with New Features! \ It’s the second to last Monday of the year, so figured I’d release a new version of the EntraFIDOFinder before the end of the year. Here are the main additions. New Features: I did some other cleanup and prepping for some future updates, but what do you think? Any other features we should add? Are […]
- Powershell - Testing name resolution (equivalent to nslookup) \ Powershell commands to test name resolution (equivalent to nslookup)
Community
- Holiday Special with Gilbert Sanchez: PSScriptAnalyzer, AST, and PowerShell Gifts \ In this special holiday episode of the PowerShell Podcast, we are joined by the incredibly talented Gilbert Sanchez. We dive into the world of PSScriptAnalyzer and use it as a gateway to explore and understand the Abstract Syntax Tree (AST) in PowerShell. Gilbert walks us through a live demo and highlights some powerful ways to leverage the AST to analyze and improve our PowerShell code. As a special holiday treat, Gilbert comes bearing gifts—several awesome PowerShell modules that listeners can start using today.
- Evgenij Smirnov Talks Certs, Security, and PowerShell Adventures \ In this episode of the PowerShell Podcast, we sit down with Microsoft MVP Evgenij Smirnov to explore his incredible journey from working as a forklift driver to becoming a PowerShell and security expert. We dive into his insights on certificates, security best practices, and the importance of identity in modern IT. Evgenij also shares his experiences with cross-platform PowerShell, highlights from his recent talks, and the value of community events like PowerShell Saturday. Along the way, we discuss his unique career path, his passion for the PowerShell community, and tips for those looking to grow in IT.
Fun
- 2024 Overview \ It’s 2025, so it’s time to reflect on 2024 :). In this blog post, I will highlight all the great PowerShell things that happened during the year.
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.
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 hide the difference, but the Microsoft Graph PowerShell SDK cmdlets can only process Microsoft 365 retention labels for files stored in SharePoint Online and OneDrive for Business. EWS can manage MRM retention tags, but it's on a fast path to retirement in 2026.
- Complete Guide to Automate the Microsoft Intune Daily Tasks using of Graph X Ray \ This guide will help you to automate your Intune daily task with using Graph X Ray. This article will teach us how to use effectvly use Graph X-Ray to automate the Microsoft Intune Tasks.
- How to Use PowerShell Get-Date Cmdlet? \ In this tutorial, I will explain how to use the PowerShell Get-Date cmdlet to work with dates and times in your scripts. The Get-Date cmdlet allows you to retrieve the current date and time, format dates, and perform date calculations. As a system administrator or a developer, you should know how to use Get-Date
- Practical Graph: Understanding What Happens When the Connect-MgGraph Cmdlet Runs \ This article describes what happens when the Connect-MgGraph cmdlet runs in interactive and app-only sessions with the Microsoft Graph PowerShell SDK. A session is created and a context is established, and it's possible to use the session context to do real work.
- Try to Catch PowerShell Error Handling \ A guide to handling errors within PowerShell and the best approach
Projects, Scripts, and Modules
- PowerShell-Hunter \ PowerShell tools to help defenders hunt smarter, hunt harder.
Books, Media, and Learning Resources
- PowerShell Universal Christmas Edition - Adam Driscoll & Constantin Hager \ In this lecture, Adam Driscoll and Constantin Hager guide the audience through the PowerShell Universal Christmas edition, demonstrating the latest features and functionalities of version 5.1. The session is organized into two main demos, focusing on practical applications of PowerShell and how attendees can utilize these updates in their own projects. The first half of the presentation features Constantin who shares his user management application, utilizing the Request API to query and display user data in a seamless table format.
Community
- Miriam Wiesner on Identity Hygiene, Security Tools, and Finding Balance \ In this episode of the PowerShell Podcast, we sit down with Miriam Wiesner, a Senior Security Research Program Manager at Microsoft, to dive into the fascinating world of security and identity hygiene. Miriam shares her expertise on the GraphAPI and the critical importance of maintaining proper identity hygiene in today's digital landscape.
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.
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 Guide \ Learn how to set up Visual Studio Code (VS Code) for PowerShell development in this step-by-step guide. You'll learn how to install VS Code, configure the PowerShell extension, set up the integrated terminal, and explore key features to enhance your PowerShell scripting experience.
- How to Rename Multiple Files Using PowerShell? \ Recently, I got a requirement to rename numerous report files in a project. PowerShell script is the best option for it. In this tutorial, I will explain how to rename multiple files using PowerShell. Rename Multiple Files Using PowerShell Recently, I was working on a project for a client in New York City.
- PowerShell Function for the cmd.ms website \ I'm a big fan of the cmd.ms website because it has all the links to quickly jump to a specific blade in a portal instead of clicking multiple parts of a Microsoft Management portal to get there. In this blog post, I will show you how to use a PowerShell function to open one or multiple management websites from the command line.
- Prevent users from switching and migrating to new Outlook using PowerShell and Microsoft Intune \ Prevent future automatic migration to the new Outlook. In this post, I’ll share the PowerShell script I’m using to prevent users from migrating to the new Outlook if your environment isn’t quite ready for it.
- It's always DNS \ A story of when it was actually DNS.
Projects, Scripts, and Modules
- Checking to see if I've missed any episodes of the PowerShell podcast \ For the code to select and open a PowerShell podcast episode webpage with PowerShell
Books, Media, and Learning Resources
- Windows PowerShell Use Cases in 1 Hour \ In this video, dive into essential PowerShell use cases, including file management, system administration, and basic networking. Learn how to manage files, perform essential administrative tasks, and execute networking commands for tasks like testing up connections, all through PowerShell scripts. This tutorial is perfect for beginners aiming to improve their IT skills and handle various everyday tasks with PowerShell efficiently.
- PowerShell Collaboration Unleashed! [OC] \ Learn how to use JupyterHub to create shared environments for seamless scripting & collaboration—accessible from any browser.
Community
- PowerShell Evolution with Sean Wheeler: What's new in PS 7.5, AIShell, & More! \ In this episode of the PowerShell Podcast, we welcome back Sean Wheeler, Lead Documentarian at Microsoft for PowerShell, to catch up on the latest developments in the PowerShell ecosystem. Sean dives into the updates with PSResourceGet, the powerful enhancements in PowerShell 7.5, and the groundbreaking potential of the AI Shell project, designed to transform command-line experiences with artificial intelligence. We also get a recap of Sean’s experience at SpiceWorld, highlighting community insights and key takeaways from the event. Packed with expert tips and exciting news, this episode is a must-listen for PowerShell enthusiasts and IT pros alike!
Fun
- Feeling lucky? \ Would you like to play a game?
Events
- Turn PowerShell Into Your Excel Automation Machine \ Friday, December 13, 2024 - Join Doug Finke, the creator behind the PowerShell ImportExcel module (downloaded over 8 million times), for an exclusive dive into Excel automation. Learn from the creator himself and discover how to turn tedious Excel tasks into seamless PowerShell solutions, gaining insider insights directly from the source.
- PowerShell Conference Europe 2025 Call for Speakers \ Call closed on 15 Dec 2024
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
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 you’re passionate about scripting, automation, or simply improving team collaboration, this series is for you!
I would love to hear your thoughts, feedback, questions, or ideas for future topics in this series.
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 Virtual Machine Scale Sets (VMSS). This service aims to enhance VM health monitoring by offering standardized, lightweight, and flexible in-VM health checks that connect seamlessly with Azure's monitoring and AIOps systems.
- How to Create a PowerShell Module: A Beginner’s Guide \ PowerShell modules are essential for scriptwriters and system administrators to organize and reuse their code. A module is a package of related functions, cmdlets, and resources bundled together for easy sharing and deployment. Creating a custom PowerShell module allows you to centralize functionality, streamline code reuse, and distribute your work to others.
- How To Check If File Modified In Last 24 Hours Using PowerShell? \ One of my team members recently wanted to check if a file has been modified in the last 24 hours. I suggest using PowerShell as it provides different methods to check. In this tutorial, I will explain how to check if a file has been modified in the last 24 hours using PowerShell with examples.
- How to compare all files in two folders using PowerShell \ When I am investigating or troubleshooting any issue, I always hope to have access to any log, source control, build artifacts, and pipelines. However, some scenarios are not related to software development where the only resources that I have immediate access to are folders and the files contained, and also the same ones but
- How to Replace Carriage Returns in Strings Using PowerShell? \ There will be times when you want to replace carriage returns in strings using PowerShell. In this tutorial, we will learn how to replace carriage returns in strings using PowerShell. To replace a string containing a carriage return in PowerShell, use the -replace operator with the carriage return escape sequence `r. For example, $string -replace “r”, “replacement text”will replace
Projects, Scripts, and Modules
- v0.0.13 EntraFIDOFinder is out \ New Version of EntraFIDOFinder is out and i’ve added a better way to find out which version of FIDO they are using too. I’ve updated it for the PowerShell version and the webversion. Enhancements I did notice that there is a difference for AAGUID 30b5035e-d297-4ff7-b00b-addc96ba6a98 where on Microsofts website it says it should be compatible
- PSAppDeployToolkit 4.0.2 \ The all-new and vastly improved PSAppDeployToolkit v4 is here!
Community
- Turning the tables. An interview with Andrew Pla \ In this episode, we turn the tables and interview Andrew Pla. We explore Andrew's back story, find out how he got started in IT, and discover where his love of PowerShell comes from. We also discuss his journey from community member to advocate to PowerShell MVP. Get to know Andrew Pla!
- OnRamp Scholarship Application Now Open \ Are you an entry-level IT professional looking for an immersive introduction to PowerShell, DevOps, and the broader tech community? The OnRamp program at the PowerShell + DevOps Global Summit is designed just for you, and scholarship applications are now open!
- BlueSky PowerShell Community Starter Pack \ PowerShell and automation enthusiasts who love to share what they know - through code, content, teaching, or lending a hand to others. They strive to make tech accessible to everyone and support each person's learning path with enthusiasm and respect.
- Inside IT Automation E18 \ Joe Houghes talks about VMware, PowerCLI, PowerShell and more
Events
- Turn PowerShell Into Your Excel Automation Machine \ Friday, December 13, 2024 - Join Doug Finke, the creator behind the PowerShell ImportExcel module (downloaded over 8 million times), for an exclusive dive into Excel automation. Learn from the creator himself and discover how to turn tedious Excel tasks into seamless PowerShell solutions, gaining insider insights directly from the source.
- PowerShell Conference Europe 2025 Call for Speakers \ Call closed on 15 Dec 2024
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for November 29, 2024
Blogs, Articles, and Posts
- PowerShell Automatic Variables: Special Variables Built into PowerShell \ Learn about PowerShell's automatic variables - built-in special variables that serve specific purposes. Discover how to work with history limits, constants, exit codes, and null values.
- 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 Virtual Machine Scale Sets (VMSS). This service aims to enhance VM health monitoring by offering standardized, lightweight, and flexible in-VM health checks that connect seamlessly with Azure's monitoring and AIOps systems.
- How to Verify a File Hash (Checksum) on Windows \ Checking a downloaded file’s hash (checksum) allows verifying its integrity and ensuring that the file contents have not been modified. Administrators commonly use MD5/SHA256 checksum verification for downloaded OS distros…
- Use PowerShell to check if (shortened) URL link is safe \ It just happens a lot: you receive a (shortened) URL and are unsure if it's safe to open. Sometimes, I open it in Windows Sandbox or use the urlscan.io website. In this blog post, I will show you how you can automate the check of a URL and see if it's safe or not :)
- Activating PIM Roles that require MFA or Conditional Access Authentication Context with PowerShell \ For some time, I’ve been activating and scheduling activations for Azure roles under Privileged Identity Management (PIM) using the Microsoft Graph PowerShell SDK. However recently we secured these role activations to require a conditional access authentication context with MFA. This basically requires me to MFA when I activate a role with PIM. Problem is, by … Continue reading Activating PIM Roles that require MFA or Conditional Access Authentication Context with PowerShell →
- Loading PowerShell Custom Functions: Profiles, Dot-Sourcing, and Modules \ PowerShell is a versatile scripting environment that allows users to extend its capabilities by creating custom functions. Once written, you can load these PowerShell custom functions into your session or environment for reuse. Here are four common methods to load custom functions in PowerShell.
Projects, Scripts, and Modules
- get-xkcdpassword v 0.0.4 \ A PowerShell module for generating memorable XKCD-style passwords.
Community
- Jordan Returns: A Fun Dive into Life, PowerShell, and Beyond \ In this special episode, we catch up with our former cohost, Jordan, and hear about his journey since leaving the PowerShell Podcast. Jordan shares an exciting life update, offers invaluable advice on how PowerShell has shaped his career and participates in our fun "This or That" segment.
Fun
- Realtime BlueSky, but only the emoji video \ Made with PowerShell and the bluesky websocket
Events
- Turn PowerShell Into Your Excel Automation Machine \ Friday, December 13, 2024 - Join Doug Finke, the creator behind the PowerShell ImportExcel module (downloaded over 8 million times), for an exclusive dive into Excel automation. Learn from the creator himself and discover how to turn tedious Excel tasks into seamless PowerShell solutions, gaining insider insights directly from the source.
- PowerShell Conference Europe 2025 Call for Speakers \ Call closed on 15 Dec 2024
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for November 22, 2024
Announcements!
- PowerShell 7.5 RC-1 is now available \ Come and get the latest RC release!
- Announcing the Public Preview of AI Shell \ We are pleased to announce the public preview of AI Shell.
Blogs, Articles, and Posts
- How to Query REST APIs with PowerShell: A Practical Guide \ Learn how to use PowerShell to query REST APIs, parse JSON responses, and build a reusable tool for working with web services. This hands-on tutorial covers Invoke-RestMethod, error handling, and creating custom output objects.
- GitHub Actions and PowerShell: The Underdog \ Remember how I mentioned how GitHub actions are underrated? I’m going to show at a high level how GitHub Actions with PowerShell can save you time and be more efficient. What does it do? It does that automatically once every day, I could do it more, but didn’t think it was necessary.
- PowerShell Copy-Item with Folder Structure \ In this tutorial, I will explain how to use PowerShell’s Copy-Item cmdlet to copy files and folders while maintaining their original structure. This is a common task for system administrators and developers who need to manage file systems efficiently. You will learn here how to use the PowerShell Copy-Item cmdlet to efficiently copy files
- Using the Fluent Theme in WPF with PowerShell and .Net 9 \ For a long time, adding a modern design theme to your WPF project typically meant adding a 3rd party library to provide the styling, such as MahApps Metro, or WPF UI. With the release of .Net 9, a Fluent theme is finally coming to WPF! There are still areas where 3rd party libraries will be … Continue reading Using the Fluent Theme in WPF with PowerShell and .Net 9
- Conditional Access Gallery - Point, Select, and Deploy in Minutes \ With my new Conditional Access Gallery tool Invoke-DCConditionalAccessGallery in DCToolbox you can pick and choose from any of 25+ available Conditional Access templates included, and the tool will auto-deploy them in your tenant (report-only mode), automatically create all dependencies like groups, named locations, and terms of use agreements, and finally document your new policy design
- Upgrading your Azure Function Apps to run on PowerShell 7.4 \ PowerShell language worker for Azure Functions. Contribute to Azure/azure-functions-powershell-worker development by creating an account on GitHub.
Projects, Scripts, and Modules
- PowerHuntShares \ PowerHuntShares is an audit script designed in inventory, analyze, and report excessive privileges configured on Active Directory domains.
Books, Media, and Learning Resources
- PwshSpecteConsole with Shaun Lawrie \ Shaun Lawrie talks to the Pacific Powershell User Group about PwshSpectreConsole.
- GitHub Pages with PowerShell \ The Pacific Powershell User Group talks about GitHub Pages and PowerShell and demonstrates PSJekyll.
- Get-EventSession \ Script to assist in downloading Microsoft Ignite, Inspire, Build or MEC contents or return session information for easier digesting.
Community
- Growth, Grit, and Community with Steven Judd & Kevin Laux \ In this episode of the PowerShell Podcast, we sit down with Steven Judd and Kevin Laux for insights and inspiration from the PowerShell community. Steven shares his experiences overcoming the hurdles of live demos, recounts the highlights of PowerShell Saturday NC, and reveals the story behind his iconic bling and love for puns. He delves into the importance of "practice makes progress," encouraging listeners to embrace growth through consistent effort. Kevin Laux joins the conversation to discuss his journey with PowerShell, his role with the Research Triangle PowerShell User Group (RTPSUG), and the impact of community involvement.
Fun
- First Snowfall of the Season \ First snowfall in NY! Tell me about the first time PowerShell just clicked… what was that moment?
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for November 15, 2024
Blogs, Articles, and Posts
- Powershell and the Left Hand Side \ A new article, to talk about an important notion in Powershell, the Left Hand Side (LHS) notion.
- Manage PIM Role Assignments with PowerShell \ This article describes how to create eligible and active PIM role assignment requests using cmdlets from the Microsoft Graph PowerShell SDK.
- How to install PowerShell 7 and essential tools on macOS \ As you prepare for the OnRamp track at the PowerShell + DevOps Global Summit, this guide walks you through installing the essential tools on your macOS system, if that's your preferred operating system. You'll learn to install PowerShell version 7, Visual Studio Code, and the PowerShell extension for VS Code to ensure your system is prepared for the event.
- GitHub and PowerShell: The Underdog \ Remember how I mentioned how GitHub actions are underrated? I’m going to show at a high level how GitHub Actions with PowerShell can save you time and be more efficient. What does it do? It does that automatically once every day, I could do it more, but didn’t think it was necessary.
- Install and enable SSH on Windows Server 2025 \ Windows Server 2025 comes with SSH pre-installed, making secure remote server management easier for administrators. This is especially helpful when accessing servers from macOS or Linux machines or Windows computers not part of the Active Directory domain, as enabling PowerShell remoting can be complicated in this scenario. By default, SSH on Windows Server 2025 uses password authentication, which you should change to public key authentication for enhanced security.
- Introducing a Custom 'map' Function in PowerShell for Functional Programming \ I built the custom map function to enable processing multiple arrays with ease. Simplify your scripts by applying transformations simply and flexibly.
- How Can You Effortlessly Restart or Shutdown Windows Using PowerShell Commands? \ In Windows PowerShell, you have two main commands for controlling shutdown and restart functions: Restart-Computer and Stop-Computer. Each command can
- New PowerShell Threat: Infiltrating Networks with Advanced Techniques \ In a recent discovery, Cyble Research and Intelligence Lab (CRIL) detailed a complex, multi-stage PowerShell campaign that employs several advanced techniques to infiltrate networks, maintain persistence, and enable covert communications.
Projects, Scripts, and Modules
- CMHealthcheck v 1.0.30 \ ConfigMgr healthcheck reporting
- linuxtools v 1.0.12 \ An experimental PowerShell module for Linux nerds. Because: why not?
- PSBluesky \ A set of PowerShell 7 commands that use the BlueSky API. You can skeet and upload images from a PowerShell prompt as well as view your feed and timeline.
Community
- PowerShell, Microsoft Graph, and MVP Wisdom with Christian Ritter \ Join us as we chat with Microsoft MVP Christian Ritter about all things PowerShell and beyond! Christian dives into his journey to becoming an MVP, his insights on Microsoft Graph, and the impact it's having in the PowerShell community. We also explore the growing PowerShell community in Germany and get an exciting preview of the upcoming PowerShell Saturday event. Whether you’re a PowerShell novice or a seasoned pro, this episode has something for everyone
- PowerShell + DevOps Global Summit 2025 Call for Proposals (CFP) \ Submissions are due by midnight tonight.
- Celebrating 18 Years Of PowerShell - An Inside IT Automation LIVE Special \ Come watch the replay of a livestream celebration for PowerShell's 18th birthday. Hear stories, tips, learnings and a look back at how PowerShell has grown into this amazing IT automation technology it is today.
Fun
- How do you pronounce regex? \ Join the conversation and submit your answer today.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for November 8, 2024
Blogs, Articles, and Posts
- How to Use the Graph SDK to Manage Group-Based Licensing \ Group-based licensing is a mechanism to make it easier to assign and mange product licenses for large sets of user accounts. In this article, we discuss how to use Microsoft Graph PowerShell SDK cmdlets to manage group-based license assignments in a Microsoft 365 tenant. Assigning licenses to groups is very much like direct assignments, but some differences exist.
- PowerShell: (Parameter) Splatting explained \ It often happens that you have many, many parameters in PowerShell. The command then extends over several lines. That doesn’t look pretty.
- Using The PowerShell Pipeline Like a Pro \ Learn how to use the PowerShell pipeline effectively in this hands-on tutorial. Discover how to chain commands together, check pipeline support, and write more efficient PowerShell code.
- How to Disable Power Apps Permissions PopUp Consent Form? [Using PowerShell] \ While sharing Power Apps applications with end users, we might get a consent popup message like the one below. This message asks the user permission to establish a new connection to the application. So, the user needs to connect to whatever connectors the app maker used for that application.
- Restrict non-admin access to the Microsoft Entra portal with PowerShell \ Learn how to restrict non-admin users access to the Microsoft Entra admin portal using Microsoft Graph PowerShell.
Projects, Scripts, and Modules
- WinPostInstall: Windows Post Install script written in PowerShell \ A little Post Install PowerShell script that I made for myself. The script takes care of some commont tasks that most will do anyway after a fresh install.
- ProcessEx: Exposes the Windows Process creation Win32 functions in PowerShell \ Exposes the Windows Process creation Win32 functions in PowerShell - jborean93/ProcessEx
Books, Media, and Learning Resources
- PowerShell Class Episode #5 \ PowerShell Class, Where-Object, Select-Object, Sort-Object and Export-CSV
Community
- The Importance of Community in Tech. Mike Kanakos and Phil Bossman \ In this episode, we dive into all things community and PowerShell Saturday, from preparation and organization to the impact of community-driven events on career growth. We chat about what led up to the big day, our personal experiences, and why attending conferences, user groups, and community events can be game-changing for anyone in tech. Find your next step and be the community!
- Celebrating 18 Years Of PowerShell - An Inside IT Automation LIVE Special \ Join us for PowerShell's 18th Anniversary Celebration!
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
Looking for feedback on my script
Script is made to control Veeam VBR Thanks for taking a look at my massive feature creep ;)
```powershell <# .SYNOPSIS Startet ein Veeam VBR Job
.DESCRIPTION Startet einen VBR Job basierend auf den Namen. Ursprünglicher Zweck war ein Verknüpfung von Jobs (z.B. als Pre-Execution Skript)
.PARAMETER JobName Job-Name des Backup Jobs
.PARAMETER JobType Typ des Backup Jobs Erlaubte Typen: VAW, VAL, VMware, Nicht erlaubte: Typen: HyperV, PVE
$Get-VBRBackup | Select-Object -Property Name,TypeToString,JobType Backup Pretty Verbose Typ im Skript Notizen ######################################################################################################## Backup Copy Job Backup Copy SimpleBackupCopyPolicy / / VAW Managed SRV Windows Agent Backup EpAgentBackup VAW CMDlet deprecated for Agent backups VAW Managed PC Windows Agent Policy EpAgentPolicy VAW CMDlet deprecated for Agent backups VAL Managed SRV Linux Agent Backup EpAgentBackup VAL CMDlet deprecated for Agent backups VAL Managed PC Linux Agent Policy EpAgentPolicy VAL CMDlet (probably) deprecated for Agent backups # UNGETESTET WERTE! Proxmox VE Proxmox Backup VmbApiPolicyTempJob PVE Nicht nutzbar mit Powershell via Start-VBRJob VMware VMware Backup Backup Backup VMware Hyper-V
.EXAMPLE Start-VeeamJob.ps1 -JobName passes F1234567-1abc-1234-ab1c-1a2345b6c78d to $JobName
.NOTES Author : Appoxo Version : 2.0
.LINK Job-ID auslesen: Get-VBRComputerBackupJob | Where-Object Name -CLike "Name" | Select-Object -Property Id, Name #>
[CmdletBinding()] Param( [Parameter(Mandatory = $true, HelpMessage = "Enter Job-Name of the VBR-Job")] [String] $JobName,
[Parameter(Mandatory = $true, HelpMessage = "Art des VBR-Jobs. Die Bezichnung ist NICHT canse-sensitiv!")] [string] $JobType )
Begin { Write-Host "Script started successfully" $ExitCode = 0
#TimeStamp Logging: function Get-TimeStamp {return "{0:yy/MM/dd} {0:HH:mm:ss}" -f (Get-Date)}
<# #Debug Values: $JobName = "L1 Backup Appoxo-PC2 (Games)" $JobType = "VAW" #>
# Variablen $workingDir = "C:\Skripte\SkriptLogs" $log = "$($workingDir)\Log-StartVeeamJob.log" $JobDetails = Get-VBRBackup | Where-Object Name -EQ "$($JobName)" $timeout = 9
# Vorbereitung if ($JobType -in @("VAW","VAL","VMware")){ Write-Host "Valid backup type selected" $JobTypUnbestimmt = 0 } else { Write-Host "Invalid backup type selected. Please choose something else :)" $ExitCode = 1 exit $ExitCode }
if (Test-Path -Path $workingDir) { } else { New-Item -ItemType Directory -Path "$workingDir" }
if (-not (Test-Path -Path $log -PathType Leaf)) { New-Item -ItemType file -Path $log Add-Content -Path $log "Log zur Überprüfung der Start von VBR-Jobs" } }
Process { Write-Host "You passed the following information:" $data = @([PSCustomObject]@{"Job Details"="$($JobDetails.Name)"; "Selected Job Type"="$($JobType)"}) $data | Format-Table -AutoSize Write-Host "The following Job-ID was found for this job: $($JobDetails.JobId)"
Write-Host "If there is an error please abort NOW." while ($timeout -gt 0) { Write-Host -NoNewline "`rThe script starts in $($timeout)" Start-Sleep -Seconds 1 $timeout-- } Write-Host "Starting script now!" Write-Output "$(Get-TimeStamp) Start des Backup Job Skripts. Für den Job '$($JobDetails.Name)' wurde die Job-ID $($JobDetails.JobId) gefunden!" | Add-Content -Path $log
try{ $startTime = Get-Date Write-Host "Validating input... This may take a while" if((($JobType -in @("VAW","VAL"))) -AND (($JobDetails.JobType -in @("EpAgentBackup","EpAgentPolicy")))) { Write-Host "Valid backup type '$($JobDetails.TypeToString)' was found. Starting now!" Start-VBRComputerBackupJob -Job $JobName | Select-Object -OutVariable JobResult } elseif (($JobType -in @("VMware")) -AND (($JobDetails.JobType -in @("Backup")))) { Write-Host "Valid backup type '$($JobDetails.TypeToString)' was found. Starting now!" Start-VBRJob -Job $JobName | Select-Object -OutVariable JobResult } elseif (($JobType -in @("PVE")) -AND (($JobDetails.JobType -in @("VmbApiPolicyTempJob")))) { Write-Host "Der Job des Typs $JobType ist aktuell nicht implementiert" $ExitCode = 1 exit $ExitCode <# Write-Host "Valid backup type '$($JobDetails.TypeToString)' was found. Starting now!" Start-VBRJob -Job $JobName | Select-Object -OutVariable JobResult #> } else { Write-Host "Invalid backup type '$($JobDetails.TypeToString)' was found. Please restart the script!" Write-Output "$(Get-TimeStamp) Bestimmung des Typs für den Job '$($JobDetails.Name)' nicht erfolgreich. Angegeben wurde '$($JobType)'" | Add-Content -Path $log $ExitCode = 1 $JobTypUnbestimmt = 1 }
# Job Result report if(($JobTypUnbestimmt -EQ 0) -AND ($JobResult.State -EQ "Stopped") -AND ($JobResult.Result -EQ "Success")){ Write-Host "Execution of the Job '$($JobName) was successful" Write-Output "$(Get-TimeStamp) Backup Job $($JobDetails.Name) erfolgreich ausgeführt" | Add-Content -Path $log $ExitCode = 0 } else{ Write-Host "Execution of the Job '$($JobName) encountered an error. Please check the VBR-Console" Write-Output "$(Get-TimeStamp) Fehler beim ausführen vom Backup Job '$($JobDetails.Name)'" | Add-Content -Path $log $ExitCode = 1 } #Stats $endTime = Get-Date $executionTime = $endTime - $startTime } catch { Write-Host "Something went wrong during execution" Write-Host $_ # This prints the actual error Write-Output "$(Get-TimeStamp) Error: $($_)" | Add-Content -Path $log $ExitCode = 1 } }
End { Write-Output "$(Get-TimeStamp) Skript abgeschlossen für $($JobDetails.Name) Job-ID $($JobDetails.Id)" | Add-Content -Path $log Write-Host "Script ended." $seconds = "{0:N2}" -f $executionTime.TotalSeconds $minutes = "{0:N2}" -f ($executionTime.TotalSeconds / 60) Write-Host "Time for stats! The script took $($seconds) seconds or $($minutes) minutes)" exit $ExitCode } ```
PowerShell Weekly for November 1, 2024
Announcements!
- Announcing Microsoft.PowerShell.PlatyPS 1.0.0-Preview1 \ We are pleased to announce the release of Microsoft.PowerShell.PlatyPS 1.0.0-Preview1, a tool to build PowerShell help files.
Blogs, Articles, and Posts
- GitHub Copilot in Windows Terminal \ GitHub Copilot users can now use the power of GitHub Copilot to get command suggestions and explanations without leaving the terminal with Terminal Chat in Windows Terminal Canary 🚀 This is available for all GitHub Copilot Individual, Business, and Enterprise customers. To get started, sign up for a GitHub Copilot free trial and check out […]
- Creating an AWS SSL Certs from Scratch (CLI and PowerShell) \ Learn how to create SSL certificates in AWS Certificate Manager using the AWS CLI. This tutorial walks through setting up permissions, requesting a certificate, and verifying its creation.
- Export Complex PowerShell Objects to CliXML: A Practical Guide \ Learn how to export complex, nested PowerShell objects to CliXML while preserving their structure and relationships. Follow along with a real-world example using workout program data.
- Dell Command Update – Install & Manage via PowerShell \ So if you haven’t read my last post yet, Dell Command Update – pulling back the curtains – GARYTOWN ConfigMgr Blog, you should, as I go into how Dell Command Update (DCU) gets it’s feed of information under the hood. That is the basis for a lot of things I’ll be doing. In this post, ... Read more
- Popping Toast Notifications in PowerShell Core \ If you’ve ever popped a toast notification in PowerShell using the Windows Runtime (WinRT), you’ve probably discovered that, whilst it works fine in PowerShell 5, it doesn’t work at all in PowerShell Core (5/6/7+). That’s because the WinRT assemblies are not included in PowerShell Core – WinRT is an exclusively Windows thing
- Powershell - Managing disks, partitions and volumes \ How to manage disks, partitions and volumes in Powershell
- How to bypass Microsoft Graph PowerShell access restrictions \ Learn how to bypass Microsoft Graph PowerShell access restrictions and gain full directory access using PowerShell.
Projects, Scripts, and Modules
- Show-PSRunObject: function to inspect objects \ Example function to inspect objects interactively. It shows what methods and properties the passed object has. You can go down/up the object hierarchy with key presses.
- WinPostInstall \ Windows Post Install script written in PowerShell
- PSBluesky \ If you are a Bluesky user, I'm working on a PowerShell module so that you can do things like post from a PowerShell prompt. Not ready to publish to the PSGallery, but the module is stable enough for you to kick the tires.
- PSAPIClient v 1.1.0 \ This Powershell module is a wrapper for the use of one or more API(s). Each API can be configured and addressed independently. This allows easy use of multiple APIs within a session.
Books, Media, and Learning Resources
- Learning PowerShell using Microsoft Learn \ This week, I posted a link to the PowerShell courses/learning paths on Microsoft Learn for PowerShell; I did that because there is so much material to learn from and use as a reference/help system. In this blog post, I will show you your options at Microsoft Learn to improve your PowerShell skills.
Community
- Listener Voices: Reflections on PowerShell Saturday NC with Rafael Garcia, Kevin O'Connor, and Ryan Park \ In this special episode of the PowerShell Podcast, recorded at PowerShell Saturday NC, we sit down with Rafael Garcia and Kevin O'Connor to discuss their experiences at the conference. They share their key takeaways, favorite sessions, and the excitement of connecting with the PowerShell community in person.
- Inside IT Automation | E17 \ Chrissy LeMaire talks about PowerShell, AI, dbatools and more
- Best & Worst Help Desk Software, Top PowerShell Modules, and a PDQ AMA! \ This week on PDQ LIVE, there’s a cornucopia of IT goodness. Do you have a favorite or least favorite help desk software solution? We’ll sift through the good, the bad, and the necessary. Our PowerShell MVP, Andrew, will show us his favorite PowerShell modules.
Fun
- Beware the PowerShell Oracle \ A PowerShell WPF script to generate a magic oracle. All in good fun. - MagicOracle.ps1
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for October 25, 2024
Blogs, Articles, and Posts
- Automating VM Deployment in Azure with PowerShell \ Learn how to automate the deployment of a Windows VM on Azure using PowerShell. This guide covers network setup, NSG rules, and IIS installation.
- Get Active Directory ports with PowerShell \ Active Directory services communicate over specific ports needed for authentication, replication, and other directory services. Knowing these ports is crucial for configuring firewalls, ensuring secure communication, and troubleshooting network issues related to Active Directory services. This post will teach you how to get the Active Directory ports with PowerShell.
- How to Set Directory Synchronization Features with the Graph \ Directory synchronization features control how the Entra Connect tool works when synchronizing accounts from Active Directory to Entra ID. The current advice is to use a cmdlet from the depreciated MSOL module to update settings. This article explains how to do the job with the Graph APIs, including cmdlets from the Entra PowerShell module.
- Automating Sign-In Analysis with PowerShell and Microsoft Graph \ In this article, we'll walk through how to explore and analyze Conditional Access data in Microsoft Entra using the Developer Tools in your browser. The purpose of this walkthrough is to demonstrate how you can identify and extract the necessary Microsoft Graph API calls directly from the Entra portal, providing a foundation for automating this process with PowerShell.
- List all EEEU and Anonymous links for SharePoint and OneDrive! \ A colleague of mine asked me before the weekend if I knew if there was a way to list all Everyone Except External Users and Anonymous links for OneDrive for Business. He had written a PowerShell script but had some errors.
- Practical PowerShell: The Dark Power of Dynamic Parameters \ In this episode of Practical PowerShell, we dive into the dark power of dynamic parameters, and how to use them within in functions and scripts.
Projects, Scripts, and Modules
- Get-ConditionalAccessSignIn.ps1 \ The Get-ConditionalAccessSignIn function retrieves Conditional Access Sign-In logs from the Microsoft Graph API within a specified date range.
- Automating Wireshark in Windows \ For advanced scenarios where you need to automate running Wireshark at scale
- PSAzureVirtualDesktop v 1.0.3 \ Build Azure AVD POCs
Community
- Cross-Platform PowerShell and Sending Emails with Frank Lesniak & Neha Patil \ In this episode of the PowerShell Podcast, we dive into the world of cross-platform PowerShell with Frank Lesniak, who shares insights from his recent talk at PowerShell Saturday NC. Frank explores some unique use cases for PowerShell across different platforms and opens up about his interests beyond the scripting language.
- BlueSky PowerShell Community starter pack \ If you're part of the exodus from X to Bluesky and you like PowerShell and automation, check out this PowerShell Community starter pack.
Events
- PowerShell AI Build Hour - Doug Finke \ Friday, October 25, 2024 - 12:30 PM to 1:30 PM EDT
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for October 18, 2024
Blogs, Articles, and Posts
- Convert to Azure Premium SSD v2 Disks with PowerShell \ Azure Premium SSD v2 disks, currently in public preview, provide enhanced throughput and IOPS at a lower cost than earlier versions. You can convert existing disks to Premium SSD v2 using PowerShell. However, it's crucial to understand the specific limitations and requirements beforehand.
- Manage Your SharePoint Online Environment with PnP PowerShell \ In this article, we explain how to get started using PnP PowerShell, and review some practical examples of where the module can immediately add value for tenant administrators.
- Duplicate Drivers from a ConfigMgr Boot Image \ When creating new boot images in ConfigMgr, you often want to copy drivers from an older boot image. If you have many drivers added, it's way quicker to do that in PowerShell compared to comparing drivers in the boot image drivers tab.
- Query WinGet software installer data with PowerShell \ I'm a big fan of WinGet, and the software available in their ecosystem is growing daily. Still, I'm always curious about what WinGet will download and how it does the silent install of the specified software. In this blog post, I will show you an easy way of retrieving that data :)
- Automating Performance Monitor in Windows \ For advanced scenarios where you need to automate running Perfmon at scale
- Type less by using PowerShell type accelerators \ I had heard the PowerShell term “type accelerators” a few times, but never really knew what that meant. I finally decided to check out the about_Type_Accelerators docs and it turns out they’re simply aliases for .NET types.
Projects, Scripts, and Modules
- PSMSGraphFunctions/Get-MSGraphEnterpriseApplicationPermission.ps1 at main · HCRitter/PSMSGraphFunctions \ Export permission scopes for Enterprise Apps in your tenant using oauth2PermissionGrants (represented) & appRoleAssignments (within).
Books, Media, and Learning Resources
- PSQuizMaster v 1.3.0 \ A module for running and creating quizzes to learn PowerShell. Quizzes are stored as JSON files.
- Automate Your Daily Database Checks with PowerShell \ You'll get a glimpse of how I do health checks for large SQL Server Always On Availability Groups at the end of the video.
Community
- Exploring Redfish Protocol, Data Science, and PowerShell with Blake Cherry & Danny Stutz \ In this episode of the PowerShell Podcast, I sit down with Blake Cherry to discuss the Redfish Protocol and its impact on simplifying data center hardware management, drawing insights from his talk at PowerShell Saturday, NC. We explore how Redfish is reshaping IT systems at scale. I also speak with Danny Stutz, who dives into the intersection of PowerShell and Data Science, covering topics like AI, data analysis, and K-means clustering, all applied to real-world use cases using PowerShell. Whether you're managing hardware or looking to integrate advanced data science techniques into your scripts, this episode has something for everyone!
- OpenAI for PowerShell with Doug Finke \ You should be writing tests for your PowerShell scripts... but how to get started? Doug talks to RunAsRadio about using ChatGPT and GitHub Copilot to explore different aspects of PowerShell, including testing!
Events
- PowerShell AI Build Hour - Doug Finke \ Friday, October 25, 2024 at 12:30 PM EDT - Ready to go from zero to app hero? I'll live demo building an app using the new OpenAI Canvas—the interface that transforms writing and coding into an interactive adventure. This isn't just chat; it's creating real-world projects, start to finish.
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for October 11, 2024
Blogs, Articles, and Posts
- Customer Managed Planned Failover for Azure Storage using PowerShell \ Currently, in Preview, the Customer Managed Planned Failover feature allows you to manage and execute a planned failover of your Azure Storage account. This guide demonstrates how to perform this using PowerShell.
- EntraFIDOFinder Update \ October 15, is less than a week away for the MFA requirement on certain 365 Apps. Please make sure you are all set by then. Make sure to go through all your accounts, especially those old ones that you rarely ever touch, and see if you still need it or what is the best way
- Build a Windows Server 2025 S2D cluster lab with Hyper-V and PowerShell \ To explore Storage Spaces Direct (S2D) in Windows Server 2025, you can set up a lab environment using virtual machines with Hyper-V and PowerShell.
- A Complete Guide For SharePoint Site Creation with PowerShell \ In this article I want to show you how you can streamline the SharePoint Site creation with PowerShell. You can save time by doing it with PowerShell especially, if you want to create multiple sites as part of a backend process.
- Check the Software Installation/Removal History in Windows \ A complete history of software installations, updates, and removals on a computer can be found in Windows Event logs.
- Signing PowerShell Scripts on macOS \ MAJOR UPDATE During my PowerShell session at MacAdmins 2023, someone asked if you could sign a PowerShell script on macOS. Doing so on Windows is trivial and well-documented elsewhere, I won’…
Books, Media, and Learning Resources
- How I Write PowerShell Scripts for Microsoft 365 \ The question of how best to write PowerShell for Microsoft 365 was asked during a TEC 2024 PowerShell workshop. There are many variables, and one has the right answer. To start the ball rolling, this article describes how I write PowerShell for Microsoft 365 using a variety of modules such as Exchange, SharePoint, Teams, and the Microsoft Graph PowerShell SDK.
- How to Create Your First Azure Automation Runbook with PowerShell \ Learn how to create, publish and run your first Azure Automation runbook using PowerShell and the Azure CLI. This step-by-step guide walks through setting up an Automation account, creating a runbook, and executing it in Azure.
- Automatically Optimize Static Images of your Project via PowerShell Script \ Automatically Optimize Static Images of your Project via PowerShell Script
Community
- Culinary to Command Line: Catching Up with Drew McClellan \ In this episode of the PowerShell Podcast, we welcome back the "bestsest in the midwestest" Drew McClellan, who shares his recent promotion from Jr. Sysadmin to SysAdmin II. Drew talks about how he uses PowerShell in his daily role, tackling new software implementations and projects, and his approach to continuous learning. We also dive into how the OnRamp experience at PowerShell Summit helped prepare him. As a bonus, Drew, a chef for 10 years, dishes out some recipe recommendations to Andrew!
- Shorten The Code - Results and Learnings with Well-known Community Members \ Xavier Clinquart from the Belgian PowerShell User Group has analyzed all scripts, and now it is time to take a look at the best ones. Together with well-known members of the PowerShell community, we will talk about the results and learnings of this fun competition.
Fun
- PowerShell 7: Changing the Style of the Progress Bar with $PSStyle \ If you include a progress bar in PowerShell, you will notice that it looks different in PowerShell 5 and PowerShell 7. This is exactly the problem we will tackle in this blog
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
PowerShell Weekly for October 4, 2024
Blogs, Articles, and Posts
- Restore classic context menu in Windows 11 Explorer using Group Policy or PowerShell \ Alongside the revamped Start Menu, one of the most noticeable changes in Windows 11 is the redesigned context menu in File Explorer. However, these modifications are not merely aesthetic – they also restrict its functionality. You can deploy a registry key using Group Policy Preferences to restore the classic context.
- How to Create Azure Service Principals in PowerShell \ Learn how to create Azure service principals using PowerShell, enabling secure automation for managing Azure resources like virtual machines.
- Microsoft Retires the Revoke-SPOUserSession Cmdlet \ Unsurprisingly, Microsoft announced the deprecation of the Revoke-SPOUserSession cmdlet for November 2024. The cmdlet is replaced by the Revoke-MgUserSignInSession cmdlet, which works across Microsoft 365 rather than just SharePoint Online. All of this happened while the 2nd annual PowerShell Script-Off happened at TEC 2024 and competitors struggled with what to do to secure a user account for an ex-employee.
- GitHub Copilot Password Warning \ Did you know that GitHub Copilot is now sensing hard coded credentials and giving you a warning? It’s not perfect, but even if something looks like hard coded creds it will flag it, as on another script I had, it contained numbers that looked like they could be private, and it gave me a warning
- Using Get-Content in PowerShell \ I use Get-Content a lot (or cat, gc, and type as its alias) to display or track the contents of a file. There are different parameters for it, and in this blog post, I will show you what you can do with those :)
- Customize your Windows 11 (23H2 and onwards) taskbar during OSD with ConfigMgr using just PowerShell \ Approximately two years ago, I authored a blog post detailing how to customize the taskbar in Windows 11.
- Running PSScriptAnalyzer in GitHub Actions \ I was working on a project recently that has some PowerShell scripts and I wanted to add some kind of linting for PRs, as you do. The go-to for PowerShell seems to be PSScriptAnalyzer and it's something I've already setup in VS Code. Great! The next step was to setup
- PowerShell Potluck - September 2024 \ Welcome back to another PowerShell Potluck, and you didn't have to bring a thing, other than a little curiosity and a willingness to try new things.
Projects, Scripts, and Modules
- EntraFIDOFinder – New PowerShell Module \ After so much interest from my post on Friday, I figured I’d do one better and make a PowerShell module that does it for you. So now you will be able to find which FIDO2 keys are attestation compatible with Entra right from your terminal. In the very near future I will have individual functions
Books, Media, and Learning Resources
- Common PowerShell Commands You Will Use As A System Administrator \ Are you ready to level up your PowerShell skills? In this video, we’ll cover 10 essential PowerShell commands every IT pro, sysadmin, and developer should know. These commands will streamline your scripting, automation, and everyday tasks on Windows.
- What are the different Help commands available out of the box using PowerShell? \ This video provides a basic introduction on all the help commands available in Windows PowerShell.
Community
- PowerShell + DevOps Global Summit 2025: Call for Papers Now Open! \ PowerShell + DevOps Global Summit 2025: Call for Papers Now Open! Calling all innovators, problem-solvers, and thought leaders in the PowerShell and DevOps realm!
- Spectre Console and TUI Magic with Shaun Lawrie \ On this episode of The PowerShell Podcast, we sit down with Shaun Lawrie to discuss terminal user interfaces (TUIs) and his work on the PWSHSpectreConsole project. Shaun shares insights into the world of TUIs, offers valuable career advice, and talks about his journey in tech. Tune in for practical tips and an in-depth look at what it takes to thrive in the PowerShell ecosystem.
Fun
- PowerShell ASCII Art \ I posted my Windows Terminal this week on social media channels, including LinkedIn, and received some responses about the login banner screen. In this blog post, I will show you an easy way to pimp your PowerShell Console ;)
Check out psweekly.dowst.dev for all past editions as well as a searchable archive.
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
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.
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)
Just got a photo from one of them - what the heck are all these people doing on 5.1?...
I'm not going myself but sending 2 employees down there. Been attending in the early years myself, when it first was Don Jones and then Tobias Weltner running it.
Content of the conference is very technical and can highly recommend it. Enjoy!
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.
Just figured it out! Added '.pdf' in the second half of the command.
$names = cat "\path\to\names.txt"; $i=0; dir | % { ren $_ "$($names[$i]).pdf"; $i++ }
Thanks for all your help!
So it sort of worked in that it outputed a bunch of files with the names but with blank icons and not the Adobe icons. Powershell also had an error for each list item that looked like the following:
Rename-Item : Cannot bind argument to parameter 'NewName' because it is an empty string.
At line:1 char:86
+ ... ads\individuals.txt"; $i=0; dir | % { ren $_ "$($names[$i])"; $i++ }
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Rename-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Rena
meItemCommand
Maybe the command needs '.pdf' somewhere?
Are you only interested in using Powershell? There’s a FOSS utility called PowerRename (part of PowerToys) which uses find/replace and RegEx to let you batch rename a group of files: MS Learn - PowerRename
There's no point in having a CSV for just a single column, just make it a simple text file and it'll simplify the code a bit. So assuming you have a file called names.txt
, here's a one-liner that can do the trick:
$names = cat "\path\to\names.txt"; $i=0; dir | % { ren $_ "$($names[$i])"; $i++ }
As long as the order in your text file matches the order shown by dir
, you shouldn't have any issues. Maybe do a dry run with a -WhatIf
to the ren
first to see how the files are being renamed, before you do the actual rename. :)
If the CSV file contains both the current names and the new names, this should work if you use the first line for column labels (I'm using OldName and NewName in this example):
Import-CSV $pathToCSV | ForEach-Object { Rename-Item $_.OldName $_.NewName }
If you just have a list of new names as a text file where the first line of the file is the new name for the first file (by name, sorted alphabetically), this should work:
$files = Get-ChildItem -File *.pdf | Sort-Object -Property Name #I think the output of Get-ChildItem is already sorted by name, but I'm not sure
$newNames = Get-Content $pathToTXT
if ($files.Count -ne $newNames.Count) {
Write-Error "The number of PDF files to be renamed does not match the number of new names"
exit
}
0..($files.Count - 1) | ForEach-Object { Rename-Item $files[$_] $newNames[$_] }
Here are some possibly related communities in the instance:
Feel free to crosspost into them or post future content on this topic there if they are relevant.
I am a bot and this was performed automatically 🤖 For any issues contact Ategon.
@pwshguy I didn't give them a bio, so they just said what they know 😉
Probably this script:
#!/bin/bash
if [ -z "$1" ]
then
echo "Please provide git repository url as an argument for this script."
exit 1
fi
regex='(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]'
if [[ $1 =~ $regex ]]
then
basename=$(basename $1)
reponame=${basename%.*}
curl -X 'POST' 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' \
--insecure \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{ "clone_addr": "'"$1"'", "issues": false, "labels": false, "lfs": false, "mirror": true, "mirror_interval": "96h0m0s", "private": false, "repo_name": "'"$reponame"'", "pull_requests": true, "releases": true, "repo_owner": "githubpublic", "service": "git", "wiki": true}'
else
echo "Invalid URL"
exit 1
fi
You can adjust it as needed and as for why I have --insecure
flag, I have a direct network cable between my PC to the server, so encryption or HTTPS is not needed here. This is probably my favorite command, because I would write above as .sra.sh
in home directory and then alias the .bashrc
to make a sra
command by adding alias sra=/home/{your user account}/.sra.sh
in .bashrc
and from there, anytime I have an interesting repository that I want to archive, I simply run sra {git url}
and that's it. It also specify the mirror interval manually for 4 days interval rather than every 8 hours that would've needlessly spam the git server.
This is something I rely on everyday both as developer and system admin, I would maintain a different supply chain and prevent a supply chain attacks by generating my own package feeds/registry automatically from Gitea/Forgejo.
Edited to Add: I noticed this community is Powershell, here the powershell version of above:
param (
[Parameter(Mandatory=$true)]
[string]$gitRepoUrl
)
function Test-Url($url) {
$regex = "(https?|ftp|file)://[-[:alnum:]\+&@#/%?=~_|!:,.;]*[-[:alnum:]\+&@#/%=~_|]"
return $url -match $regex
}
$basename = Split-Path $gitRepoUrl -Leaf
$reponame = [System.IO.Path]::GetFileNameWithoutExtension($basename)
$headers = @{
'accept' = 'application/json'
'Content-Type' = 'application/json'
}
$body = @{
'clone_addr' = $gitRepoUrl
'issues' = $false
'labels' = $false
'lfs' = $false
'mirror' = $true
'mirror_interval' = '96h0m0s'
'private' = $false
'repo_name' = $reponame
'pull_requests' = $true
'releases' = $true
'repo_owner' = 'githubpublic'
'service' = 'git'
'wiki' = $true
} | ConvertTo-Json
Invoke-RestMethod -Uri 'https://localgitea.com/api/v1/repos/migrate?access_token={Access Token Here}' -Method POST -Headers $headers -Body $body -SkipCertificateCheck
Ahhhh my first Fediverse whoops! Posted with the wrong lemmy.world account I had originally used before finding programming.dev. Disregard my deleted one... let's try again 😅
I love terminal utilis like this, but I am a huge sucker for eye candy like icons (obviously with a supported font). It would be neat if there was a param to support icons so it looks something like the output from exa
, example below: