1
2

Announcements!

  • The Right Way to Replace the Remove-SPOExternalUser Cmdlet
    Microsoft says they will remove the Remove-SPOExternalUser cmdlet starting July 29. They recommend using Remove-AzureADUser as a replacement. It's a bad call because that cmdlet is part of a now-retired and soon to be deprecated module. Overall, recommendations like this make you think that Microsoft doesn’t know what’s happening across the whole of Microsoft 365. And you might be right.
  • PowerShell Elevation of Privilege Vulnerability
    This one affects all Windows versions all the way back to Windows Server 2012, so be sure to get the cumulative updates installed. CVE-2024-38047 and CVE-2024-38043 are also PowerShell Elevation of Privilege Vulnerabilities included in the cumulative patches this month.

Blogs, Articles, and Posts

  • Audit Group Policy changes in the event log using XML queries and PowerShell
    Custom views in the Event Viewer allow you to filter the metadata of log entries based on various criteria. However, these filters do not assess the content of the log entry messages. To evaluate the log messages, you can extend filters using an XPath query. The examples below demonstrate how to audit Group Policy changes with XML queries, which you can further process with PowerShell.
  • Search and delete Copilot data in Microsoft 365
    Managing and deleting unnecessary Copilot data from Microsoft 365 is essential for reducing security risks and ensuring compliance with data protection laws like GDPR and HIPAA. This blog post will guide you through the steps to search for and delete Copilot data using eDiscovery, Graph Explorer, and PowerShell. Following these steps can enhance data hygiene and safeguard your organization against potential data breaches and legal issues.
  • PowerShell: Measure Objects (Count, Average, Sum …)
    The Measure-Object cmdlet counts objects. But it can do even more. We can calculate the sum, the average and much more. In this blog post I show a few examples with Measure-Object.
  • Office Connectors Retirement for Teams
    In June, Microsoft retired Office Connectors for SharePoint Online and Microsoft 365 Groups. Starting on August 15, they're retiring connectors for Teams. The problem is finding out which teams and channels have configured connectors. That's when PowerShell comes in handy, as we prove with a script to report which teams have connectors.
  • Using Pop-Location and Push-Location in PowerShell
    At PSConfEU, somebody asked me if I used Pop-Location and Push-Location. Well, I know it's there, but no. :) In this blog post, I will show you how to use it and that it might come in handy!
  • ViperSoftX malware covertly runs PowerShell using AutoIT scripting
    The latest variants of the ViperSoftX info-stealing malware use the common language runtime (CLR) to load and execute PowerShell commands within AutoIt scripts to evade detection. [...]
  • Low Space on EFI (System) Partition – Clean up
    Hey folks, this seems like a topic that keeps coming up, despite the fact I had assumed everyone was creating large EFI volumes (984MB) by now, but I keep finding folks who have 100MB and run into issues.
  • Practical PowerShell: Error Handling
    Writing PowerShell scripts can be a fulfilling task. After all, you write something to assist with a task or procedure so you can focus on the result, not the task itself. But what if your script tries to run an action and is unsuccessful, for example, when a user the script attempts to manipulate is invalid or the signed in account has insufficient permissions to run a cmdlet? And do not forget the peculiarities of the online world, such as a network connection dropping or an authentication token expiring.
  • Mediator Pattern using PowerShell
    The Mediator Design Pattern centralizes communication, reducing dependencies & improving maintainability. Instead of direct interactions, objects use a mediator.

Continued in the comments due to post character limits

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

2
4

Announcements!

Blogs, Articles, and Posts

  • Adding Details of Authentication Methods to the Tenant Passwords and MFA Report
    V1.2 of the User Passwords and MFA report includes the names of authentication methods registered for user accounts. V1.3 expands the amount of detail reported for each method, such as the phone number used for SMS challenges, or the email address used for SSPR. It’s a small but important detail that’s useful to administrators. However, it also comes with a potential privacy issue, so the script must handle that too.
  • Leveraging OpenAI to Enhance Pull Request Management in Azure DevOps
    Our goal is to create an automation that significantly enhances the efficiency of our development process. A service hook is triggered when a new Pull Request is created in Azure DevOps, sending a webhook to an Azure Function. This function analyzes the request body, gets all commits in the Pull Request, and sends it to Open AI’s API, which generates a Pull Request message detailing all of the proposed changes from the commits and writes it back to the Azure DevOps Pull Request.
  • Create, configure, and delete system restore points with PowerShell, vssadmin.exe, and System Properties
    System restore points allow users to roll back Windows to an earlier state if problems arise. These points capture important system files, the registry, and drivers. In addition to using the System Properties applet, you can manage system restore points with PowerShell and vssadmin.exe.
  • How to Identify MFA Deployment Source in Microsoft 365 Using PowerShell
    Have you ever felt like managing multi-factor authentication (MFA) is more of a hurdle than a security measure? Constant MFA issues can be frustrating! Here are some common MFA issues; as you read, consider how you might address these challenges.
  • Connect to the Microsoft Entra PowerShell Module
    We all know that Microsoft deprecated the Azure AD PowerShell and MSOnline PowerShell modules. So, they advise us to migrate all the scripts to the MS Graph PowerShell. But finding the equivalent cmdlets and updating the scripts can be tough. Don’t worry! Microsoft heard our struggle!
  • Using Debug and Verbose parameters in PowerShell
    It's one of those things you forget, and you can get a lot more output when running scripts that will help you find out why things are not working as you expected. This small blog post will show you how to get more verbose and debug information.
  • PowerShell: Beyond the Prompt!
    Powershell often gets overshadowed by its scripting cousin, Bash, but just like Ruby, Powershell offers a depth that goes beyond the initial impression.

Projects, Scripts, and Modules

  • PSLinux v 1.0.6
    The RedHatSatelliteSearch PowerShell module provides functions to retrieve and manage data from a RedHat Satellite server. This module allows users to specify search filters to query and fetch information about hosts and other resources managed by the Satellite server.

Books, Media, and Learning Resources

  • Counting Files with a Specific Extension Using PowerShell
    In this tutorial, we will guide you through the process of using PowerShell to count the total number of files with a specific extension within a directory and its subdirectories. This method is highly useful for system administrators and IT professionals who need to manage and analyze large volumes of files efficiently.

Community

  • From NoWayShell to PowerShell: A Coding Transformation
    In this episode, host Andrew Pla converses with coding enthusiast Josh Hendricks (@joshooaj) about his transformative PowerShell journey - a pathway that led him from avoidance to adoration. The discussion delves into the intricacies of Joshua's PSPushover and MilestonePSTools projects, developing an understanding of their creation process. Additionally, Josh recounts his captivating experience of giving a talk on "Docs" at the prestigious PowerShell Summit. This riveting dialogue remarkably encapsulates a personal journey blending skepticism, discovery, and innovation at the heart of coding.

Fun

  • TEC 2024 PowerShell Script-Off
    TEC 2024 in Dallas (October 1-2) will once again feature the TEC PowerShell Script-Off where coders attempt to come up with the best solutions for challenges set by the judges. The challenges are all Microsoft 365 scenarios (Exchange Online, Entra ID, Teams, and SharePoint Online), so there's nothing unknown about what we'll ask people to code. Come along to TEC 2024 and compete to be the best coder in town!

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

3
6
4
7
PSConfEU (lemmy.world)

Is anyone else heading to Antwerp this week?

I'll be there, and I'm really looking forward to the content, the people, and the general excitement!

5
12

Announcements!

Blogs, Articles, and Posts

  • Using PowerShell to Post Channel Messages with Teams Workflows
    The incoming webhook connector is a popular method to post information to Teams channels, but Microsoft seems set on retiring the Office connectors. The Teams post to channel workflow when a webhook request is received seems like is a possible replacement, but it's not just a matter of switching mechanisms. Some PowerShell magic is needed to create a suitable adaptive card to post to the channel, which is exactly what we explain how to do here.
  • Working with Calendar Permissions using the Microsoft Graph PowerShell SDK
    The Set-MailboxFolderPermission cmdlet is usually used to set calendar permissions, including the permission for the default user to allow everyone in an organization to see each other’s calendars. But you can use cmdlets from the Microsoft Graph PowerShell SDK too. The Graph SDK cmdlets are faster, but not enough to warrant replacing the Exchange cmdlet in scripts. We explain why here.
  • Automate Azure DevOps Work Item Updates with Azure Functions and the Azure DevOps API
    I use Azure DevOps Boards for agile project management, allowing me to plan, track, and discuss automation and DevOps tasks. I also create reporting dashboards from the data within the work items. One such metric I report on is how much time we save when implementing a new automation.
  • How to check if an Azure Marketplace image is marked for deprecation
    How to check if an Azure Marketplace image is marked for deprecation.
  • How to Add or Remove Pinned Folders to Quick Access with PowerShell and GPO
    Windows File Explorer has a separate panel that displays a list of favorite folders and locations called Quick Access. Many users and administrators unjustly ignore this handy Windows tool
  • How to Split a String by Length in PowerShell?
    When you need to split a string by a specific length, PowerShell offers various methods to do it. This PowerShell tutorial explains various methods to split a string by length in PowerShell To split a string by length in PowerShell, you can use a loop with the Substring method to iteratively extract parts of the string
  • Using Measure-Command and Measure-Object in PowerShell
    Measuring is always a good idea for grasping things, such as how long it sometimes takes, how many objects there are in a specific directory, how much space something takes up on a hard drive, etc. In this blog post, I will show you how the Measure-Command and Measure-Object cmdlets work and how you can use them to your advantage.
  • How to disable per-user MFA using Microsoft Graph PowerShell
    Learn how to use Microsoft Graph PowerShell to disable per-user MFA in Microsoft Entra to support migration to Conditional Access.

