PowerShell: the object-oriented shell you didn’t know you needed

an hour ago

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. (+)(-)

The only PowerShell Command you will ever need to find out who did what in Active Directory

an hour ago

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.

Practical PowerShell: Flow Control

an hour ago

"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.

New PowerShell Command Parameters in ConfigMgr 2403

an hour ago

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. (+)(-)

Jeff Hicks avatar

Pick Up The PowerShell Practice Primer

an hour ago | Jeff Hicks

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... (+)(-)

Removing Outlook Add-ins From Mailboxes with PowerShell

an hour ago

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. (+)(-)

Adam Bertram avatar

Your Go-To PowerShell Template for HTTP-Triggered Azure Functions

2 days ago | Adam Bertram

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.

Jeff Hicks avatar

Pick Up The PowerShell Practice Primer

3 days ago | Jeff Hicks

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...

Harm Veenstra avatar

Report on Non-Compliant Intune devices

7 days ago | Harm Veenstra

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 script

Harm Veenstra avatar

Report from which PowerShell module the cmdlets are from

14 days ago | Harm Veenstra

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.

Przemyslaw Klys avatar

Active Directory Replication Summary to your Email or Microsoft Teams

15 days ago | Przemyslaw Klys

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.

Harm Veenstra avatar

PowerShell data/reference types for variables

22 days ago | Harm Veenstra

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.

Harm Veenstra avatar

Installing Windows Updates on all your Hyper-V lab VMs using PowerShell and PSWindowsUpdate

28 days ago | Harm Veenstra

I’m a Consultant who does a lot of Intune testing, and I use Hyper-V on my laptop with many VMs in customer environments. Some VMs are used more than others, but when you turn them on after a few weeks… They need updates and restarts, and I wanted to automate that process so that it … Continue reading Installing Windows Updates on all your Hyper-V lab VMs using PowerShell and PSW

Mark Wragg avatar

Converting Azure DevOps Classic Release deployment pipelines to YAML

one month ago | Mark Wragg

I recently migrated some Azure DevOps Classic Release deployment pipelines to YAML. There’s obvious benefits to storing your pipelines as code: they become an artifact in source control that can evolve and change as the code they build or deploy does, and you have the benefits of version history and maintaining the pipelines via pull requests. However I also found that I could use logic and expressions to make the pipelines more efficient and easier to maintain and that through templating could easily connect the pipelines together to form what I humorously dubbed the “super pipeline” (but then the name stuck).

Harm Veenstra avatar

Use PowerShell to create report of a DTS Compliant NPS log

one month ago | Harm Veenstra

One of our customers had issues authenticating clients using NPS. One of the first things you do is… I read the NPS logs, and they were DTS Compliant formatted, a bit of a pain to read and search 🙁 So, I used PowerShell to create a nice log for me in either a GridView or … Continue reading Use PowerShell to create report of a DTS Compliant NPS log

Bradley Wyatt avatar

Getting Started with GitHub Copilot in the CLI

one month ago | Bradley Wyatt

It was announced recently that GitHub Copilot in the CLI has reached General Availablity for all Individual, Business, and Enterprise customers. In this post, I will show you how you can get download and install the CLI and Copilot extension, authenticate to use Copilot, and the available commands and use cases. Install the GitHub CLI Windows With Windows, we can install the GitHub CLI via the command line (Winget, Chocolatey, or Scoop) or manually from here.

Harm Veenstra avatar

Disabling Idle Power Save using Intune and PowerShell

one month ago | Harm Veenstra

One of our customers sought a solution to disable Idle Power Save on their Realtek USB GbE network adapters using Intune. Because of that setting, their users were disconnected from their Remote Desktop sessions multiple times during the day. This blog post will show you how to disable that setting using Intune, a Windows app (Win32), or a Remediation script.

Bradley Wyatt avatar

View and Export your Intune Device Management Scripts Using the Microsoft Graph PowerShell SDK

one month ago | Bradley Wyatt

Introduction If you’re familiar with Intune, you’re likely aware of its capability to deploy platform or PowerShell scripts to your endpoint devices. Unfortunately, once you upload your script to the portal, there is (at the time of writing this) no easy way to view the script content or download it. Resolution To quickly and easily get Intune scripts, I created a function that allows me to export all the scripts from a tenant en masse and view them in the shell or terminal.

