“Everyone Gets the Same Toolbox” PowerShell Script

Introduction

As someone who’s spent way too much time troubleshooting “it works on my machine” problems, I got tired of the constant friction that comes from inconsistent development environments. You know the drill: colleague shares a PowerShell script that uses a module you don’t have, new project setup instructions assume you have the latest VS Code extensions, or you’re helping someone debug an issue only to discover they’re running completely different tool versions. This PowerShell script eliminates that headache by creating a standardized development environment that anyone can deploy quickly. Whether you’re setting up a new machine, helping a teammate get consistent tools, or just want a reliable way to bootstrap a development environment, this script handles the tedious setup work so you can focus on actually building things.

Requirements

To use this script effectively, you’ll need:

  • Administrator Privileges
  • Winget (Windows Package Manager)
  • Powershell 5.1 or later

Benefits

This script offers distinct advantages for efficient team standardization:

  • Complete Environment Standardization: Installs and configures Git, PowerShell 7, VS Code, essential PowerShell modules (Az, Graph, Exchange Online), and productivity extensions in one automated process
  • Intelligent Version Management: Checks existing installations, compares with latest versions, and only updates what’s needed, no unnecessary reinstalls or conflicts
  • Cross-Platform Compatibility: Handles platform quirks including Parallels VMs on Mac, different PowerShell versions, and various installation paths automatically
  • Custom PowerShell Profiles: Adds genuinely useful functions like Get-PublicIPFind-TenantID, and Get-RandomPassword with improved command-line experience for everyone

Step-by-Step Guide

Follow these steps to use the script

  1. Access the Script: Go to the script’s GitHub page: Link
  2. Customize for Your Needs: Edit the configuration arrays at the top of the script to match your requirements:
    • $installApps (line 23): Modify the applications installed via winget – add or remove tools like browsers, text editors, or development frameworks
    • $RequiredModules (line 30): Customize the PowerShell modules list – include only the modules your team actually uses (Azure, Graph, Exchange, etc.)
    • $VSCodeExtensions (line 43): Adjust the VS Code extensions to match your development workflow – themes, language support, productivity tools
  3. Share with Your Team: Distribute the customized script to colleagues
  4. Execute with Admin Rights: Run the script in an elevated PowerShell console. It handles dependency checking, installation progress, and error handling automatically
  5. Verify Consistency: After execution, you’ll have identical tool versions, extensions, and PowerShell configurations

Conclusion

This PowerShell script eliminates environment friction so you can focus on actual work instead of troubleshooting tool differences. When I started using this approach, the difference was immediate. No more “What version of the Az module are you using?” or “Do you have the PowerShell extension installed?” Everyone gets the same baseline, making collaboration seamless and setup effortless. Sometimes the best solutions are the boring ones that just work.