Projects, Scripts, and Modules

  • Version 1.9 of the Microsoft 365 Licensing Report
    The Microsoft 365 Licensing Report is a popular PowerShell script that's just been updated to V1.9 with a bunch of changes to highlight different aspects such as license costs for disabled user accounts and inactive user accounts. Copious use of some very dubious color choices makes the HTML report created by the script look very nice (if you're color blind) and the new version can generate an Excel worksheet.
  • PowerShellRun v0.7.0
    In PowerShellRun v0.7.0, you can now add script blocks and script files as entries. If you are managing many PowerShell scripts, PowerShellRun will help you create a TUI script launcher.

Books, Media, and Learning Resources

  • Monitor Your Network with PowerShell [OC]
    In this video you’ll see the full process I went through to create a script to monitor up and down times for my network.
  • Managed Identity With PowerShell And Azure Automation Accounts
    Join me in creating an automation account and using managed identity to connect to Azure, ExchangeOnline and Graph in this practical powershell example where we'll discuss how to connect, how to add permissions to a service principal and also a little bonus tip on how to get an access token for graph using Az and managed identity with the Get-AzAccessToken cmdlet.

Community

  • Andrew Celebrates & Previews psconf.eu with Christian & Bjorn
    In this episode of the PowerShell Podcast, Andrew starts things off by celebrating his new Microsoft MVP. Then, we hear about all things psconf.eu and what to expect from Christian Ritter and Björn Sundling at PSConf EU. We hear some of the juicy details and key takeaways from their sessions. Then we get an update on some of their projects like PSClippy, AzDM, PSSecretScanner, and much more!

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

6
21

I recently created a YouTube channel where I do deep dives into creating automations with PowerShell. Instead of just publishing the solutions I take you through the entire development process.

In this video I go through creating an uptime monitor for multiple IP addresses that can ping each IP every minute. I go through the evolution of trying Test-NetConnection, then giving up and using dotnet objects for asynchronous execution. And finally, how to put that all together and get your results.

This is only my fourth video, so any and all feedback on it is welcome.

7
13

Enjoy an extra large edition, since I was sick last week and wasn't able to post.

Blogs, Articles, and Posts

  • Use PowerShell to deploy and access GPT-4o in Azure OpenAI Service
    The Azure OpenAI Service is a specialized offering within the broader set of Azure Cognitive Services, providing access to OpenAI's language models. The service can be accessed through REST APIs, Python SDK, and a web-based interface, Azure OpenAI Studio. In this article, you will learn how to deploy and access the GPT-4o model in Azure with PowerShell.
  • Tracking Down User Logons with PowerShell and XPath
    When working with Windows event logs, especially the Security log, there might be instances where you need to extract specific information from events.
  • How to Leverage Reusable PS Remoting Sessions in your Scripts
    PS remoting lets you execute commands remotely. Learn how to create and manage persistent sessions in this short how-to covering creating and managing sessions.
  • Microsoft 365: How to set OneDrive Quotas with PowerShell
    In this blog post I will show you how to set OneDrive quotas with PowerShell. I’d say here we go! First, let’s connect to SharePoint Online.
  • Microsoft Purview Audit Search Graph API: Retrieve audit logs from Microsoft 365 with PowerShell
    Microsoft Purview integrates with Microsoft 365 applications such as Exchange, SharePoint, OneDrive, and Teams, providing comprehensive data governance, compliance, and protection capabilities across these platforms. One of the standout components of this suite is the Audit Search Graph API, which is currently in public preview. It allows developers and administrators retrieve detailed audit logs programmatically, providing deep insights into user activities across Microsoft services. In this blog, I will explore the full potential of the Microsoft Purview Audit Search Graph API and demonstrate how to use the API through both PowerShell and HTTP methods.
  • Understanding the Clean block in PowerShell
    PowerShell, a powerful scripting language and automation framework, provides features that enhance script development and execution. Among these features is the clean block, a lesser-known yet beneficial component in PowerShell functions. This article explores the clean block, its purpose, and how to use it effectively in PowerShell scripts.
  • To Splat or Not to Splat, That’s the Question
    Splatting is an optional PowerShell technique designed to make it easier to pass parameter values for cmdlets. It’s a personal choice whether to use splatting instead of passing values to individual parameters in the command line. Although the Microsoft Graph PowerShell SDK can be a little strange at times, you can use splatting with SDK cmdlets, even with some pretty complex parameters such as those used to filter objects.
  • Export Microsoft 365 License Cost Report Using PowerShell
    Microsoft 365 offers a vast array of plans and licenses, making it easy to find the perfect fit for your business needs. But with that flexibility comes complexity. Managing Microsoft 365 licenses and the cost spent on all those licenses can lead to confusion and can be a challenge.
  • Get SharePoint Files & Folders Created by External Users Using PowerShell
    External collaboration in SharePoint Online is essential for certain projects and tasks that might involve users from external organizations. External sharing in SharePoint Online and the ability to grant them access to our resources simplifies communication and bridges the collaboration gaps.
  • PowerShell Arrays
    You probably use it all the time in your scripts, but how do they work? In this blog post, I will show some simple examples of what you can do with them :)
  • Experimenting with PowerShell Batching and Parallel Execution
    PowerShell Parallel Processing is a mechanism to speed the processing of large quantities of data. In this example, we discuss how to use parallel batches to fetch Entra ID account information using mailbox data to drive information retrieval. Although this is only a demonstration of a technique, it might help those who must process thousands of mailboxes or accounts and would like to do so more quickly.

Continued in the comments, due to size limits...

8
5

Announcements!

Blogs, Articles, and Posts

Projects, Scripts, and Modules

Books, Media, and Learning Resources

  • PowerShell Scripting and Toolmaking
    Several years ago Don Jones and I wrote what we hoped would be the definitive book on PowerShell scripting and toolmaking. The book takes all off our years of experience, not only from writing PowerShell code, to teaching and conference presentations where we hear first hand what people struggle with.
  • Frontend PowerShell with Google Forms: Part 2 Replying with Gmail
    [OC] Learn how to integrate Gmail into your scripts to send automated email responses. You’ll also learn how to make your automations more flexible by accounting for things like hitting grid limits in Google Sheets.

Community

  • Inside IT Automation | E04 | Erwin van Hunen talks about PnP PowerShell, MS Graph, music and more
    Erwin is the 'Father' of PnP PowerShell, an open source PowerShell module that is used millions of times everyday worldwide to perform automated tasks towards Office 365 and SharePoint. He is also a Microsoft MVP and well-known public speaker, and technology evangelist. As Chief Technolgy Officer he shapped products and services at Valo, Staffbase and Rencore. Currently he is Head of Product at MondayCoffee.
  • PowerShell on Linux and Beyond with Steven Judd
    In this celebration-themed episode of the PowerShell Podcast, Steven Judd makes his long-awaited return. We announce the first PowerShell Podcast MVP winner. We share tips about regex and URL encoding and dive deep into PowerShell on Linux, CloudShell, and becoming a lifelong learner. All this and more!

Events

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

9
4

