Working with YAML in PowerShell Using powershell-yaml
The ticket said a scheduled DSC pull job was failing on three of seven nodes. Twenty minutes of log reading later, the pattern was obvious: every failure node deserial…
Linux Process Management: ps, top, kill, and systemctl Audit
A logistics client paged us at 3 AM because their order API was returning 502s. The fix took ninety seconds once we logged in. Finding the runaway Python worker with p…
PowerShell REST API Calls with Invoke-RestMethod: A Practical Guide
While working on a monitoring integration for a logistics client, I got an idea for a small helper script that would pull ticket counts from their ITSM API every 15 mi…
Packaging Non-MSI Apps for Intune Win32 Deployment
A logistics client called us in a panic. Their helpdesk was burning 12 hours a week walking users through manual installs of a vendor accounting tool that shipped as a…
PowerShell OutBuffer: How Pipeline Buffering Actually Works
We had a client whose nightly reconciliation script was melting a SQL server every night around 3AM. The script pulled roughly 40,000 objects from an API and shoved ea…
NGINX Serving WordPress: Recommended Config for Performance
While working on a migration for a client running three high-traffic WordPress sites last month, I got an idea for writing up the NGINX WordPress configuration I keep…
PowerShell Select-Object: Master Object Properties Fast
One of our managed services clients had a junior admin exporting process lists to Excel, then deleting columns by hand. Every morning. For compliance evidence. That is…
PowerShell Module Manifest: Versioning and Dependencies Post-Mortem
The pager went off at 03:17. A managed client’s nightly reporting job had failed across 40 endpoints. The error was short: The specified module 'ReportKit' was not loa…
PowerShell Variables: Scope, Types, and Best Practices
Last month we inherited a 3,000-line PowerShell deployment script from a manufacturing client. The thing was riddled with global variables bleeding into functions, typ…
Bash Functions: Defining, Calling, and Returning Values
Last quarter a client’s deployment script hit 900 lines with zero bash functions. Just a massive wall of sequential commands. When something broke at 2 AM, nobody coul…
AD Server Parameter: FQDN vs NetBIOS Name Explained
While scripting a bulk user migration for a client last quarter, I hit one of those issues that wastes an hour before you realize what happened. Half the Get-ADUser ca…
PowerShell Module Management: Install, Import, and Update
A client called us on a Monday morning because half their admin team couldn’t run Exchange management commands. The other half could. Same servers, same accounts, same…
PowerShell For, ForEach, and While Loops Explained
Last quarter we inherited a client environment with 140 Windows servers. The previous admin had been manually checking disk space on each one. Every. Single. Morning…
Ansible Playbooks: Writing Your First YAML Automation for Linux
A healthcare logistics client we support runs a mixed fleet of about 45 Linux servers — CentOS and RHEL, mostly. Their infrastructure team had been managing those mach…
Automate Network Captures: Start and Stop-NetEventSession
The call came in at 11pm. A manufacturing client had intermittent network drops hitting their production floor — three times in two weeks, no pattern, no clear cause…
Bulk Import Data into SharePoint 2016 Lists with PowerShell
A client came to us mid-migration last year with a familiar problem. They had 11 SharePoint lists and roughly 3,000 rows of legacy data sitting in CSV exports. Their p…
PowerShell -AsJob: Run Long Network Tasks Without the Wait
A managed services client we support runs a Windows environment across three sites — roughly 400 endpoints. Their network team had a PowerShell script that pinged ever…
InterfaceAlias vs InterfaceDescription: Targeting NICs in PowerShell
A healthcare client came to us after a PowerShell script someone wrote six months earlier started throwing errors across 40 Windows Server boxes. The script targeted n…
PowerShell CimSession: Remote Network Cmdlets at Scale
We got called in after a client’s previous MSP left them with no documentation and no standardized network adapter configuration across their server fleet. Forty-three…
GitHub CI/CD Automation: Stop Deploying Like It’s 2012
A dev team we inherited during a client onboarding was doing manual deployments via FTP. In 2025. One guy held all the credentials. He’d SSH into the box, pull from Gi…
PowerShell Automation Readiness Audit for IT Teams
I used to spend two hours every Friday manually reviewing scripts before they hit production. Scan for error handling. Check the logging. Run through a mental list of…
GitHub Discussions: Community Engagement for IT Teams
GitHub Discussions is a collaborative communication feature built directly into GitHub repositories, enabling threaded conversations, polls, and structured community f…
PowerShell Parameters, Validation & Dynamic Parameters
Related reading: PowerShell Automation Readiness Audit for IT Teams | PowerShell Scripts, Functions, and Script Blocks Guide
How to Raise the Active Directory Forest Functional Level
Raising the Active Directory forest functional level is one of those tasks that many administrators either delay indefinitely or rush through without adequate preparat…
PowerShell Scripts, Functions, and Script Blocks Guide
PowerShell scripts, functions, and script blocks are the three core building blocks of IT automation for system administrators. Knowing which to use – and how to struc…