[-] pwshguy@programming.dev 1 points 13 hours ago

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

[-] pwshguy@programming.dev 1 points 17 hours ago* (last edited 17 hours ago)

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.

4

Announcements!

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

Fun

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

12

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

Community

Events

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

9

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

Books, Media, and Learning Resources

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.

7
2

Blogs, Articles, and Posts

Books, Media, and Learning Resources

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

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

4

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

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.

5

Blogs, Articles, and Posts

  • Build dynamic JSON with PowerShell
    I recently did a Contacts Sync with GRAPH Api and PowerShell to create Contacts in a Shared Mailbox and USer Contact Folder. At this time, it was needed to build dynamic JSON related to existing Values, so I looked for some posts on how to build dynamic JSON with PowerShell.
  • How to install PowerShell 7 and essential tools on Linux
    As you prepare for the OnRamp track at the PowerShell + DevOps Global Summit, this guide walks you through installing the essential tools on your Ubuntu Linux system if that's your preferred operating system. You'll learn how to install PowerShell version 7, Visual Studio Code, and the PowerShell extension for VS Code to ensure your system is prepared for the event. If you're using Windows 11, refer to the companion article, How to install PowerShell 7 and essential tools on Windows 11. A future article covers installations on macOS.
  • Installing the Entire Microsoft Graph PowerShell SDK Seems Like the Right Idea
    An article described some benefits that could be gained from not installing the complete Microsoft Graph PowerShell SDK. The question is whether the claimed benefits are more theoretical than actual. It’s hard to say because it all depends on how someone uses the SDK for development or to run scripts. Anyway, it’s a topic worth discussing.
  • How to Authenticate to Azure Using PowerShell (User and Device Authentication)
    Learn how to authenticate to Azure using PowerShell, including module installation, interactive and device login methods, verifying sessions, and managing multiple subscriptions.
  • Passkey Provider AAGUIDs PowerShell Module
    The FIDO2 specification requires each security key vendor to provide an Authenticator Attestation GUID (AAGUID) during registration. An AAGUID is a 128-bit identifier indicating the key type, such as the make and model. Passkey providers on desktop and mobile devices are also expected to provide an AAGUID during registration.
  • PowerShell Confirm Parameter: Best Practices for Safe Scripting
    The PowerShell Confirm parameter is an essential safeguard that prompts users before performing potentially destructive actions. This article will explore how to implement the -Confirm parameter in custom PowerShell functions to make them more robust and user-friendly. What is the PowerShell Confirm parameter?
  • Outlook Email Mover
    The way I manage my email might seem a bit strange. Due to working in IT, I get lots of emails. Some emails need action, some are regular emails, and some are notifications I want to know about as soon as they happen. I feel like a normal person would make an Outlook rule to…
  • SQL Query Stats via Powershell
    Checking query runtimes via PowerShell

Projects, Scripts, and Modules

  • PowerShellRun
    Terminal Based Launcher and Fuzzy Finder for PowerShell.

Books, Media, and Learning Resources

Community

  • Innovating with PowerShell: Micah Shonyo’s Path to C# Mastery
    In this episode of the PowerShell Podcast, we sit down with Micah Shonyo to explore his inspiring journey into PowerShell, from his early days learning the language to his current projects. We dive into the story behind his Microsoft Cluster Management module, discussing what motivated him to create it and how it helps sysadmins. Micah also shares how learning PowerShell opened the door for him to start using C#, blending scripting with development to elevate his technical skills. We wrap up the conversation with insights into his career goals and aspirations for the future.
  • Inside IT Automation E16
    The History of PowerShell with Jeffrey Snover

Fun

Events

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

10