Blogs, Articles, and Posts

  • Upload a PowerShell Script to Intune (With PowerShell) From Scratch
    Automate deploying PowerShell scripts to Intune devices with Azure app registration, Graph API, and more in this step-by-step tutorial.
  • Remove store apps from a Windows image
    In professional environments, most store apps delivered with Windows are of little value, prompting admins to remove them from the image before deployment. However, you should avoid indiscriminately deleting them, as some system-relevant apps may be among them. PowerShell can be used to remove the crapware selectively.
  • Find the Teams Meetings Attended by a Specific User Using PowerShell
    Ever wondered how much time your team members spend in Teams meetings? Or perhaps you’re tasked with analyzing an individual’s meeting activity within Teams. Look no further! In this blog, we’ll explore the methods to obtain user-specific Teams meeting reports. Here, we’ll also introduce a crafted PowerShell script that simplifies the process…
  • Parameters for PowerShell Scripts and Functions
    Using parameters for your Scripts and Functions is very powerful. You don't have to hardcode things in them, making running them from a command line easier. This blog post will show you the parameters I use in most of my scripts and how they work.
  • Use the Azure OpenAI GPT-4o (all-in-one-model) with PowerShell!
    On May 13th GPT-4o was released in preview in the Azure OpenAI Playground. No API access, only accessible in the browser. Today I was going into the playground to test something with the GPT-4o model, but could not find it. What had happened? Turnes out it suddenly was in GA and available to choose under … Continue reading Use the Azure OpenAI GPT-4o (all-in-one-model) with PowerShell!
  • Automating PowerShell tasks with Container App Jobs
    I previously wrote about Automating maintenance tasks with Azure Functions and PowerShell. That combo has been my go-to solution for many automation tasks.
  • A Powershell GUI using DotNet Windows.Forms to start AWS Lambda Functions and display their output
    A Powershell GUI using DotNet Windows.Forms to start AWS Lambda Functions and display their output - powershell-gui-aws-lambda-start-functions.ps1

Projects, Scripts, and Modules

  • WinGet.CommandNotFound
    We are pleased to announce the release of WinGet.CommandNotFound! This PowerShell module is a feedback provider plugin for PowerShell that leverages the Windows Package Manager to provide suggestions for packages to install when a native command cannot be found. The command-line predictor feature in PowerShell enables this module to display WinGet packages as predictive suggestions.
  • Keep Microsoft Teams status Available instead of away using PowerShell
    It is one of the things I hear my colleagues, and even my girlfriend, mention regularly... Why does Microsoft Teams think I'm away while I'm not / My PC isn't locked yet... I read a few solutions, setting your status duration to a date in the future, etc... Didn't work :( What does work is running my simple PowerShell scripts, which I will show you in this blog post :)
  • ps-arch-wsl v 0.1.1
    Install Arch Linux on Windows the easy way.
  • Posh-ACME v 4.23.1
    ACME protocol client for obtaining certificates using Let's Encrypt (or other ACME compliant CA)
  • dbatools.ai v 1.0
    dbatools.ai is a copilot for SQL Server databases

Books, Media, and Learning Resources

Community

  • PowerShell on the road at MMS-MOA with Sven De Groote and Chris Thomas
    On this episode of the PowerShell Podcast, Andrew is back on the road, attending the MMS 2024 at MOA conference. Andrew catches up with Sven De Groote and Chris Thomas. Andrew and Sven take a dive into the PSAppDeployToolkit. Later in the episode, Andrew and Chris chat about PSADT, Chris’ PowerShell journey, his talk at MMS-MOA, and more.

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

10
11

Announcements!

Blogs, Articles, and Posts

  • PowerShell Testing Mastery with Data-Driven Pester
    I’ve been using Pester for a long time off and on. I’ve always been obsessed with ensuring reliability in my PowerShell code. After writing the Pester Book and mentioning some of the methodologies I used with Pester v4 I’ll present in this blog post, I’ve since learned Pester v5 makes my work so much easier.
  • PowerShell Basics: Navigating CSV Files
    In this tutorial, we're diving into the essentials of handling CSV files using PowerShell, covering a variety of scenarios you might encounter in the real world. This guide will help sysadmins and IT professionals manage data effectively, demonstrating the power and flexibility of PowerShell in working with different types of CSV files.
  • Hyper-V: Enabling VM Resource Metering
    It is a good idea to monitor your Hyper-V VMs to get an overview of where resources are being consumed.
  • Check Windows 11 Hardware Readiness with PowerShell Script
    In this article, we’ll look at how to use the official Microsoft HardwareReadiness.ps1 PowerShell script to perform a bulk Windows 11 hardware compatibility check on domain computers.
  • Deprecated PowerShell Modules and Azure AD Graph retirement
    You created a script or function a while back that people in the company use a lot, and suddenly... They come to you telling you that it doesn't work anymore. :( The module you used has become deprecated, cmdlets don't all work anymore, etc. In this blog post, I will show the three most prominent modules that have become deprecated and where you can find good information about the successor to adjust your scripts.
  • Configure ‘Allow logon locally’ automatically using PowerShell and Microsoft Intune
    I know Microsoft Intune has the ability to configure this particular user rights assignment natively already. At time of writing, the new security baseline for Windows 11 23H2 in Intune configure this as well, restricting local logons to the built-in groups: Users and Administrators. This solution does something else. This solution grabs the currently logged on user and configures the ‘Allow logon locally‘ policy to ONLY allow this very user as well as Administrators to be able to log on locally.

Projects, Scripts, and Modules

  • Detecting Windows Terminal with PowerShell
    In the evolving landscape of software development and system administration, understanding your environment is essential for ensuring that scripts and commands run as expected. One useful PowerShell function that helps identify whether a script is running within Windows Terminal is my Test-IsWindowsTerminal function. This function is valuable for developers and system administrators who must tailor their scripts based on the terminal environment.
  • PowerShell Script to Check Active Directory Member Servers for Automatic Services’ Status
    I’ve been caught by an automatic service not starting after system reboots from things like patching.
  • Find your IPv4 and IPv6 addresses
    A PowerShell function to display the current IPv4 and IPv6 addresses of the machine. Useful to include in $PROFILE

Community

  • For the love of PowerShell and Curling with Frank Lesniak
    In this special MMSMOA episode of the PowerShell Podcast, Andrew is joined by Frank Lesniak. We touch base after PowerShell Summit, hear about tracking airplanes with ADS-B and raspberry pi's. Frank talks about classes and how they almost caused him to fall out of love with PowerShell. We also recount what most be the most brutal display of athleticism, curling.

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

11
9

Announcements!

  • Windows Terminal Preview 1.21 Release
    Windows Terminal is back with another preview release! Windows Terminal Preview 1.21 introduces long-awaited features like Buffer Restore and fontfall back as well as new experimental features like Scratchpad and the ability to load up an image as a texture. There’s also a LOT MORE stuff so check out the rest of this blog post to learn more!

Blogs, Articles, and Posts

  • Upload a file to Connectwise and Attach it to a Service Ticket with PowerShell
    I have recently been automating a lot within Connectwise PSA. One of the items I set out to do is to upload a file and attach it to a service ticket. This led me to the following article, but after doing some testing, I found that some file types were not properly rendering on the Connectwise side, making me believe there was something wrong with the encoding.
  • More Microsoft Graph PowerShell SDK Problems
    Some problems emerged in V2.17 and V2.18 of the Microsoft Graph PowerShell SDK. In one case, Microsoft changed cmdlet names. In another, it's an identity issue caused by incompatible assemblies. In both cases, questions have to be asked about the level of testing done by Microsoft before they release a new module. Bugs do happen, but testing should catch the obvious problems.
  • Using $using in PowerShell for local variables in remote sessions
    When running scripts that connect to remote systems using Invoke-Command, you can use your local variables in the remote session which makes things a lot easier. In this blog post, I will show you how :)
  • Read, Modify, and Parse JSON File (Object) with PowerShell
    JSON is a popular text-based format for representing and transmitting structured data based on JavaScript object syntax. There are two cmdlets in PowerShell that allow you to work with the…
  • Report SharePoint Online Files Using the Microsoft Graph PowerShell SDK
    This article describes creating a SharePoint Online files report using the Microsoft Graph PowerShell SDK. While keeping digital debris online might have been unimportant in the past, it's something that can wreak havoc in the era of generative AI when tools like Copilot for Microsoft 365 are happy to consume obsolete and inaccurate material.
  • Get-FileHash of 100G files
    An interesting thread on reading file hashes.
  • Finding the specific day of the month with PowerShell
    Advanced usage of PowerShell's Get-Date function for finding dates

Projects, Scripts, and Modules

Books, Media, and Learning Resources

Community

Fun

  • PixelPoSH
    PixelPoSH is a PowerShell module that generates customizable graphical backgrounds using System.Drawing in .NET. This tool allows users to create images with various graphical patterns like bubbles, concentric circles, stripes, and squares. It's perfect for quickly generating backgrounds for desktops, websites, or any project that could use a splash of color and creativity.

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

12
7