Harm Veenstra avatar

250.000 visitors!

one month ago | Harm Veenstra

This site just reached a new milestone: 250.000 visitors! It started on April 21st, 2021, and it's been almost two years already now :) In this blog post, I will link to other milestones and tell you how things are going for me now... (Spoileralert: Great :) )


Harm Veenstra avatar

PowerShell 5 and 7 command-line parameters

one month ago | Harm Veenstra

You can start PowerShell 5 (powershell.exe) and PowerShell 7 (pwsh.exe) and specify parameters. This blog post will show you the parameters I use most for version 5 or 7.

Jeff Hicks avatar

GitHub Scripting Challenge Solution

one month ago | Jeff Hicks

Earlier this year I appeared on the PowerShell Podcast. I ended the interview with a scripting challenge. The Core Challenge Using whatever tools and techniques you want, write a PowerShell function that will query the Issues section of a GitHub repository and create output showing the number of open issues by label and the percentage...

Jeff Hicks avatar

My Conference Future

2 months ago | Jeff Hicks

I have been an IT professional for over 30 years. I have been speaking publicly and presenting at conferences for probably 25 years. I have presented to all types of groups, from small user groups to large conferences, literally around the world. As I enter the last part of my IT career, I am re-assessing...

Darren Robinson avatar

Visualising your IP Address using PowerShell and AI

2 months ago | Darren Robinson

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. I gave a quick-fire series of live demos in a theatre session titled PowerShell & ChatGPT – How to Automate Your Way to Generative AI Brilliance.… keep reading The post Visualising your IP Address using PowerShell and AI appeared first on darrenjrobinson - Bespoke Identity and Access Management Solutions.

Harm Veenstra avatar

And then… I became a Microsoft MVP in the PowerShell area

2 months ago | Harm Veenstra

This busy week ended with something that I will never forget: I received an email with the subject "Welcome to the Most Valuable Professional (MVP) Program"!

Mark Wragg avatar

Monitor and manage your Azure cloud costs with a little help from PowerShell

2 months ago | Mark Wragg

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.

Jeff Hicks avatar

PowerShell Refresh

2 months ago | Jeff Hicks

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, and...

Jeff Hicks avatar

Module Linking

2 months ago | Jeff Hicks

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. I have a...

Harm Veenstra avatar

PowerShell Games

2 months ago | Harm Veenstra

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 :)

Alexander Koehler avatar

Exchange Online mailbox apps check via PowerShell

2 months ago | Alexander Koehler

Some days ago I got a ticket where someone could not load his calendar in Microsoft Teams. Outlook worked fine the only thing was Out of Office Notification, also did not work. After some research I found the solution by activating EWS on this specific mailbox. One our later everything was fine. You can find … Read more "Exchange Online mailbox apps check via PowerShell" Articel Exchange Online mailbox apps check via PowerShell available first on IT koehler blog.

Bas Wijdenes avatar

FIX: Cannot find built-in module that is compatible with the edition

2 months ago | Bas Wijdenes

Microsoft.PowerShell.Utility & Microsoft.PowerShell.Management Cannot find the built-in module that is compatible with the edition. Please make sure the PowerShell built-in modules are available. They usually come with the PowerShell package under the $PSHOME module path, and are required for PowerShell to function properly. If you made this error, you screwed up big time.But luckily, it’s … Continue reading FIX: Cannot find built-in module that is compatible with the edition The post FIX: Cannot find built-in module that is compatible with the edition appeared first on Bas Wijdenes.

Mark Wragg avatar

Perform Currency Conversions with PowerShell

2 months ago | Mark Wragg

I’ve recently been working on a PowerShell module for exploring Azure costs 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.

Ole Rand-Hendriksen avatar

Quickly exanding the booking window of all meeting rooms in Microsoft 365

2 months ago | Ole Rand-Hendriksen

