About the author

Johan Arwidmark


Troubleshooting Application Deployment in MDT Lite Touch

By Johan Arwidmark / November 10, 2023

Here is a Tip on how to troubleshoot application deployment quickly in MDT Lite Touch. Shorthand version is that you still want to run it in a task sequence, but not wanting to deploy a full operating system just to test or troubleshoot an application. The solution is to create a custom task sequence, that […]


Office / Studio Setup

By Johan Arwidmark / November 8, 2023

I've been asked a few times now about what my office / studio setup looks like, and figured it was time to share that 🙂 This is what the studio looks like from behind the scene. Equipment Below is a list of the equipment used: Lights Camera and Capture Card Microphone and External Sound Card […]


Block Internet Access to a Hyper-V VM

By Johan Arwidmark / November 7, 2023

When building reference images for Windows 10 or Windows 11 it's quite useful to block Internet access to that VM (to prevent unwanted updates). This can obviously be done on the router level if using a virtual router, but you can also use native Hyper-V functionality to block a single VM from Internet access. Here […]


Windows Autopilot for Existing Devices – Downloading the Deployment Profile

By Johan Arwidmark / October 21, 2023

When using the Autopilot for Existing Devices scenario, you download one of your existing Autopilot deployment profiles via Microsoft Graph, and then instruct whatever deployment solution you are using to copy the file to the C:\Windows\Provisioning\Autopilot folder. This way you can enroll machines into Intune without having to upload a hardware hash and assign them […]


Fixing VBScript Support in Windows ADK SEP 2023 Update (Build 25398)

By Johan Arwidmark / September 29, 2023

For those that tried out the latest Windows ADK for Windows 11 22H2, you quickly learned that Microsoft overlooked testing a bit. The VBScript component had been removed, breaking deployment solutions like MDT, or ConfigMgr (when using VBScripts). This post covers a temporary workaround until Microsoft releases an official fix. Update November 20, 2023: This […]


Add Computer to Collection during OSD via the ConfigMgr AdminService

By Johan Arwidmark / September 29, 2023

In this post you learn how to configure your ConfigMgr task sequence to add a machine to a collection during deployment via the ConfigMgr AdminService. You will setup a service account, grant the minimal permissions for a service account in ConfigMgr, and then use a PowerShell script in the task sequence to trigger the ConfigMgr […]


Get Action Command Line from Scheduled Task using PowerShell

By Johan Arwidmark / September 10, 2023

This week I had to find out the command line of a scheduled task from a few hundred machines, to make sure they had received the correct task, deployed from a Group Policy. Well, PowerShell to the rescue. Here is a small PowerShell snippet that will return the command line from a give task: Below […]


Increasing ConfigMgr Client Cache size during OSD

By Johan Arwidmark / August 29, 2023

Here is a quick tip if you are deploying many applications in your task sequence: Make sure that the ConfigMgr client cache size is configured with enough space for your applications. If not, you'll see something like the following: Increasing the ConfigMgr Client Cache Back in the early days of ConfigMgr OSD you needed to […]


Rename Local Administrator Account during OSD using PowerShell

By Johan Arwidmark / August 18, 2023

During OS Deployment it's not entirely uncommon to see organizations renaming the local admin directly in the task sequence. There are many options available for doing so, but using a healthy dose of PowerShell is an effective way. 🙂 Using the Rename-LocalUser Cmdlet Below sample gets hold of the local administrator account from its well-known […]


Limiting Hyper-V Bandwidth using pfSense

By Johan Arwidmark / August 3, 2023

In my labs I frequently use bandwidth control to simulate different customer environments, allowing me to mimic distributed environments spanning over multiple locations. While Hyper-V itself does support bandwidth limiting, it can only do that on outgoing (outbound) traffic which is not really a real-world scenario where you have routers and WAN links limiting the […]


Optimizing Windows 11 for the Enterprise

By Johan Arwidmark / July 22, 2023

You would think that a product named Windows 11 Enterprise would be optimized for business use out of the box, but like the Windows 10 Enterprise, Windows 11 Enterprise is far from it. In this post you learn about common configuration changes enterprises are doing to make Windows 11 more suitable for enterprises. The Supported […]


Products for Software Updates Demystified

By Johan Arwidmark / July 19, 2023

When using ConfigMgr for Software Updates, via the Software Update Point role, you need to select which classifications and products you want to support in your environment. This configuration would have been super-easy if: Unfortunately, none of the above conditions are true, so in this post you find some clarification on some of the stranger […]


Signing or Not – Intune Win32 App Detection and Requirement Scripts

By Johan Arwidmark / June 24, 2023

Not signing your Win32 App detection scripts may sound as a very strange suggestion, and it's certainly not ideal from a security standpoint, but depending on how many applications you have that are using scripts for detection and/or requirement rules you may run into unexpected results… Microsoft Intune Policy Limitations When using Microsoft Intune for […]


Capture Videos from Hyper-V VMs using PowerShell

By Johan Arwidmark / June 24, 2023

In a recent project I was deploying hundreds of VMs across a large set of Hyper-V Hosts, and I needed to capture the screen output of each VM for documentation and troubleshooting purposes. Long story short, here is a PowerShell script that will capture still images from the screen of each Hyper-V VM according to […]


Using Get-Date in PowerShell for Multiple Languages

By Johan Arwidmark / June 21, 2023

In a recent project I was collecting client health data across machines in multiple regions, all with different cultures/languages configured. As part of the collection, I was adding in a date column in my report via PowerShell. I was using the Get-Date command to get the current date, and then applying the native format options […]


Validate Packages for ConfigMgr Task Sequences

By Johan Arwidmark / May 21, 2023

A quite common issue when doing OS Deployment with ConfigMgr is that there is a mismatch on the packages on one or more DPs. The result on the client is an error message in the smsts.log saying: The hash value is not correct, and the error code is 0x80091007. The fix is typically to update the […]


My Favorite CMPivot Queries

By Johan Arwidmark / May 20, 2023

There are plenty of CMPivot examples out there, but here are a few of my favorites that I use pretty much every week. Enjoy 🙂 Lookup installed application by product name Lookup installed application count by product name Get Free Disk Space in GB


Find Scheduled Tasks via PowerShell

By Johan Arwidmark / April 26, 2023

This morning I needed to find which scheduled task that ran a specific PowerShell script, and also which username that was configured to run the task. While the Get-ScheduledTask and Get-ScheduledTaskInfo cmdlets does retrieve detailed information about schedule tasks, they don't reveal the information about the username. Good old schtasks.exe to the rescue. The Script

Page 2 of 27