Blogs, Articles, and Posts

  • Encrypting secrets locally
    Keeping security folks happy (or less upset which is the best we can hope for)
  • Partition Windows drive in WinPE using PowerShell
    An essential step towards automating the Windows setup process is replacing the system drive's interactive partitioning with a script. Microsoft's examples for this purpose rely on batch files and Diskpart. However, installing PowerShell in Windows PE allows for a much more elegant solution.
  • Your Go-To PowerShell Template for HTTP-Triggered Azure Functions
    Struggling with messy Azure Functions PowerShell code? Learn how to adapt your scripts for serverless, validate HTTP parameters, throw descriptive errors, and bind PowerShell output to HTTP responses for robust web-friendly functions.
  • Removing Outlook Add-ins From Mailboxes with PowerShell
    The Share to Teams Outlook add-in posts an email to a Teams chat or channel conversation. I was asked how to disable the add-in for some mailboxes. Here's how to do the job using PowerShell to find a set of target mailboxes and then turn off Send to Teams for each mailbox.
  • New PowerShell Command Parameters in ConfigMgr 2403
    Here is a list of the Configuration Manager (SCCM) PowerShell module changes in version 2403. So far only the Save-CMSoftwareUpdate changes has been documented, but I have found a few more changes when poking around in the 2403 PowerShell module. Here is a list of the Configuration Manager (SCCM) PowerShell module changes in version 2403.
  • The only PowerShell Command you will ever need to find out who did what in Active Directory
    While the title of this blog may be a bit exaggeration, the command I'm trying to show here does it's best to deliver on the promise. What you're about to witness here is something I've worked on for a while now, and it meets my basic needs. If you don't have SIEM product or products that monitor who does what in Active Directory this command makes it very easy, even for people who don't have much experience in reading Event Logs. If you'd like to learn about working with Windows Event Logs here's a great article I wrote recently - PowerShell - Everything you wanted to know about Event Logs and then some.
  • PowerShell: the object-oriented shell you didn’t know you needed
    PowerShell is an interactive shell and scripting language from Microsoft. It’s object-oriented — and that’s not just a buzzword, that’s a big difference to how the standard Unix shells work. And it is actually usable as an interactive shell.

Projects, Scripts, and Modules

  • Report on Non-Compliant Intune devices
    I received a question on the Microsoft Tech Community forum regarding creating a report about non-compliant Intune devices. The report should give insight into what device has what issue with which setting; the person asking the question was already working on a Microsoft Graph script but couldn't find a suitable way. In this blog post, I will show how to create this report. There are other scripts out there, but I always like a challenge (And Microsoft Graph can be quite a challenge sometimes ;) )
  • PSMake
    PSMake is an all-in-one project management and lifecycle toolset for PowerShell.
  • 365Automatedlab V2.10.1 Released!
    I know I said every 2 weeks, but I lied. I wanted to get this out! It is now possible to add a manager when creating a new user. Also added a feature so that when you use the parameter -UseDevelope…

Books, Media, and Learning Resources

  • Pick Up The PowerShell Practice Primer
    A number of years ago, I published book on Leanpub, designed to help you teach yourself PowerShell. After you get through the first Month of Lunches book, what do you do next? The best way to learn PowerShell is to do it. But it might be challending trying to figure out what to do. I...
  • Practical PowerShell: Flow Control
    “Control, Control, You Must Learn Control.” I rarely quote Yoda’s wisdom in articles, but this is an exception. After discussing advanced functions in the second Practical PowerShell article, the other important scripting skill to master is using the flow control cmdlets. These cmdlets are not just theoretical concepts; they are practical assets that can significantly enhance your PowerShell scripts.

Community

  • The PowerShell & Global DevOps Summit 2024 Bar session 4
    In this episode, we have 2 interviews: Danny Stutz and Carrie Cargil. We start things off chatting with Danny and hearing about his first time speaking at Summit and how his career has gone. He shares some of his keys to success and he is someone to keep your eye out for.
  • Inside IT Automation E03
    Matthew Dowst talks about PowerShell, Python, writing books and more

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

13
3

Blogs, Articles, and Posts

  • Removing Licenses from Entra ID Accounts When a Replacement License Exists
    License management is a core competence for Microsoft 365 tenant administrators. This article explains how to use PowerShell to remove licenses from accounts when an equivalent service plan is available from another license. It's the kind of fix-up operation that tenant administrators need to do on an ongoing basis.
  • Sending Urgent Teams Chats with PowerShell
    A reader asked if it is possible to script sending chat messages. In this article, we explore how to compose and send Teams urgent messages to a set of recipients using Microsoft Graph PowerShell SDK cmdlets. The conversation with each recipient is a one-to-one chat that Teams either creates from scratch or reuses (if a suitable one-on-one chat exists).
  • Azure AD: How to set Maximum Devices per User
    The default value of the maximum number of devices per user in Azure AD is 50 devices. That is a lot. If you want to restrict the number of devices then you came to the right place.
  • Configuring NTFS Permissions using PowerShell
    Here are some quick examples on configuring NTFS permissions using PowerShell. The first example is using the takeown.exe and icacls.exe commands driven by PowerShell, and the second example is using the takeown.exe and native Get-Acl and Set-Acl PowerShell cmdlets. Credits: Thanks to Gary Blok for showing me the Get-Acl and Set-Acl PowerShell cmdlets.
  • How to Automatically Update Apps in Intune with Dynamic Win32 App Deployment  
    Greetings, fellow IT admins! Repackaging setup files and editing your Win32 app again can be tedious and time-consuming. Thankfully, I bring you good news! There is a way to deploy a Win32 app and have it always install the latest version of the app on the computer.
  • How to Read Outlook Emails with PowerShell
    Let’s look at how to open, read, and parse emails in a connected Outlook mailbox from within a PowerShell script. Outlook MAPI allows you to directly access the mailbox, list…
  • Azure DevOps Workload Identity & Terraform Authentication
    Azure DevOps supports Workload Identity federation (powered by OpenID Connect) to authenticate to Azure and Azure DevOps from your pipelines for deploying Terraform configurations. Workload Identity federation To follow along with this tutorial, you will need: To follow along with more code examples, check out this GitHub repository:JeffBrownTech/azure-devops-terraform-oidc-examples What is Workload Identity federation?
  • The secret to PowerShell remoting over ssh
    The magic line of configuration to enable PowerShell remoting over ssh.