So I got a task to expand the booking window for all the meeting rooms at work. From the default 180 days to 365 days. This isn’t anything big or complicated to do. It’s an everyday task really. But I was wondering, how short can I make the PowerShell script to do this for all meeting rooms? Here’s what i started out with: $mailboxes = Get-Mailbox -Filter {RecipientTypeDetails -eq 'RoomMailbox'} foreach ($m in $mailboxes) { $m | Set-CalendarProcessing -BookingWindowInDays 365 } It’s pretty short, but one line there is unneccessary… foreach ($m in (Get-Mailbox -Filter {RecipientTypeDetails -eq 'RoomMailbox'}) ) { $m | Set-CalendarProcessing -BookingWindowInDays 365 } Ok, short, but still, I think i can get it down to just one line… Get-Mailbox -Filter {RecipientTypeDetails -eq 'RoomMailbox'}| % { Set-CalendarProcessing -Identity $_.

Catalin Cristescu avatar

Tagging Virtual Machines with the CISTag Module in PowerShell

3 months ago | Catalin Cristescu

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. Discovering a solution in a VMware blog post (https://blogs.vmware.com/PowerCLI/2018/12/new-tag-management-module.html), I learned about the CIStag module for effective

Christian Ritter avatar

Simplifying PowerShell Object Validation & Transforming: A JSON-Schema Refactoring Journey

3 months ago | Christian Ritter

In a recent scripting endeavor, I developed a PowerShell script with an ArgumentTransformationAttribute. The script's purpose was to convert PSCustomObjects or Hashtables into a JSON format tailored for seamless integration with a BatchRequest destined for the Microsoft Graph API. class JSONTransform : System.Management.Automation.ArgumentTransformationAttribute{ [object] Transform([System.Management.

Dan Tsekhanskiy avatar

How to Automatically Download the Latest Windows Device Drivers

one year ago | Dan Tsekhanskiy

The Problem The Solution What it does What it doesn’t do Parting Words Related Links Imagine never needing to worry about drivers during Windows Operating System deployment ever again. No need to manually download drivers. No need to maintain driver folders on your deployment shares. No need to update drivers whenever something breaks… The Problem Every Windows deployment environment seems to manage OS drivers differently.

Bradley Wyatt avatar

Automatically Schedule Microsoft Teams Do Not Disturb Presence Based on Outlook Calendar Events

4 months ago | Bradley Wyatt

In this article I will be showing you how you can automatically have Microsoft Teams set its presence to Do Not Disturb, or any other presence, based on events in your Outlook Calendar. I also looked into leveraging Power Automate but it began to require premium connectors and at that cost, going the serverless automation route was much cheaper. An overview of this automation is as follows: Run on a set schedule.

Catalin Cristescu avatar

Update HPE ILO firmware using PowerShell

4 months ago | Catalin Cristescu

The first script of 2024 is about updating the HPE ILO firmware on physical servers using PowerShell. Firmware updates, including those for iLO, often include bug fixes, security patches, and performance enhancements. Regularly updating iLO firmware ensures that your servers are equipped with the latest features, improvements, and security measures, reducing the risk of vulnerabilities […]

Doug Finke avatar

2023 Videos In Review 2023

4 months ago | Doug Finke

2023: A Year of Innovation and Learning in Video Reflecting on the year 2023, I am grateful for the support and engagement from the community. The enthusiasm and feedback have been the driving force behind each video, fueling exploration into the fascinating realms of PowerShell projects, AI-powered coding, and data alchemy. A special thank you to the knowledgeable individuals who took the time to present material, providing a tremendous learning opportunity for all of us.

Matthew Dowst avatar

2023: A PowerShell Year in Review

4 months ago | Matthew Dowst

2023 was quite the year for me and PowerShell, so I thought I would put together a brief summary of the year as I saw it. Plus provide you with some fun and interesting statics from the PowerShell Weekly newsletter. This year was also a huge year for me. My book Practical Automation with PowerShell […]

Bas Wijdenes avatar

How to create a maintenance mode in Azure Automation

4 months ago | Bas Wijdenes

An emergency button to ensure that your runbooks stop running without disconnecting the schedule in Azure Automation Disclaimer: This post can be seen as satire. There are probably better ways, but because we were so limited with the customer at the time, we opted for a hobby approach: ‘Maintenance mode the creative way‘. What if… … Continue reading How to create a maintenance mode in Azure Automation The post How to create a maintenance mode in Azure Automation appeared first on Bas Wijdenes.

Faris Malaeb avatar

FIX: Exchange Failed to enable the new cloud archive using PowerShell

4 months ago | Faris Malaeb

When migrating from Exchange on-premises to Exchange online, you might notice that the mailbox migrations is completed successfully with no failure or error in the migration process. But from Microsoft 365 Admin Portal you find an error about Exchange online archive issue, even though everything seems to be OK for the user in the Exchange... The post FIX: Exchange Failed to enable the new cloud archive using PowerShell appeared first on Faris Malaeb.

Bradley Wyatt avatar

Automated Alerts on Azure (Entra ID) Application Secret Expirations

4 months ago | Bradley Wyatt

Monitoring Azure AD (Entra ID now) application secret expirations in an enterprise is a critical aspect of maintaining robust security and ensuring uninterrupted service. When application secrets expire without timely renewal, it can disrupt business operations by causing application failures. Proactive management of application secret expirations helps enterprises avoid last-minute issues, enabling a more secure and efficient operational environment.

Alexander Koehler avatar

Exchange Online Enforcement Pause

4 months ago | Alexander Koehler

Lot of people already know the new Microsoft strategy for blocking outdated Exchange OnPrem Versions in hybrid environments. See this old article which describes the most important informations, see also the timeline for throttling and blocking. https://techcommunity.microsoft.com/t5/exchange-team-blog/update-on-transport-enforcement-system-in-exchange-online/ba-p/3827774 After some time the Exchange Teams announced an new article about pausing this enforcement with throttling and blocking.

Christian Ritter avatar

PowerShell-Technique: PowerShell: Getting all String occurrence Indices

4 months ago | Christian Ritter

Recently, I participated in AdventOfCode 2023 and encountered challenges that required finding the precise location of a character in a string, along with all its occurrences. Take, for instance, the string 'Hello, world!'. I needed to identify all positions of the character 'l': 2, 3, and 10. The typical method, .IndexOf('l'), provides only the first occurrence (in this case, 2). To obtain all positions, I devised a PowerShell function that iterates through the string using the IndexOf() method with a position parameter.

Nicholas Getchell avatar

My PowerShell Journey

4 months ago | Nicholas Getchell

As I look back on my sixteen years in information technology, I can’t help but notice the impact PowerShell has had on my career. First Automation My first automations were little batch scripts and AutoHotKey plays. They did trival tasks like opening multiple Internet Explorer windows and the Active Directory Users and Computers tool to quickly get myself up and running at work. I’d share them with my coworkers while sitting at a college helpdesk.

Bradley Wyatt avatar

Microsoft Graph API Endpoint Adds Last Successful Sign-In Date Time

4 months ago | Bradley Wyatt

Previously, if you wanted to find a user’s last successful sign-in to your Microsoft 365 tenant using the Microsoft Graph REST API, you would have to iterate through Entra ID sign-in logs. With new recent additions to the Microsoft Graph API Beta Endpoint, you can now return the UTC value just by parsing the user details and properties. The Microsoft documentation regarding the signInActivity resource type can be found here.

Catalin Cristescu avatar

PowerCLI script to check Cluster Overcommitment ratio

5 months ago | Catalin Cristescu

Efficient resource utilization is a key factor in maintaining a healthy VMware vSphere environment. As virtualization environments grow, it becomes crucial to monitor and optimize resource allocation to prevent overcommitment, ensuring the smooth operation of virtual machines. In this blog post, we’ll explore a PowerCLI script designed to check the Cluster Overcommitment Ratio, providing val

Przemyslaw Klys avatar

Syncing Global Address List (GAL) to personal contacts and between Office 365 tenants with PowerShell

5 months ago | Przemyslaw Klys

Hey there! Today, I wanted to introduce you to one of the small but excellent module I've created called the O365Synchronizer. This module focuses on synchronizing contacts and users. If you've ever been tasked with synchronizing Global Address Lists (GAL) across different Office 365 tenants or just wanted to sync GAL with user mailboxes so they can access contacts directly on their phones, this tool is for you.

Darren Robinson avatar

Where the heck is the PowerShell Module loading from?

5 months ago | Darren Robinson

If you’re anything like me you always have PowerShell open, and often both PowerShell and Windows PowerShell. And PowerShell in VSCode and Terminal (and sometimes Jupyter Notebook, and WSL – Windows Subsystem for Linux). There WILL come a point on Windows when you want to know where the heck is the PowerShell Module loading from (especially when using Windows PowerShell).… keep reading The post Where the heck is the PowerShell Module loading from? appeared first on darrenjrobinson - Bespoke Identity and Access Management Solutions.