Welcome to the Jocha blog!

Windows Backup Mail Report Script

Updated version available: This article covers v4.1 of the script (2016). A fully rewritten v5.0 is now available, compatible with Windows Server 2025 and using the SendGrid REST API instead of the deprecated Send-MailMessage.Read the updated article: Windows Server...

Office365 Safe Attachment Delay Report

Recently the Helpdesk have been getting cases about slow delivery times due to Office 365 ATP Safe Attachments. We have created a script to retrieve the data from Exchange Online, and then used Power BI to visualize it.

Fix for slow “Downloads” folder in Windows 10

In the last couple of weeks I’ve been noticing that clicking the “Downloads” folder in Windows Explorer took a long time to load.
After a bit of research, it turns out Windows 10 tries to guess…

Disable Hardware Acceleration in Outlook 2013

Not all computers work better with hardware acceleration, especially those with incompatible drivers.

A couple of users contacted me asking about “white screens” and freezes in Outlook 2013. The simple solution is to disable the hardware acceleration…

Detect and Elevate a PowerShell session

We’ve set out to help a customer with automation within their IT department.
Some daily tasks require an elevated prompt, there is no way around it. But it’s not obvious how to check if the current prompt is elevated, or how to elevate the session. So here is a how-to…

AI Code Review on Every Pull Request

AI Code Review on Every Pull Request

Every senior engineer has reviewed a pull request, spotted an obvious bug, and wondered why the submitter did not catch it themselves. Claude can be that first-pass reviewer — reading every PR automatically and leaving structured comments before a human even opens the...

Faster PowerShell Scripting with Claude

Faster PowerShell Scripting with Claude

If you spend a meaningful part of your week writing PowerShell, there is a good chance you are still solving the same class of problems you solved five years ago, just with slightly different cmdlets. Claude can cut the time you spend on boilerplate, syntax lookups,...

Deploying Azure Landing Zones with Terraform and GitHub Actions

Deploying Azure Landing Zones with Terraform and GitHub Actions

An Azure Landing Zone is the foundation of every well-governed cloud environment — it defines management groups, subscriptions, networking, policies, and RBAC in a consistent, repeatable way. Using Terraform alongside GitHub Actions gives you a fully automated,...

Bulk Managing SharePoint Online Permissions with PnP PowerShell

Bulk Managing SharePoint Online Permissions with PnP PowerShell

SharePoint Online permissions tend to accumulate over time — stale site memberships, over-privileged guest accounts, and broken inheritance chains create both compliance risk and confusion. PnP PowerShell gives you a concise, cross-site toolset for auditing and...

Deploying Azure Monitor Workbooks with Bicep

Deploying Azure Monitor Workbooks with Bicep

Azure Monitor Workbooks provide rich, interactive dashboards for operational data — but creating them manually through the portal means they live outside your deployment pipeline. By defining workbooks as Bicep resources you can version-control, peer-review, and...

Automating Microsoft Teams Channel Provisioning with Graph API

Automating Microsoft Teams Channel Provisioning with Graph API

Provisioning Microsoft Teams channels manually is fine for a handful of teams, but it quickly becomes unsustainable when onboarding projects at scale. Using the Microsoft Graph API through PowerShell, you can create teams, add channels, and assign members...

Implementing Azure Policy as Code with GitHub Actions

Implementing Azure Policy as Code with GitHub Actions

Azure Policy is a powerful governance tool, but when policies are created manually through the portal they quickly become undocumented and inconsistent across environments. By storing policy definitions in a Git repository and deploying them through GitHub Actions,...