PowerShell Master
CRITICAL GUIDELINES
Windows File Path Requirements
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
- WRONG:
D:/repos/project/file.tsx
- CORRECT:
D:\repos\project\file.tsx
This applies to:
- Edit tool file_path parameter
- Write tool file_path parameter
- All file operations on Windows systems
Documentation Guidelines
NEVER create new documentation files unless explicitly requested by the user.
- Priority: Update existing README.md files rather than creating new documentation
- Repository cleanliness: Keep repository root clean - only README.md unless user requests otherwise
- Style: Documentation should be concise, direct, and professional - avoid AI-generated tone
- User preference: Only create additional .md files when user specifically asks for documentation
Complete PowerShell expertise across all platforms for scripting, automation, CI/CD, and cloud management.
When to Activate
PROACTIVELY activate for ANY PowerShell-related task:
- PowerShell Scripts - Creating, reviewing, optimizing any .ps1 file
- Cmdlets & Modules - Finding, installing, using any PowerShell modules
- Cross-Platform - Windows, Linux, macOS PowerShell tasks
- CI/CD Integration - GitHub Actions, Azure DevOps, Bitbucket Pipelines
- Cloud Automation - Azure (Az), AWS, Microsoft 365 (Microsoft.Graph)
- Module Management - PSGallery search, installation, updates
- Script Debugging - Troubleshooting, performance, security
- Best Practices - Code quality, standards, production-ready scripts
Reference Map
Detailed material lives in references/. Load only what the current task needs.
| Topic |
File |
When to load |
| Cross-platform patterns (paths, platform detection, encoding, shell detection) |
references/cross-platform-patterns.md |
Writing scripts that run on Windows + Linux/macOS, or distinguishing PowerShell vs Git Bash |
| Module management (PSResourceGet, PSGallery, popular modules) |
references/modules-and-gallery.md |
Installing/finding modules, Az 14.5.0, Microsoft.Graph 2.32.0, PnP, AWS Tools, offline installs |
| CI/CD pipelines (GitHub Actions, Azure DevOps, Bitbucket) |
references/cicd-integration.md |
Setting up automated PowerShell builds/tests with multi-platform matrices |
| Syntax & cmdlet reference (variables, operators, flow, functions, pipeline, error handling, Pester, performance, REST) |
references/syntax-reference.md |
Authoring scripts, looking up cmdlets, writing Pester tests, performance tuning |
| Security (JEA, WDAC, Constrained Language Mode, Script Block Logging, credentials, code signing) |
references/security-2025.md |
Production security hardening, credential management, audit logging |
PowerShell Overview
PowerShell Versions & Platforms
PowerShell 7+ (Recommended)
- Cross-platform: Windows, Linux, macOS
- Open source, actively developed
- Better performance than PowerShell 5.1
- UTF-8 by default
- Parallel execution support
- Ternary operators, null-coalescing
Windows PowerShell 5.1 (Legacy)
- Windows-only
- Ships with Windows
- UTF-16LE default encoding
- Required for some Windows-specific modules
Installation Locations:
- Windows:
C:\Program Files\PowerShell\7\ (PS7) or C:\Windows\System32\WindowsPowerShell\v1.0\ (5.1)
- Linux:
/opt/microsoft/powershell/7/ or /usr/bin/pwsh
- macOS:
/usr/local/microsoft/powershell/7/ or /usr/local/bin/pwsh
Core Workflow
- Identify scope — Is this a script, module, automation pipeline, or one-off command? Note target platform(s).
- Check version & modules —
$PSVersionTable.PSVersion, Get-Module -ListAvailable. Confirm PowerShell 7+ unless legacy required.
- Load the relevant reference(s) from the Reference Map above. Avoid loading material you do not need.
- Apply the pre-flight checklist (below) before authoring or running production scripts.
- Validate —
Invoke-ScriptAnalyzer for linting, Invoke-Pester for tests, -WhatIf for destructive cmdlets.
Pre-Flight Checklist for Scripts
Before running any PowerShell script, ensure:
- Platform Detection - Use
$IsWindows, $IsLinux, $IsMacOS (see references/cross-platform-patterns.md)
- Version Check -
#Requires -Version 7.0 if needed
- Module Requirements -
#Requires -Modules specified
- Error Handling -
try/catch blocks in place
- Input Validation - Parameter validation attributes used (see
references/syntax-reference.md)
- No Aliases - Full cmdlet names in scripts
- Path Handling - Use
Join-Path or [IO.Path]::Combine()
- Encoding Specified - UTF-8 for cross-platform
- Credentials Secure - Never hardcoded (see
references/security-2025.md)
- Verbose Logging -
Write-Verbose for debugging
Quick Decision Guide
Use PowerShell 7+ when:
- Cross-platform compatibility needed
- New projects or scripts
- Performance is important
- Modern language features desired
Use Windows PowerShell 5.1 when:
- Windows-specific modules required (WSUS, GroupPolicy legacy)
- Corporate environments with strict version requirements
- Legacy script compatibility needed
Choose Azure CLI when:
- Simple one-liners needed
- JSON output preferred
- Bash scripting integration
Choose PowerShell Az module when:
- Complex automation required
- Object manipulation needed
- PowerShell scripting expertise available
- Reusable scripts and modules needed
Minimal Script Skeleton
#Requires -Version 7.0
<#
.SYNOPSIS
Brief description
.DESCRIPTION
Detailed description
.PARAMETER Name
Parameter description
.EXAMPLE
PS> .\script.ps1 -Name "John"
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$Name
)
$ErrorActionPreference = "Stop"
Set-StrictMode -Version Latest
try {
Write-Verbose "Starting script"
# ... main logic ...
Write-Verbose "Script completed successfully"
}
catch {
Write-Error "Script failed: $_"
exit 1
}
finally {
# Cleanup
}
Expand this skeleton using patterns from references/syntax-reference.md (advanced functions, pipeline, error handling) and references/security-2025.md (input validation, credential handling).
Additional Resources
For shell detection on Windows (PowerShell vs Git Bash), see the powershell-shell-detection skill.
Remember: ALWAYS research latest PowerShell documentation and module versions before implementing solutions. The PowerShell ecosystem evolves rapidly, and best practices are updated frequently.
1---2name: powershell-master3description: Complete PowerShell expertise system across ALL platforms (Windows/Linux/macOS). PROACTIVELY activate for: (1) ANY PowerShell task (scripts/modules/cmdlets), (2) CI/CD automation (GitHub Actions/Azure DevOps/Bitbucket), (3) Cross-platform scripting, (4) Module discovery and management (PSGallery), (5) Azure/AWS/Microsoft 365 automation, (6) Script debugging and optimization, (7) Best practices and security. Provides: PowerShell 7+ features, popular module expertise (Az, Microsoft.Graph, PnP, AWS Tools), PSGallery integration, platform-specific guidance, CI/CD pipeline patterns, cmdlet syntax mastery, and production-ready scripting patterns. Ensures professional-grade, cross-platform PowerShell automation following industry standards.4---5
6# PowerShell Master
7
8## CRITICAL GUIDELINES
9
10### Windows File Path Requirements
11
12**MANDATORY: Always Use Backslashes on Windows for File Paths**
13
14When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).
15
16Examples:
17- WRONG: `D:/repos/project/file.tsx`
18- CORRECT: `D:\repos\project\file.tsx`
19
20This applies to:
21- Edit tool file_path parameter
22- Write tool file_path parameter
23- All file operations on Windows systems
24
25### Documentation Guidelines
26
27NEVER create new documentation files unless explicitly requested by the user.
28
29- **Priority**: Update existing README.md files rather than creating new documentation
30- **Repository cleanliness**: Keep repository root clean - only README.md unless user requests otherwise
31- **Style**: Documentation should be concise, direct, and professional - avoid AI-generated tone
32- **User preference**: Only create additional .md files when user specifically asks for documentation
33
34---
35
36Complete PowerShell expertise across all platforms for scripting, automation, CI/CD, and cloud management.
37
38---
39
40## When to Activate
41
42PROACTIVELY activate for ANY PowerShell-related task:
43
44- **PowerShell Scripts** - Creating, reviewing, optimizing any .ps1 file
45- **Cmdlets & Modules** - Finding, installing, using any PowerShell modules
46- **Cross-Platform** - Windows, Linux, macOS PowerShell tasks
47- **CI/CD Integration** - GitHub Actions, Azure DevOps, Bitbucket Pipelines
48- **Cloud Automation** - Azure (Az), AWS, Microsoft 365 (Microsoft.Graph)
49- **Module Management** - PSGallery search, installation, updates
50- **Script Debugging** - Troubleshooting, performance, security
51- **Best Practices** - Code quality, standards, production-ready scripts
52
53---
54
55## Reference Map
56
57Detailed material lives in `references/`. Load only what the current task needs.
58
59| Topic | File | When to load |
60|-------|------|--------------|
61| Cross-platform patterns (paths, platform detection, encoding, shell detection) | `references/cross-platform-patterns.md` | Writing scripts that run on Windows + Linux/macOS, or distinguishing PowerShell vs Git Bash |
62| Module management (PSResourceGet, PSGallery, popular modules) | `references/modules-and-gallery.md` | Installing/finding modules, Az 14.5.0, Microsoft.Graph 2.32.0, PnP, AWS Tools, offline installs |
63| CI/CD pipelines (GitHub Actions, Azure DevOps, Bitbucket) | `references/cicd-integration.md` | Setting up automated PowerShell builds/tests with multi-platform matrices |
64| Syntax & cmdlet reference (variables, operators, flow, functions, pipeline, error handling, Pester, performance, REST) | `references/syntax-reference.md` | Authoring scripts, looking up cmdlets, writing Pester tests, performance tuning |
65| Security (JEA, WDAC, Constrained Language Mode, Script Block Logging, credentials, code signing) | `references/security-2025.md` | Production security hardening, credential management, audit logging |
66
67---
68
69## PowerShell Overview
70
71### PowerShell Versions & Platforms
72
73**PowerShell 7+ (Recommended)**
74- Cross-platform: Windows, Linux, macOS
75- Open source, actively developed
76- Better performance than PowerShell 5.1
77- UTF-8 by default
78- Parallel execution support
79- Ternary operators, null-coalescing
80
81**Windows PowerShell 5.1 (Legacy)**
82- Windows-only
83- Ships with Windows
84- UTF-16LE default encoding
85- Required for some Windows-specific modules
86
87**Installation Locations:**
88- **Windows:** `C:\Program Files\PowerShell\7\` (PS7) or `C:\Windows\System32\WindowsPowerShell\v1.0\` (5.1)
89- **Linux:** `/opt/microsoft/powershell/7/` or `/usr/bin/pwsh`
90- **macOS:** `/usr/local/microsoft/powershell/7/` or `/usr/local/bin/pwsh`
91
92---
93
94## Core Workflow
95
961. **Identify scope** — Is this a script, module, automation pipeline, or one-off command? Note target platform(s).
972. **Check version & modules** — `$PSVersionTable.PSVersion`, `Get-Module -ListAvailable`. Confirm PowerShell 7+ unless legacy required.
983. **Load the relevant reference(s)** from the Reference Map above. Avoid loading material you do not need.
994. **Apply the pre-flight checklist** (below) before authoring or running production scripts.
1005. **Validate** — `Invoke-ScriptAnalyzer` for linting, `Invoke-Pester` for tests, `-WhatIf` for destructive cmdlets.
101
102---
103
104## Pre-Flight Checklist for Scripts
105
106Before running any PowerShell script, ensure:
107
1081. **Platform Detection** - Use `$IsWindows`, `$IsLinux`, `$IsMacOS` (see `references/cross-platform-patterns.md`)
1092. **Version Check** - `#Requires -Version 7.0` if needed
1103. **Module Requirements** - `#Requires -Modules` specified
1114. **Error Handling** - `try/catch` blocks in place
1125. **Input Validation** - Parameter validation attributes used (see `references/syntax-reference.md`)
1136. **No Aliases** - Full cmdlet names in scripts
1147. **Path Handling** - Use `Join-Path` or `[IO.Path]::Combine()`
1158. **Encoding Specified** - UTF-8 for cross-platform
1169. **Credentials Secure** - Never hardcoded (see `references/security-2025.md`)
11710. **Verbose Logging** - `Write-Verbose` for debugging
118
119---
120
121## Quick Decision Guide
122
123**Use PowerShell 7+ when:**
124- Cross-platform compatibility needed
125- New projects or scripts
126- Performance is important
127- Modern language features desired
128
129**Use Windows PowerShell 5.1 when:**
130- Windows-specific modules required (WSUS, GroupPolicy legacy)
131- Corporate environments with strict version requirements
132- Legacy script compatibility needed
133
134**Choose Azure CLI when:**
135- Simple one-liners needed
136- JSON output preferred
137- Bash scripting integration
138
139**Choose PowerShell Az module when:**
140- Complex automation required
141- Object manipulation needed
142- PowerShell scripting expertise available
143- Reusable scripts and modules needed
144
145---
146
147## Minimal Script Skeleton
148
149```powershell
150#Requires -Version 7.0
151
152<#
153.SYNOPSIS
154 Brief description
155.DESCRIPTION
156 Detailed description
157.PARAMETER Name
158 Parameter description
159.EXAMPLE
160 PS> .\script.ps1 -Name "John"
161#>
162
163[CmdletBinding()]
164param(
165 [Parameter(Mandatory=$true)]
166 [ValidateNotNullOrEmpty()]
167 [string]$Name
168)
169
170$ErrorActionPreference = "Stop"
171Set-StrictMode -Version Latest
172
173try {
174 Write-Verbose "Starting script"
175 # ... main logic ...
176 Write-Verbose "Script completed successfully"
177}
178catch {
179 Write-Error "Script failed: $_"
180 exit 1
181}
182finally {
183 # Cleanup
184}
185```
186
187Expand this skeleton using patterns from `references/syntax-reference.md` (advanced functions, pipeline, error handling) and `references/security-2025.md` (input validation, credential handling).
188
189---
190
191## Additional Resources
192
193- PowerShell Docs: https://learn.microsoft.com/powershell
194- PowerShell Gallery: https://www.powershellgallery.com
195- Az Module Docs: https://learn.microsoft.com/powershell/azure
196- Microsoft Graph Docs: https://learn.microsoft.com/graph/powershell
197
198For shell detection on Windows (PowerShell vs Git Bash), see the `powershell-shell-detection` skill.
199
200---
201
202Remember: ALWAYS research latest PowerShell documentation and module versions before implementing solutions. The PowerShell ecosystem evolves rapidly, and best practices are updated frequently.