Blogs, Articles, and Posts

  • Get-Mailbox Versus Get-ExoMailbox
    Microsoft's advice is to use the Get-ExoMailbox cmdlet instead of its older Get-Mailbox counterpart. Generally, this is good advice that you should follow. However, the older cmdlet can do a job in certain circumstances, so don’t write it off completely. More importantly, make sure that filtering of objects is done using server-side filters. This will improve script performance significantly.
  • Simple Tip for GitHub Copilot
    If you have GitHub Copilot, you may or may not know about this little tip, but wanted to let you know just in case. It has saved me so much time and it can be applied to a lot of scenarios.
  • Query the required permissions of a Microsoft Graph cmdlet
    Microsoft Graph can be difficult sometimes. There are loads of PowerShell Microsoft Graph Modules and cmdlets that require different permissions. In this blog post, I will show you how to query the permissions for a cmdlet, multiple cmdlets, or all cmdlets from a specific Microsoft Graph module.
  • Exploiting Exchange PowerShell After ProxyNotShell: Part 3 – DLL Loading Chain for RCE
    As you may know, I recently presented my Exchange-related talk during OffensiveCon 2024. This series of 4 blog posts is meant to supplement the talk and provide additional technical details. In this article, part 3 of the series, I describe a chain of 3 vulnerabilities that led to remote code exec
  • Attacking PowerShell CLIXML Deserialization
    In this article, we will learn that using PowerShell’s CLIXML deserialization could lead to undesired effects, including remote code execution. We will also see that widely used solutions, like PowerShell Remoting and PowerShell Direct (Hyper-V), rely on such deserialization and could make you vulnerable to this kind of attack.

Projects, Scripts, and Modules

  • Tabby
    Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux

Books, Media, and Learning Resources

  • PowerShell Advanced Functions: Getting Started Guide
    Advanced functions take your PowerShell development to the next level, letting you create cmdlet-like scripts with advanced features. In this article, we’ll dive into what makes cmdlets and advanced functions essential in PowerShell, with examples and tips to help you master them. What is a cmdlet? A PowerShell cmdlet (pronounced “command-let”) performs a specific task
  • PnP PowerShell Changed!!! ACT NOW
    In this video, I will show you about a big change in the way PnP PowerShell will work going forward. You might be facing an issue right now when you are working with PnP PowerShell. Watch this video to know how you can resolve this and get going.
  • Harness AI to Analyze Your Workflow with Custom PowerShell Scripts
    In this video, Doug Finke, a 16-time Microsoft MVP, showcases his PowerShell function GetWhatIWorkedOn. This tool helps you effortlessly track and summarize the files you've worked on over any specified period. By scanning multiple directories, it lists all the files you've modified, giving you a clear picture of your recent activities.

Community

  • Building Modern PowerShell Solutions: Justin Grote on TUIs, .NET, and Module Magic
    In this episode, we chat with Justin Grote about his work with PwshSpectreConsole and the power of TUIs in PowerShell scripting. Justin takes us through his impressive collection of PowerShell modules—ModulePath, GallerySync, and ModuleFast—and how they enhance the PowerShell experience. We also explore the advantages of .NET's Common Language Runtime (CLR) in PowerShell, using Spectre.Console as a prime example. Finally, Justin shares his thoughts on transitioning from Windows PowerShell to PowerShell 7 and the performance and feature benefits that come with the upgrade.
  • Scriptember Live: "PowerShell Is Fun - Episode 2" with Microsoft MVP Harm Veenstra
    In this live stream, we'll talk about how to have fun with PowerShell while improving IT automation tasks and processes.

Fun

  • Friday the 13th PowerShell Fun
    Well here are once again and another Friday the 13th. I love these days because I feel challenged to come up with 13 PowerShell related tidbits which I hope you'll find fun and maybe even a little educational. Manage and Report Active Directory, Exchange and Microsoft 365 withManageEngine ADManager Plus - Download Free Trial Exclusive...

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

8

