PowerShell Interoperability: A Guide to Working with Bash and CMD

In modern IT, we rarely work in a pure environment. While PowerShell is the superior tool for structured automation, we often need to interact with other shells: Bash on Linux and CMD on Windows. Instead of choosing between them, a true power user masters their interoperability. This guide covers the essential “bridging” techniques to make these shells work together, built on one central concept. Part 1: The Core Concept - Objects vs. Text Understanding interoperability is simple if you remember one rule: PowerShell works with Objects; Bash and CMD work with Text. ...

December 14, 2025 · The PwshTips Team

pwsh Start-Job and Wait-Job

PowerShell’s Start-Job is a powerful tool for running commands and scripts asynchronously as background processes. However, its behavior, especially when combined with Wait-Job and -Credential, often leads to confusion. This post demystifies how Start-Job works, why some installers fail silently inside jobs, and how to properly manage background tasks in PowerShell. Assigning Start-Job to a Variable: Why It Matters Consider these two commands. They both launch a background job to run a command prompt instruction. ...

November 26, 2025 · The PwshTips Team

$PSScriptRoot & %~dp0: Script's Home

When writing portable scripts, one of the first challenges is locating files relative to the script itself. Whether in PowerShell or a classic Batch file, I need a reliable way to find my script’s “home” directory. This guide breaks down the two most important tools I use for this job: $PSScriptRoot for PowerShell and %~dp0 for Batch. 1. The Batch Method cd /d %~dp0 In Windows Batch scripting (.bat, .cmd), the magic variable %~dp0 is the standard for getting the script’s directory. I often use it with cd to change the working directory. ...

November 12, 2025 · The PwshTips Team

Automate Office 2021 Install & Remove Old Versions

When deploying Microsoft Office 2021, one of the key considerations is how to handle older, existing versions like Office 2010. By default, the modern Office installer will automatically remove these older versions, but for automated or customized deployments, you need more control. This guide will walk you through how I used the Office Deployment Tool (ODT) to create a silent, automated installation of Office 2021 that also cleanly removed any older Office versions. ...

November 4, 2025 · The PwshTips Team

Manage Pinned Taskbar Items with PowerShell

For system administrators, creating a standardized desktop environment often involves customizing the Windows taskbar. While pinning items is easy for a user, automating the process of listing or unpinning applications can be surprisingly difficult. Windows intentionally does not provide a simple, built-in command to manage pinned items to prevent applications from pinning themselves without user consent. However, with a bit of PowerShell scripting, I can gain control over the taskbar. This guide will walk through the most effective methods I use to list, unpin, and manage taskbar items programmatically. ...

October 28, 2025 · The PwshTips Team