Projects, Scripts, and Modules

  • Using .NET With PowerShell
    This goal of this post is to explore some .NET classes that may be useful to sysadmins and PowerShell devs without .NET (C#, etc.) experience, with a bit of a deeper dive into some concepts when warranted.
  • tiPS v 1.3.3
    PowerShell tips delivered straight to your terminal. Now with author name for those who submit their own tips.

Books, Media, and Learning Resources

Community

  • The PowerShell and DevOps Global Summit 2024 Bar session 3
    In this episode of the PowerShell Podcast, we continue with our "bar sessions" from the PowerShell and DevOps Global Summit. We gain interesting insights into PowerShell, the Summit, career, and more. Our guests include Chris Masters, Joe Gasper, Rob Derickson, Chris Nguyen, Fred Weinmann, Merill Fernando, Clayton Tyger, Mike F. Robbins, Sean Wheeler, Prasidh Arora, and Danny Maertens.

Events

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

14
2

Blogs, Articles, and Posts

  • MarkdownToHtml Documentation
    Create static websites from Markdown sources with PowerShell fast and easy.
  • Cloud operations for Windows Server through Azure Arc
    Running Windows Server on-premises or at the edge? Learn how you can leverage Azure management solutions for cloud operations for Windows Server through Azure Arc.
  • Removing Licenses from Entra ID Accounts When a Replacement License Exists
    License management is a core competence for Microsoft 365 tenant administrators. This article explains how to use PowerShell to remove licenses from accounts when an equivalent service plan is available from another license. It's the kind of fix-up operation that tenant administrators need to do on an ongoing basis.
  • Restrict User Access to Azure AD PowerShell and MS Graph Explorer
    We all know that any user in Microsoft Entra ID can read the users’ details and directory information using Entra ID portal, PowerShell, and Graph API Explorer. Although restricted from making changes, non-admins can still explore user information, group details, device details, etc.
  • Report from which PowerShell module the cmdlets are from
    We all encountered this: you get a script or function that uses a certain cmdlet... And it fails because the cmdlet is not recognized :( But which module should you install to get the script working? Or does your script install or import all the required modules? In this blog post, I will show you how to check from which module(s) the cmdlet(s) originate and if they are present on your system or if you should install them.

Projects, Scripts, and Modules

  • AzOps v 2.6.2
    Integrated CI/CD Solution for Microsoft Azure.
  • Okta.PowerShell v 1.0.1
    Okta.PowerShell - the PowerShell module for Okta Management
  • Active Directory Replication Summary to your Email or Microsoft Teams
    Active Directory replication is a critical process that ensures the consistent and up-to-date state of directory information across all domain controllers in a domain. Monitoring this process is important as it helps identify any issues that may arise and resolve them quickly. One way to monitor Active Directory replication is by using the Repadmin command-line tool. Repadmin provides a wealth of information about the replication status and health of a domain. However, manually checking the Repadmin output can be time-consuming and tedious, and running it manually every 30 minutes just to check if everything is great doesn't seem like a great idea. While PowerShell has its own commands around replication I've not found something as fast and reliable as repadmin /replsummary.
  • PowerShell Script – KB5025885: How to manage the Windows Boot Manager revocations for Secure Boot changes associated with CVE-2023-24932
    Required Reading: KB5025885: How to manage the Windows Boot Manager revocations for Secure Boot changes associated with CVE-2023-24932 – Microsoft Support Related: Words of Warning Once you’ve applied the mitigations outlined in the KB, the device is difficult to work with when it comes to boot media / reimaging.
  • 2.9.0 Released and Big Update
    I know it’s been a month, all good though! I think I may start doing monthly release, what are your thoughts? I was going to do every 2 weeks, but not sure if that is too quick. Big update as I’m s…

Community

  • PowerShell + DevOps Global Summit 2024 reflections
    I’m sitting in the airport waiting for my return flight after what has been an awesome week at the PowerShell + DevOps Global Summit 2024, North American edition in Bellevue, Washington. There’s a whirlwind of things going through my mind, so I thought I would try and capture some of them here.
  • The PowerShell & DevOps Global Summit 2024 Bar Session 2
    In this special episode of the PowerShell Podcast, we chat with people at the PowerShell Summit. It's PowerShell after dark, the bar sessions. We talk about the OnRamp program, its scholarship program, and more. Then, we chat with Ambre Herron, Austin Hollett, Cory Knox, Ryan Richter, Vanda Paladino, and Tyson O'keefe.
  • The Practical 365 Podcast S4 E17
    It took a little over 6 and a half years since the last episode of The UC Architects podcast, but I was finally reunited with Steve Goodman. This time it was to join him and Paul Robichaux to record an episode of the Practical 365 podcast, and talk about the new Practical PowerShell series on Practical365.com.
  • PowerShell Community Heros – PowerShell.org
    The DevOps Collective has decided to establish a set of three awards to recognize and honor the contributions of community members who have gone above and beyond in their efforts to support and promote the PowerShell community. The awards will be presented at the annual PowerShell + DevOps Global Summit. It is hoped that these awards will motivate and inspire members of the PowerShell community.

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

15
5

Blogs, Articles, and Posts

  • How to Retrieve Loop Workspaces Data with PowerShell
    A previous attempt to write a script to report all Loop workspaces in a tenant was flawed because it only retrieved the first 200 workspaces. I hadn't realized that the Get-SPOContainer cmdlet supported an odd form of pagination to retrieve workspace data. In any case, I figured out how to page top find all available workspaces and updated the script. It's just another example of oddness in the SharePoint Online PowerShell module
  • Modifying the Teams Tenant Federation Configuration with PowerShell
    A new parameter for the Set-CsTenantFederationConfiguration cmdlet made me look at the Teams tenant federation configuration again to improve how a script works. Instead of taking all the domains guest accounts came from and adding them to the configuration, I created a function to check if the tenant uses Microsoft 365. If it does, we add the tenant to the allow list in the tenant federation configuration. If not, we ignore the domain.
  • Automate on-premises Windows Server from the cloud using Azure Arc
    Running Windows Server on-premises or at the edge? Learn how you can leverage Azure automation, PowerShell, Windows commands, and Azure management solutions for Windows Server on-premises. At the Windows Server Summit 2024, I had the chance to deliver a session with Ryan Willis Product Manager for Azure Arc and we went through different automation options …
  • PowerShell: Waiting for jobs to complete with Wait-Job
    The cmdlet Wait-Job waits until one or all of the PowerShell jobs running in the session are in a terminating state. In this blog post I will show you an example
  • PowerShell data/reference types for variables
    When you store data in a variable, PowerShell can store it how you want it to be if you use the correct data type. This blog post will show you how that works and which data types I mostly use for my scripts.

Projects, Scripts, and Modules

  • PowerShellRun
    PowerShellRun is a PowerShell module that lets you fuzzy search applications, utilities and functions you define and launch them with ease. It is a customizable launcher app on the PowerShell terminal.
  • Rocker v 0.1.1
    Rock Docker with PowerShell
  • PSPlex v 1.0.16
    A PowerShell module to aid Plex server management.
  • TheDashboard v 0.0.24
    TheDashboard is a module that allows you to create a dashboard for your HTML reports

Community

  • From Blogging to DevOps with Jeff Brown Tech
    In this episode of the PowerShell Podcast, we are thrilled to host Jeff Brown, a seasoned educator and PowerShell enthusiast. Jeff takes us on a journey spanning nearly two decades of his prolific blog writing, revealing how it shaped his career trajectory. Delving into the importance of certifications, Jeff emphasizes their role as a structured pathway for acquiring new skills and advancing in the tech industry. We explore Jeff's transition from Azure Engineer to the dynamic realm of DevOps, uncovering valuable insights along the way. Join us as Jeff shares his wealth of experience, offering invaluable advice and perspectives for aspiring IT professionals and seasoned experts alike.
  • The PowerShell & DevOps Global Summit 2024 Bar Session 1
    In this special episode of the PowerShell Podcast, we chat with people at the PowerShell Summit. James Petty gives us a preview of the week ahead at PowerShell Summit. We also talk about the OnRamp program, its scholarship program, and more. Then, we chat with Ben Reader, Frank Lesniack, James Ruskin, Kevin Cefalu, and Steve Bucher.

Fun

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

16
4

Announcements!

Blogs, Articles, and Posts

  • Exchange Online: Message Tracking with PowerShell
    Message tracking in Exchange Online can be performed graphically as well as in PowerShell. In this post I will show how to track messages with PowerShell.
  • Reduce your attack surface by disabling NetBIOS using PowerShell and Microsoft Intune
    Introduction If you are working with device management and IT security in general, you have probably heard about the recommendation to disable the legacy protocol NetBIOS in Windows. If this is news to you, there’s some interesting reading for you in this article: Adversary-in-the-Middle: LLMNR/NBT-NS Poisoning and SMB Relay, Sub-technique T1557.001 – Enterprise | MITRE ATT&CK NOTE: Before disabling anything, make sure you do your due diligence and monitor your environment for NetBIOS traffic, so you don’t accidently break stuff!
  • Installing and Using PowerShell Copilot
    PowerShell Copilot is a community-developed module that extends the capabilities of PowerShell by integrating with the GPT-4 language model. This innovative tool is designed to assist users in generating code quickly and efficiently, leveraging the vast repository of code available on GitHub.
  • Porting PowerShell to FreeBSD, first working poc
    For background, there was a previous attempt to bring PowerShell to FreeBSD, but it seems it got stuck somewhere
  • All About Pagination with the Graph and the Graph PowerShell SDK
    When you're new to Graph API requests, you might not know pagination and end up retrieving less data from queries than is available. In this article, we explain how to use pagination to retrieve data using Graph queries and SDK cmdlets.
  • Getting the Timezone in Windows Using a Simple PowerShell Command
    Learn how to retrieve the timezone information in Windows using PowerShell. The Get-TimeZone command allows you to access various properties related to the timezone, such as the timezone ID, display name, and standard time offset. Follow the simple steps provided in this blog post to retrieve the timezone information for your Windows system. This information can be useful for troubleshooting, system administration, or scripting tasks. Give the Get-TimeZone command in PowerShell a try next time you need to retrieve the timezone in Windows.

Projects, Scripts, and Modules

  • Material from my RTPSUG presentation
    Material from my RTPSUG presentation on writing better PowerShell code - demo.ps1
  • PSTableauREST v 0.6.4
    This PowerShell module facilitates working with Tableau REST API for automation tasks. Most functions are implemented as wrappers for the corresponding API calls.
  • OnePowerShellProfile v 1.0.12
    Generates a duplicate PowerShell profile for each installed PS editions (i.e. Desktop, ISE, Core)

Books, Media, and Learning Resources

Community

  • Unveiling PowerShell’s Past: An Interview with Jeffrey Snover
    In this highly anticipated episode of the PowerShell Podcast, we sit down with the legendary Jeffrey Snover, the creator of PowerShell. With his departure from Microsoft, Jeffrey opens up about his insights, experiences, and candid opinions. From the inception of PowerShell to its current state, he shares the challenges he faced and the triumphs he celebrated. Jeffrey delves into the controversial topic of using aliases in scripts, shedding light on the pros and cons. Additionally, he offers thought-provoking perspectives on the evolving landscape of AI and his experience in AI ethics. Reflecting on his tenure at Microsoft, Jeffrey discusses the intricacies of navigating a large corporation and making a substantial impact. We also explore the concept of the "PowerShell sacred vow" and its significance. Join us for an illuminating conversation with Jeffrey Snover.
  • Inside IT Automation | E02
    Kamen Nikolov talks about PowerCLI, PowerShell, VMware and more

Fun

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

17
5

Blogs, Articles, and Posts

Projects, Scripts, and Modules

  • 15 Most Useful MS Graph PowerShell Scripts for Microsoft 365 IT Pros
    Are you among the many admins preparing for the retirement of AzureAD and MSOnline PowerShell modules? Transitioning to MS Graph PowerShell can be daunting, especially when searching for equivalent cmdlets. But fret not! I’ve curated a collection of essential PowerShell scripts tailored to manage your Microsoft 365 environment, all powered…
  • PSBashCompletions v 1.2.5
    PSBashCompletions offers the ability to process bash completions into PowerShell.

Books, Media, and Learning Resources

  • Jeff Hicks - PSStyle - PowerShell with Style
    Many people think of PowerShell as a scripting language and forget that it is also a shell. But this is not the shell from DOS, or even from Windows 10. The new, modern PowerShell console is a rich, and colorful environment.

Community

  • MVP Spotlight: Clayton Tyger's Story
    Join us for an inspiring episode of the PowerShell Podcast as we sit down with newly crowned Microsoft MVP, Clayton Tyger. Clayton shares his remarkable journey from being a PowerShell novice to achieving MVP status, highlighting the importance of a growth mindset and perseverance along the way. We delve into recent developments to his 365AutomatedLab module, exploring how it streamlines lab creation processes for PowerShell users. Additionally, Clayton discusses his adventures with ProxMox and PowerShell, offering valuable insights and practical tips. Tune in for an engaging conversation filled with personal anecdotes, professional insights, and a deep dive into the world of PowerShell with Clayton Tyger.

Events

  • DFWSMUG April Fools Day Meetup
    Join us for a fun-filled April Fools Day Meetup with DFWSMUG, where laughter and mischief await on April 1, 2024 at 5:00 PM. And come see me presenting on test infrastructure with Pester.

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

18
11
submitted 3 months ago* (last edited 3 months ago) by BobTheDestroyer@lemy.lol to c/powershell@programming.dev

Note: I'm a beginner to Powershell and a bit more familiar with Bash (though still a beginner for that too).

*I have multiple PDF files and I want to rename each file based on a list of names found in an Excel/CSV (could be a text file if easier) file.

*The list begins at the A2 cell and the A1 cell has the header 'name'.

*The files are in sequential order and match the order of the list of names.

Thanks for your help!

19
6

Sorry for missing last week, but I was on vacation and this is a hand curated list.

Blogs, Articles, and Posts

Projects, Scripts, and Modules

  • Graph and PowerShell Hiccups for the Groups and Teams Report Script
    The Microsoft 365 Groups and Teams Activity Report is a PowerShell script that I've worked on since 2016 (not all the time). Some recent Graph hiccups meant that I had to apply some fixes and workarounds. At the same time, some users hit the infamous 'not recognized as a valid datetime' problem, so another update was needed. All good, clean fun.
  • PSOpenAD Release v0.5.0
    The Open AD module is a cross platform module for managing Active Directory.
  • Fuzzy history search with PowerShellRun
    An example that replaces the Ctrl+r history search with fuzzy search. Multi-line commands are supported Duplicates are removed Enter to run the command and Shift+Enter to insert the command The cha...

Books, Media, and Learning Resources

Community

  • Cloud Chronicles: Mark Wragg's Journey in DevOps
    In this engaging episode of the PowerShell Podcast, host Andrew Pla kicks things off by sharing some tab completion insights and more on the preshow. Andrew is joined by special guest Mark Wragg to delve into the world of DevOps and PowerShell. Mark, a longtime user of the cloud, and shares his observations of how things have changed over the years. The discussion covers common tasks and responsibilities in DevOps, along with Mark's innovative AzCostTools module, which provides a comprehensive solution for monitoring and managing cloud costs using PowerShell, complete with visually appealing graphs. Additionally, Mark shares his passion for Pester testing, infrastructure testing, and Infrastructure as Code, offering valuable advice and expertise to listeners. Tune in for a captivating conversation filled with practical tips and expert insights!
  • IAM in Focus: Insights from Adil Leghari
    In this enlightening episode of the PowerShell Podcast, host Andrew Pla is joined by special guest Adil Leghari to delve into the intricacies of IAM (Identity and Access Management). Together, they explore the fundamentals of IAM and its significance in the broader realm of IT. Additionally, Andrew announces the PowerShell Podcast MVP awards, celebrating community excellence. Adil shares invaluable insights on career transitions, the anatomy of a login box, and common cyber attacks. He also sheds light on the flaws of passwords and emphasizes the importance of empathy and honest postmortems in the IT landscape. Tune in for a captivating discussion filled with wisdom and expertise!
  • Summit 2024 Speaker Spotlight: Steven Judd
    Hey there, PowerShell enthusiasts! Today marks the start of a series of interviews featuring select Summit 2024 presenters. I plan to sit and chat briefly with a mix of familiar …

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

20
6

Blogs, Articles, and Posts

  • PowerShell Refresh
    The other day on X, I was asked about what things I would setup or configure on a new PowerShell installation. This is something I actually have thought about and face all the time when I setup a new demo virtual machine. I had been meaning to build new tooling to meet this challenge
  • Despite the Doubters, Microsoft 365 Administrators Should Continue Using PowerShell
    A recent article by a Microsoft MVP attempted to lay out a case that tenants should not use Microsoft 365 PowerShell and use ISV products instead. It's a silly position to argue. PowerShell is an important automation tool for administrators that can't be replaced by any ISV product. ISV products have their place and fill many gaps, but arguing to dump PowerShell and use ISV products instead just can't be justified.
  • Foreach vs Foreach-Object in PowerShell
    The foreach statement and the ForEach-Object cmdlet, while similar in function, difference in form, execution context, and performance implications. They are both designed for iterating over collections, executing a block of script code for each object in the collection. In this PowerShell tutorial, we will explain everything about the Foreach vs Foreach-Object in PowerShell.
  • Visualising your IP Address using PowerShell and AI
    A few weeks back the Microsoft AI Tour was in Sydney Australia. There was a plethora of great content associated with the wave of everything AI that we are currently in.
  • How to Add Quotes in PowerShell (Single & Double Quotes)
    Many a time, you might need to add quotes in PowerShell, like single and double quotes. In this PowerShell tutorial, I will explain how to add quotes in PowerShell. In PowerShell, when a string is enclosed within double quotes, it is subject to interpretation by the parser.
  • Monitor and manage your Azure cloud costs with a little help from PowerShell
    Should cloud computing be illegal? Probably not, but it is incredibly easy to get started, equally difficult to stop, and before you know it you could be selling your grandmother just to afford one more month of that delicious compute. Hopefully your circumstances never get that dire, but I’ve seen plenty of companies entrench themselves into the highly addictive world of automated, scalable infrastructure, but then struggle to understand the often-astronomical monthly bill.
  • Step-By-Step: How to Create a Windows 11 VM on Hyper-V via PowerShell
    As mentioned previously, Hyper-V is a virtualization technology that is not only useful for developers and IT administrators, but also for students. Using Hyper-V, students can install multiple operating systems and applications on a single physical machine. In a previous blog post, we covered steps to enable Hyper-V in Windows 11 via the Graphic User Interface (GUI). However, as many pointed out, there is a quicker way to accomplish this.

Projects, Scripts, and Modules

  • AzPolicyTest v 2.0.0
    Provides pre-defined pester tests for Azure Policy and Initiative definitions

Community

  • Crafting a Fulfilling Career: Wisdom from Industry Leaders Jeff Hicks and Mike F. Robbins
    In this episode of the PowerShell Podcast, Andrew Pla is joined by esteemed guests Jeff Hicks, Microsoft MVP, and Mike F. Robbins, renowned Azure PowerShell writer. Together, they delve into the essential non-PowerShell skills necessary for a thriving career in IT. The conversation extends to the invaluable experiences gained from the OnRamp program at PowerShell Summit, highlighting the significance of passing on knowledge to the next generation. They also explore various community projects, recommend insightful books that capture the essence of the Summit experience, and stress the importance of fostering curiosity in one's journey. Tune in for a wealth of wisdom and inspiration from these industry experts!

Fun

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

21
6

Blogs, Articles, and Posts

  • Creating a scalable, customised running environment
    This post shows how to create an easy to support environment with all your own cmdlets.
  • Module Linking
    I know it has been a while since I’ve given the blog any attention. I am hoping to correct that in 2024, although I’m already behind schedule. But let’s get to it. I have a short tip today that you may find useful, especially if you write modules for your private use.
  • Cloning Hyper-V VMs with PowerShell
    Unlike when using Windows Admin Center to manage your Hyper-V VMs, Hyper-V Manager, nor the built-in cmdlets, offer any native VM cloning function. But with a bit of creative scripting, it's certainly doable. Here is a script that clones a virtual machine in Hyper-V: Unlike when using Windows Admin Center to manage your Hyper-V VMs, Hyper-V Manager
  • PowerShell Script Parameters: Getting Started Guide
    PowerShell script parameters are vital components that enable the customization and versatility of scripts, functions, and cmdlets. PowerShell parameters enhance the usability and adaptability of scripts by allowing users to pass information into the code instead of hardcoding values. Understanding how to define, manipulate, and leverage PowerShell parameters is essential for proficient scripting in PowerShell.

Projects, Scripts, and Modules

  • Report OneDrive for Business Storage Based on Usage Data
    If you wanted to write a PowerShell script to create a OneDrive storage report, you'd probably use the cmdlets from the SharePoint Online management module. But accessing OneDrive usage data via the Graph is much faster. And you can include information from other sources, such as user properties, to build out the report. All explained here.
  • Report and Audit File Downloads in SharePoint Online Using PowerShell
    SharePoint Online is a powerful collaboration service in Microsoft 365 that facilitates seamless file sharing and management across organizations. While it provides extensive capabilities, tracking file downloads is crucial for maintaining data security and compliance. This blog highlights the methods to audit file downloads in SharePoint Online.   How to…
  • PowerShellRun
    App, Utility and Function Launcher for PowerShell. PowerShellRun is a PowerShell module that lets you fuzzy search applications, utilities and functions you define and launch them with ease. It is a customizable launcher app on the PowerShell terminal.
  • Find All agent-based Hybrid Runbook Workers [OC]
    In case you are not away the Microsoft Monitoring Agent (MMA) will be retired on 31 August 2024. Prior to this date you will need to migrate all your agent-based hybrid workers to the extension-bas…
  • PSSharedGoods v 0.0.278
    Module covering functions that are shared within multiple projects

Books, Media, and Learning Resources

Community

  • From Admin to Defender: Jake Hildreth's Security Evolution
    In this episode of the PowerShell Podcast, Andrew sits down with the knowledgeable Jake Hildreth for an enlightening conversation covering a wide array of security-related topics. Jake shares insights from his journey transitioning into security from a background in operations and administration. The discussion delves into OpSec practices, approaches to toolmaking, and the critical importance of Active Directory Certificate Services (AD CS) security. Jake also sheds light on tabletop exercises for security, the fallacy of security through obscurity, and the dangers of clicking on phishing emails. Tune in for a deep dive into the world of security and PowerShell with Jake Hildreth!

Fun

  • PowerShell Emoji
    PowerShell Emoji is a little PowerShell module to help you work with Emoji.

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

22
9

Announcements!

  • PowerShell 7.5.0 preview 2 released
    Include multiple engine and cmdlet updates and fixes.
  • Azure Automation supports Azure CLI commands in runbooks
    Azure Automation has announced support for Azure CLI commands in runbooks (preview announcement). The rich command set of Azure CLI expands capabilities of runbooks even further, allowing you to reap combined benefits of both, for automating and streamlining management of Azure resources. Azure Automation runbooks target orchestration on a wide array of resources such as Virtual Machines, Arc-enabled Servers, Databases, Storage, Azure Active Directory, and much more, along with complex workflows involving multiple resources.

Blogs, Articles, and Posts

  • Why You Should Not Upgrade to Microsoft Graph PowerShell SDK V2.14
    Usually, we recommend that Microsoft 365 tenants use the latest version of the Microsoft Graph PowerShell SDK. However, a serious bug in V2.14 means that this (and perhaps V2.13.1) should be avoided until Microsoft fixes a problem that causes spurious output to be included when cmdlets like Get-MgUser and Get-MgGroup are run.
  • Export Conditional Access Policies to Excel using PowerShell
    Conditional Access policies play a vital role in securing your Microsoft 365 environment and are a key component of the zero-trust model. However, setting them up incorrectly can have serious consequences, like unintentionally compromising your entire Microsoft 365 security.
  • PowerShell: Find Remote Desktop Servers on A Domain
    Remote Desktop Servers have a way of multiplying themselves like some kind of organic creature
  • Schedule PowerShell Script Intune
    This is a blog post about how to schedule a PowerShell script via Intune. Of course, we would like this to be built-in within Microsoft Intune but we are not there yet. Hopefully, this will be an option in the future. We would like to schedule app installs and scripts via Microsoft Intune directly.
  • Running Azure Cloud Shell locally using Docker
    Azure Cloud Shell is a tool I use often and is easy to access from the Admin pages in Azure and 365. You can also use those tools in a local container and connect to it using the command line or Visual Studio Code. In this blog post, I will show you how to install everything and connect and use it locally.
  • AWS PowerShell - Intro to PowerShell Lambdas
    AWS has finally released support for PowerShell lambdas! Lambdas are pieces of code that can be called from just about anywhere in AWS (or outside for that matter). Even better lambdas don’t require a server to run, this means that you only pay for the compute that you actually use. Don’t worry the first 1M hits per month are free. Let’s dive in and see how we can start using our existing PowerShell skills to start building lambdas.

Projects, Scripts, and Modules

  • Easy Packet Loss Tracker
    This PowerShell script helps you monitor packet loss on your network by continuously pinging a specified target (website or IP address) and providing real-time updates on successful responses and timeouts.
  • Query Lenovo Warranty Information with PowerShell
    I used this for an automatic Snyc related to Customer Asset List to get the Warranty Start and END – Date for Lenovo Hardware.
  • PowerShellAIAssistant
    Enhance PowerShell scripting with AI using PowerShell AI Assistant module.
  • Az v11.3.1
    Just a couple of small fixes in this release.

Community

  • Reaching the Summit: Graham's OnRamp Journey
    In this engaging episode, host Andrew sits down with Graham Stringfellow for an insightful discussion filled with personal anecdotes and professional insights. The conversation kicks off with a reflection on Andrew and Graham's shared history, followed by Graham's experience with the PowerShell Summit OnRamp scholarship. Graham sheds light on the infamous mountain disaster involving Phil Bossman, settling the score once and for all. They delve into the importance of building tools that endure and share anecdotes about Andrew handing off some of his PowerShell expertise to Graham. Tune in for a captivating conversation that spans friendship, professional growth, and the enduring legacy of PowerShell.

Fun

  • PowerShell Games
    I use PowerShell for many things, but did you know you can also play games in PowerShell? In this blog post, I will show you a few that are nice to play while waiting for your installation to complete or your code to compile :)

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

23
4

Blogs, Articles, and Posts

  • An example of using PowerShell to manage system and user-assigned managed identities in Azure
    Managed identities provide secure authentication for resources accessing other resources in Azure without requiring sensitive information such as secrets, credentials, and certificates to be handled. Microsoft Entra ID manages these identities, enabling applications to obtain tokens for authentication. In this post, I will provide an example that illustrates how to use system and user-assigned managed identities with PowerShell.
  • Can I Bypass Powershell Execution Policy? Powershell Execution Policies
    Can I Bypass Powershell Execution Policy? If you are new to PowerShell then you are probably ready to dive in and start experimenting with scripts and all kinds of cool learning resources. If you ever download a script from an external source then you need to be aware of a few things.
  • Export Microsoft 365 Users’ Self-Service Password Reset (SSPR) Status Reports
    Microsoft self-service password reset (SSPR) feature enables users to reset passwords independently, reducing help desk reliance in the organization. However, before users can utilize SSPR, admins must enable self-service password reset, and users must register their authentication methods.
  • Add, remove, or replace values using PowerShell
    I had another encounter this week where a customer wanted to remove the value from something in Exchange. Setting the value to $null didn't work, and I showed him how to remove it another way. This blog post will show a few ways to add, remove, or replace a value using Active Directory and Exchange Online as examples.
  • Blogposts and Newsletters in times of AI´s
    This week i am not going to do a regular PowerShell newsletter, it will be more some personal thoughts on the recent developments with AI´s. As long as i read blogposts, i enjoyed the knowledge, which people share regarding a particular problem they want to solve. Solving a technical problem personally is one part of the effot, prepering the solution in a format so that others can benefit from is is a much wider step. Who ever has created a blogpost or video knows that preparation, production and post-editing takes some time, and all of this just for the community
  • What do you use for tooling when it comes to sharing and executing powershell scripts?
    As the title states, I've found that even within teams that engineers write similar things over and over again. Version control and git helps but then there is tracking who executed what when and where, no ability for a historical view and timeline, task scheduler is hard to track success / failures output.

Projects, Scripts, and Modules

  • PdfLexer v 0.1.19
    PdfLexer is a powershell pdf manipulation library for Powershell 7+.

Books, Media, and Learning Resources

  • Your PowerShell Journey Starts Here: A Beginner’s Guide
    PowerShell is a powerful tool for automating tasks and managing systems, especially in a Windows environment. If you’re ready to level up your tech skills, here’s how to get started on your PowerShell learning adventure.
  • Welcome to Professional PowerShell
    This blog is the first installment in our new monthly "Professional PowerShell" series, designed to help part-time PowerShell developers freshen up their scripting skills.

Community

  • Roadmapping your PowerShell Journey with Sean Wheeler
    In this episode of the PowerShell Podcast, host Andrew Pla is joined by the insightful Sean Wheeler for an enlightening discussion on all things PowerShell. Andrew starts off the episode by sharing a community tip and delving into the topic of hosting internal PowerShell meetups. The conversation then shifts to Sean, who sheds light on the process of getting started with learning PowerShell, emphasizing the invaluable resources available on learn.microsoft.com/powershell. Together, they explore the different steps involved in a PowerShell journey and offer guidance on mapping out a personalized learning path. Additionally, they discuss the significance of Git and GitHub in the PowerShell ecosystem and extend an invitation to the community for contributions to the PowerShell Community blog. Tune in for a wealth of knowledge and practical advice to enhance your PowerShell experience.
  • PowerShell Pulse Monthly Tech Talks & Community Showcase
    Unlock the potential of Microsoft 365 configuration with Clayton as he demonstrates the seamless integration of PowerShell and Excel for efficient setup. Delve into Azure's queuing system with Mike to optimize your workflow and achieve continuous delivery. Join us for expert insights and practical tips from their engaging presentation.

Fun

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

24
2

Announcements!

Blogs, Articles, and Posts

Projects, Scripts, and Modules

  • New MSIdentityTools Cmdlet to Report OAuth Permissions
    The latest version of the MSIndentityTools PowerShell module includes the Export-MsIdAppConsentGrantReport cmdlet to generate a report of OAuth app permissions. Allied with the ImportExcel module, the cmdlet can produce a very nice workbook containing lots of information about permissions held by the apps in a tenant. But even better, you can export the data to PowerShell and use it in your scripts.
  • New enhancements to Get-AutopilotDiagnosticsCommunity
    It started off as a simple change: I was annoyed that the “Observed Timeline” in the output from the Get-AutopilotDiagnosticsCommunity (and the older Get-AutopilotDiagnostics script too) had events in the wrong order.
  • Perform Currency Conversions with PowerShell
    I’ve recently been working on a PowerShell module for exploring Azure costs (which I plan to blog about soon) and while doing so added some functionality to allow the costs to be converted between different currencies. It occurred to me that this functionality would be useful as a module of its own, and when I searched around I didn’t find too many recent examples for the same. As such I’ve now developed and published a module in the PowerShell Gallery and on GitHub called CurrencyConverter.
  • PSAuthClient
    PSAuthClient is a flexible PowerShell OAuth2.0/OpenID Connect (OIDC) Client.
  • ConvertFrom-StringTable v 0.9.6
    A PowerShell module designed to effortlessly convert various types of string tables into objects.
  • PSDates v 1.0.0
    PSDates provides you all the tools you need when working with dates and times in PowerShell. It contains function to help you find specific date formats, get certain dates based on other dates (first/last day of the month or year, patch Tuesday, etc). I also has functions for working with timezones, unix time, WMI time, crontabs.

Community

  • PowerShell and Pentesting: Hacker Insights with Spencer Alessi
    In this action-packed episode of the PowerShell Podcast, we kick off with a loaded preshow featuring an exciting announcement of PowerShelldle, a community tip, and a deep dive into my own PowerShell journey in response to a viewer question. The main segment is a fascinating conversation with Spencer Alessi, where we delve into the world of PowerShell and pentesting. Spencer generously shares the tools he would use as a sysadmin pentesting his own environment, including PowerSploit, PingCastle, Bloodhound, LockSmith, and ADeleg. He provides invaluable tips for PowerShell enthusiasts looking to transition into security and pentesting, shedding light on the current and emerging trends in the security landscape. Spencer also gives us insights into the role that PowerShell plays in his role as a pentester. Get ready for a riveting episode filled with tips, tools, and trends in the world of PowerShell and security.
  • Is anyone using Powershell with Linux?
    Recently installed Powershell upon my Debian 12 system (I was informed that I would need to be comfortable with it in the upcoming months, to work with Azure). With that warning, I purchased the Month of Lunches book, and proceeded to get to it.

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

25
7

Announcements!

  • Deprecation of Search-AdminAuditLog and New-AdminAuditLogSearch cmdlets
    We are writing to inform you about an upcoming change that will affect the way you access and manage your Exchange Online audit logs. Starting from April 30, 2024, we will be deprecating the following four cmdlets in the Exchange Online V3 module: 
  • Windows Terminal Preview 1.20 Release
    Happy New Year! The Windows Terminal team is back with our first preview release of the year! Windows Terminal Preview 1.20 introduces several changes such as the automatic deferral of package updates while Windows Terminal is running, support for colorful and crazy line styles, changes to the way search results are highlighted and LOTS of usability updates and bug fixes!

Blogs, Articles, and Posts

  • Active Directory Database: PowerShell Monitoring Made Easy
    Find the ntds.dit location and monitor your Active Directory database using PowerShell.
  • Mastering PowerShell Parameter Validation with Dynamic Methods
    Boost Your Scripting Skills! Dive into Dynamic PowerShell Parameter Validation for Efficient and Robust Coding. A Must-Read for PowerShell Excellence.
  • Add updates (.msu) offline into Windows images (.wim)
    Before deployment, Microsoft ISO's install .wim or custom images should be updated. With the DISM module in PowerShell, you can add .msu updates, apps, and drivers to a Windows image offline without the need to boot it up.
  • Connect an Azure Function or Web App to a Key Vault to retrieve secrets with PowerShell
    Azure Functions often require access to sensitive information. It is a security risk to store credentials in code or configuration files. Thus, protecting sensitive information like connection strings, API keys, or passwords is crucial. This is where Azure Key Vault comes in, offering secure and centralized storage for all your secrets. In this article, I will explain how to retrieve secrets from the Key Vault within an Azure Function using PowerShell.
  • PowerShell: How to ping multiple Computers at once
    You want to ping multiple computers at once? Can’t? Yes you can, with PowerShell. In this post I’ll show you a few examples of how you can ping multiple computers.
  • Using the PowerShell Profiler module
    The Profiler module was mentioned in the episode on January 15th of the PowerShell Podcast from PDQ (My favorite!), and it did not cross my path earlier. In this blog post, I will show you how it works and why it's a great tool to optimize your script performance!
  • How to Convert Multiline String to Array in PowerShell?
    Do you need to convert multiline strings into arrays in PowerShell? In this PowerShell tutorial, I will explain to you different methods to convert a multiline string into an array in PowerShell. To convert a multiline string into an array in PowerShell, you can use the -split operator with a newline character as the delimiter.
  • Embracing UEFI Booting and Secure Boot in ESXi Environments
    Transitioning from BIOS to UEFI booting in ESXi environments is a pivotal step toward enhancing system security and performance. UEFI, with its advanced features like faster boot times and Secure Boot, ensures a robust and secure operating environment. Secure Boot, in particular, plays a crucial role by allowing only signed software to run, thus protecting systems against unauthorized firmware and drivers.
  • How to Report the MFA Status for Entra ID User Accounts
    Microsoft doesn't provide a PowerShell cmdlet to return an accurate MFA status for Entra ID user accounts, but by combining data from multiple sources we can write a script to generate a report showing details of user password settings and MFA status.
  • Tagging Virtual Machines with the CISTag Module in PowerShell
    In this blog post, we’ll explore the process of assigning tags to multiple VMs using the CIStag module in PowerShell. This becomes necessary when the conventional PowerCLI module for tagging VMs fails, as was the case for me.

Projects, Scripts, and Modules

  • Update Windows 10 to 22H2 via Enablement Package
    Developed a script to push to 6000+ endpoints using NinjaRMM that will helps update Windows 10 computers to 22H2 using the enablement package. Ninja has been having issues with getting all these computers patched, so wrote this to help bring all devices up to 22H2 which is the last serviced Windows 10 version until EOL.
  • GitHub - cdhunt/httpunitPS: A PowerShell port of httpunit
    A PowerShell port of httpunit. The goal of this module is to utilize Net.Http.HttpClient to more closely simulate a .Net client application. It also provides easy access to the Windows Certificate store for client certificate authentication.
  • helium v 1.1.8
    Assorted Utilities to make your day happier than inhaling a party balloon.
  • PSWeave v 0.1.1
    PowerShell module that innovates automation with AI to make you more productive

Community

  • PowerShell and Education: A Deep Dive with Jim Tyler, Director of Technology
    In this episode of the PowerShell Podcast, we have the pleasure of hosting Jim Tyler (@PowerShellEngineer). In this episode, Jim shares insights into PowerShell in K-12 education, his book and YouTube channel, Miscripts.org, and his various projects and passions. Join us as we delve into Jim's background, his journey into PowerShell, and the unique challenges and rewards of working in the K-12 sector. We discuss the impact of AI on education, the birth of Miscripts.org, and Jim's creative ventures, from YouTube tutorials to self-publishing a PowerShell book. Get ready for a conversation packed with valuable insights, practical advice, and a touch of Disney magic.

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

view more: next ›

Powershell

939 readers
1 users here now

PowerShell (POSH) is a a task automation command-line shell and scripting language created by Microsoft. It became part of the FOSS community in 2016 and is now available across Windows, Linux, and macOS

Resources:


Rules:

Self-promotion rules:


founded 1 year ago
MODERATORS