Blogs, Articles, and Posts

  • Recover data from corrupted BitLocker drives with repair-bde and key packages
    Activating BitLocker encryption on a drive automatically generates a 48-digit numeric recovery password. This password is crucial if other unlocking methods fail and Windows prompts you with the BitLocker recovery console during startup.
  • Practical Graph: Working with Microsoft Lists using the Microsoft Graph PowerShell SDK
    Microsoft Lists are a powerful tool for end users to store and manage data stored in SharePoint Online sites. The Microsoft Graph PowerShell SDK includes cmdlets to work with Microsoft Lists and this article explains how to use the cmdlets to add new lists, add items to lists, retrieve data from lists, and remove items from lists.
  • My PowerShell for Visual Studio Code extension settings
    I use Visual Studio Code to create and edit PowerShell scripts. The PowerShell Extension from Microsoft has some excellent features that will make your scripts more readable and consistent formatting-wise. In this blog post, I will show you my configuration and the options I use.
  • Register an Entra ID Application to Use with PnP PowerShell
    As the volume of threats increases rapidly, staying aligned with the recommended practices is essential to enhance security effectively. As part of this, the multi-tenant PnP Management Shell Entra ID app was deleted on September 9, 2024, to improve application security. This change now requires admins to register their own…
  • Semi-Dynamic Static PowerShell Function Definitions for a Dynamically Semi-Static World
    It’s been a while since I posted anything to my blog. I needed a break. But I needed a break from the break. I hope you don’t mind. This is admittedly an “edge case” scenario. The “need” (with air quotes) for this occurred within fairly uncommon set of circumstances, but I thought the methodology might be useful in other cases. Or maybe not. But if it’s of some help to you, that makes it worth the effort for me.
  • WSUS – Cleanup using Powershell with email notification output
    If you are using WSUS in your environment, you may want to run a scheduled task to cleanup old updates and compress some of the larger updates to free up space on your server. A good way of doing this is to run a Powershell script which will take care of all your cleanup requirements and as we are using Powershell, we can even get it to send us an email once it is complete with the output information on what the script has managed to clean up.

Projects, Scripts, and Modules

  • Microsoft 365 Licensing Report Script V1.94
    The Microsoft 365 Licensing Report PowerShell script has been upgraded to generate detailed license information and to deal with expired license subscriptions. You can download V1.94 of the script from GitHub. Before attempting to run the licensing report script, take the time to read previous articles to understand the basics of the script and how to generate the files used for pricing information.

Books, Media, and Learning Resources

  • Turn PowerShell Into Your Excel Automation Machine
    Get ready to see how PowerShell can transform the way you work with Excel.
  • Azure Functions & PowerShell
    Join me as I discuss PowerShell-based Azure Functions. we will go through local Function development and testing to deploy a Function to Azure and even an Account storage queue-triggered Function that creates a Resource Group and Storage account from a queue message.

Community

Fun

  • Shorten the Code – Win cool Prizes
    Welcome to the ScriptRunner Shorten the Code Challenge! This exciting competition invites PowerShell enthusiasts to demonstrate their scripting prowess by transforming a PowerShell script into concise, efficient code.

Events

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

4

Announcements!

  • Scriptember 2024
    A month-long celebration of PowerShell and its vibrant community

Blogs, Articles, and Posts

  • New in Windows Terminal: Restore buffers, code snippets, scratchpad and regex
    Windows Terminal unveiled a range of noteworthy features in versions 1.21 and 1.22 Preview, including the capacity to retrieve previous sessions' output buffer upon startup, store code snippets for reuse within the console, and utilize a scratchpad for crafting intricate commands.
  • PowerShell: Calculate the total size of Files
    In this post I will show how to use PowerShell to calculate the total size of all files. This will be a short post but maybe a very helpful one.
  • Transferring Reusable PowerShell Objects Between Microsoft 365 Tenants
    People often need to transfer objects or code between Microsoft 365 tenants. When it comes to dealing with objects, the Microsoft Graph PowerShell SDK's ToJsonString method is very useful. The method outputs a string containing JSON content, but only for object properties that have a value. This makes the much easier to use the output as the basis for a template object or as the payload body to create an object in another tenant.
  • Get List Item Count in SharePoint Online Using PowerShell
    In organizations, SharePoint lists are essential for organizing and managing various data, from tracking tasks to managing customer information and inventory. These lists not only streamline collaboration but also ensure that data is easily accessible and well-structured.
  • Practical PowerShell Series: Part 6
    The practicalities of producing PowerShell output and generating logging are other essential scripting elements. No administrator likes to stare at a blank screen, wondering if the command just entered is functioning or not.
  • Configuring PowerShell settings using Intune or Group Policy
    Every Windows device has PowerShell installed by default. (Sadly, it's still only version 5, not version 7.) However, you want to configure the devices' security and log settings. In this blog post, I will show you how to do that using Microsoft Intune or Group Policy.
  • Taming My ADHD with Obsidian and PowerShell
    Alleviating my ADHD headaches with Obsidian. Periodic Notes and Templater extensions save the day by reminding me of the next step towards my larger goals.
  • 5 Reasons you should be using PSReadLine
    Get up to speed and use PSReadLine more often - in his first article for us, author Jeffery Hicks provides his 5 reasons why he recommends using PSReadLine.

Books, Media, and Learning Resources

  • Mastering Time in PowerShell: Measure statistical properties within time spans with PSDates [OC]
    Unlock the power of time manipulation in PowerShell with the Group-TimeSpan and Measure-TimeSpan cmdlets from the PSDates module! In this video, we'll dive deep into how you can group data by specific time spans and measure statistical properties like sum, average, maximum, and minimum within those groups. Whether you're looking to analyze logs, monitor system performance, or perform data analysis, these cmdlets offer powerful tools to streamline your workflows and enhance your data manipulation skills in PowerShell. Watch now to become a master of time-based data analysis!
  • Making Microservices with Docker and PowerShell
    The Pacific PowerShell User Group talks about making Microservices with Docker and PowerShell

Community

  • Being a Lazy Administrator with Bradley Wyatt
    In this episode of the PowerShell Podcast, I had the pleasure of chatting with Bradley Wyatt, also known as the Lazy Administrator. We explored his inspiring journey from college dropout to becoming a 5x Microsoft MVP and how he transformed his personal knowledge base into a globally recognized blog that serves as a vital resource for IT professionals. Bradley shares the lessons he’s learned along the way, his passion for automation, and the impact of his work on the PowerShell community.
  • Inside IT Automation - E11
    Bruno Buyck: Learning PowerShell with Lego

Events

  • Scriptember Live Stream Episode 1
    Scheduled for Sep 11, 2024. In this live stream, we'll talk about how to have fun with PowerShell while improving IT automation tasks and processes.

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

4

I'm excited to announce the latest update to PSDates is live on the PowerShell Gallery and GitHub.

This version introduced two powerful new functions designed to enhance data analysis capabilities in PowerShell!

  • Group-TimeSpan: This new cmdlet allows you to easily group objects by a specified time intervals. Whether you're working with logs, transactions, or any time-based data, you can now quickly organize your data into meaningful time intervals. This makes it simpler to analyze patterns, trends, and performance over time.

  • Measure-TimeSpan: This cmdlet takes the Group-TimeSpan to the next level by measuring statistical properties such as sum, average, maximum, and more within grouped time spans. It's perfect for generating detailed reports, analyzing system performance, or monitoring trends within your datasets.

It's available for installation from the PowerShell Gallery

Install-Module -Name PSDates 

PSDates on GitHub

1

Announcements!

  • PnP PowerShell Changes Its Entra ID App
    On August 21, 2024, news emerged that the PnP PowerShell module will transition from using a multi-tenant Entra ID app to a tenant-specific app. The change is scheduled for September 9, 2024, which doesn’t leave a lot of time available for developers to review, update, and test PowerShell scripts based on PnP PowerShell. Some extra warning would have been nice.
  • Windows Terminal Preview 1.22 Release
    Hello friends, we have a new Windows Terminal Preview release! Windows Terminal Preview 1.22 is a large release that contains new features such as Sixel image support (a LARGE community contribution!), Grapheme Cluster Support, the Snippets Pane, Quick Fixes in CMD, and a new Cooked Read popup in CMD to name a few!
  • PowerShell 7.5.0 preview 4 released
    Download the newest preview release of PowerShell 7.5.0

Blogs, Articles, and Posts

  • Display Markdown files in PowerShell
    Creating Markdown files is something that I do regularly, usually in Visual Studio Code or Obsidian. But when working in a Windows Terminal or a standard PowerShell prompt, it's nice to display those .md files in those, too, with all the formatting that Markdown gives you. In this blog post, I will show you how :)
  • Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel
    TLDR make sure your system time is correct in Windows & BIOS Ok, this has been well documented around the internet, and the typical answer is: Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel – Stack Overflow However today I was really annoyed because that was already built into my script
  • How to make your Windows ssh keys available to git in WSL
    A neat little trick.

Projects, Scripts, and Modules

  • Mastering Active Directory Hygiene: Automating Stale Computer Cleanup with CleanupMonster
    Have you ever looked at your Active Directory and wondered, "Why do I still have computers listed that haven't been turned on since World Cup 2016?" Yeah, we've all been there. Keeping AD clean and up-to-date is like trying to organize your garage—it’s easy to put off until it becomes a total mess.
  • Creates a PSSession that targets a scheduled task process
    Created New-ScheduledTaskSession for PowerShell that can create a PSSession for use with Invoke-Command to run PowerShell code in the context of a scheduled task process. This is a fun way to bypass NETWORK logon limitations like the Windows Update API
  • PowerShell Nerd Fonts Installer
    I recently had the chance to work on a PowerShell installer for Nerd Fonts, which includes the new Cascadia Code/Mono from the Microsoft repository.

Books, Media, and Learning Resources

  • The Best PowerShell Cheat Sheet
    Looking for a good PowerShell cheat sheet? Then you are in the right place. I have been working with PowerShell for the last 10 years. During that time I have written down the most useful cmdlets, operators, or useful commands in many places, just to remind them.
  • Everything you wanted to know about exceptions
    Error handling is just part of life when it comes to writing code.

Community

  • Be the Community: Insights and Event Log Automation with Phil Bossman
    In this episode of the PowerShell Podcast, we sit down with the newly minted Microsoft MVP, Phil Bossman, to dive into the heart of the PowerShell community and what it truly means to "be the community." We discuss the excitement building around PowerShell Saturday NC and the invaluable learning opportunities it offers. Phil shares his expertise on exploring event logs and how to harness their power for PowerShell automation, providing practical insights for both beginners and seasoned pros. Join us as we celebrate Phil's journey to becoming an MVP and gain inspiration from his dedication to the PowerShell community.
  • Inside IT Automation E10
    Guy Leech talks about his PowerShell journey, the use of AI and more.

Fun

  • Among Us
    Randomly decided to add an Among Us theme to the end of the script to tell me it's finished running :)

Events

  • Scriptember Kick-Off: Let's celebrate PowerShell!
    We are kicking off a month-long celebration of PowerShell and its vibrant community. Join our kick-off session where we talk with some awesome members of the PowerShell community. We will discuss why PowerShell is a great IT automation technology, how to learn it and how PowerShell helps IT professionals advancing their careers.

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

[-] pwshguy@programming.dev 10 points 3 months ago

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

[-] pwshguy@programming.dev 3 points 4 months ago

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

[-] pwshguy@programming.dev 2 points 4 months ago

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.
[-] pwshguy@programming.dev 2 points 5 months ago

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

[-] pwshguy@programming.dev 4 points 10 months ago

I installed some security cameras around my house and set up Shinobi using an old PC. Unfortunately the PC is too old to use the built-in detectors in Shinobi. So, I took my first dive into playing around with some image detectors.

I wrote some python to download the daily recording from old PC to a newer one with a 3080 GPU. Then checks the videos for people. It will then trim the videos to only include times were there are people in frame. It cut my the storage requirements by over 95%.

[-] pwshguy@programming.dev 4 points 1 year ago

For some reason their API would not return anything for assembly. I was curious to see where it would rank too,

[-] pwshguy@programming.dev 3 points 1 year ago

The book I wrote. When I first talked with the publisher he asked, "what skills would you look for in someone who wants to do your job?" And that's the premise I stuck with writing it.

[-] pwshguy@programming.dev 4 points 1 year ago

Interesting. As someone who mainly deals in PowerShell, this is very similar to the Where-Object clause and could save me some headaches when I need to work in Python.

[-] pwshguy@programming.dev 2 points 1 year ago

From personal experience, it seems like things outside of your normal listening don't affect too much. At least in my case, my daughter making me play the Encanto soundtrack 250,000 times hasn't affected my weekly or daily playlists.

view more: next ›

pwshguy

joined 1 year ago
MODERATOR OF