Windows development workstation

Use a Windows 11 desktop for the complete development workflow. An editor or assistant alone is not enough: these repositories validate against Windows PowerShell 5.1, the same runtime the deployment scripts require.

Required tools

Tool Purpose
Git for Windows Clone, inspect changes, commit, and push
GitHub CLI Confirm the account, access repositories, and inspect CI/releases
Windows PowerShell 5.1 Parse, analyze, and test the deployment scripts
Pester 5.7.1 The pinned regression-test engine
PSScriptAnalyzer 1.25.0 The pinned static-analysis engine
An editor VS Code with Microsoft’s PowerShell extension is recommended

Windows PowerShell 5.1 is included with Windows; it is not the pwsh executable. PowerShell 7 can be installed alongside it for a modern shell and tools that require it. Do not replace this project’s 5.1 validation with a 7.x run. The PowerShell editor extension needs .NET Framework 4.8 or later for 5.1 support, which Microsoft describes as best effort.

Install the command-line tools and editor

On a new Windows desktop, open a terminal and install the tools that are missing:

winget install --id Git.Git --exact --source winget
winget install --id GitHub.cli --exact --source winget
winget install --id Microsoft.VisualStudioCode --exact --source winget

Reopen the terminal after installation so its PATH is refreshed. Then install the editor extension:

code --install-extension ms-vscode.PowerShell

Optional modern shell:

winget install --id Microsoft.PowerShell --exact --source winget

No Node.js, Docker, full Visual Studio, or .NET SDK is required to maintain these scripts. Ruby/Jekyll is optional for a local website preview; GitHub Pages already builds the published documentation. Assistant tools are optional, not a substitute for the runtime and checks below.

Confirm the GitHub identity

Sign in through the browser flow and check the result before pushing:

gh auth login --hostname github.com --git-protocol https --web
gh api user --jq .login

For maintainer work, the second command must report vartaxe. Contributors should use their own accounts. GH_TOKEN or GITHUB_TOKEN in the current environment can override a stored login; inspect the account rather than printing or sharing tokens. Do not remove another account’s credentials or change machine-wide environment variables to fix a single terminal session.

Repository access does not automatically grant account-profile or workflow-file editing. When those operations are needed, authorize the corresponding permissions through GitHub’s secure flow. For a classic CLI token, workflow covers workflow edits and user covers account-profile changes; request only what the task needs.

Clone and configure a checkout

Choose a normal development folder outside a synced deployment-package directory:

gh repo clone vartaxe/vartaxe
gh repo clone vartaxe/ConfigMgr-OSD-AddComputerToADGroup
gh repo clone vartaxe/ConfigMgr-OSD-CopyOSDLogToFileShare

Inside each repository, set your own commit identity and review the configuration:

git config user.name "YOUR NAME"
git config user.email "YOUR VERIFIED OR NOREPLY EMAIL"
git config --get user.name
git config --get user.email
git status --short

Do not impersonate the maintainer when contributing. The repositories’ .gitattributes files define checkout line endings: PowerShell files use CRLF, other text uses LF. Avoid editor settings or global Git changes that override this convention. If moving from an older rewritten history, preserve any local work and clone the current repository afresh rather than force-resetting an old checkout.

Install the pinned validation modules

Start Windows PowerShell 5.1, not pwsh, and inspect the engine:

powershell.exe -NoProfile
$PSVersionTable.PSVersion
$PSVersionTable.PSEdition

Expect version 5.1 and edition Desktop. In that 5.1 session:

Install-Module Pester -RequiredVersion '5.7.1' -Repository PSGallery -Scope CurrentUser -Force
Install-Module PSScriptAnalyzer -RequiredVersion '1.25.0' -Repository PSGallery -Scope CurrentUser -Force
Import-Module Pester -RequiredVersion '5.7.1' -Force
Import-Module PSScriptAnalyzer -RequiredVersion '1.25.0' -Force

Use the approved PSGallery source and retain publisher verification. Do not bypass certificate or publisher checks to resolve an installation problem. Windows may also contain Pester 3.4; that built-in version is not the test engine used here. If the gallery or NuGet provider is unavailable, resolve the approved proxy, provider, or repository configuration before continuing.

Validate before editing or publishing

From either script repository’s root, run:

powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File .\build\Invoke-Validation.ps1

-ExecutionPolicy Bypass here applies only to this validation process. It does not change the computer’s policy or override organizational Group Policy. Do not run the deployment script itself as an ordinary desktop test: its entry point requires a real ConfigMgr task sequence. Pester isolates the supported test scenarios.

In VS Code, use PowerShell: Show Session Menu to select Windows PowerShell 5.1 when checking runtime behavior. Always retain the explicit 5.1 validation command, even if another shell is the editor’s default.

After edits, regenerate banners when needed, normalize source bytes, and update the checksum manifest using the repository’s release guide. Keep reports and build outputs outside the source tree; ignored files can still affect strict checksum coverage. A passing CI run does not replace a controlled deployment pilot.

Deployments and packages

The three documentation sites already use a real github-pages deployment environment. Deployment records describe the website revision; they do not mean the scripts were rolled out through ConfigMgr.

The script ZIP and SHA-256 sidecar belong in GitHub Releases. GitHub Packages is a registry for formats such as npm, NuGet, Maven, RubyGems, and containers, not a general-purpose PowerShell-script ZIP store. Adding it now would add packaging and authentication work without improving the deployment contract. Revisit a PowerShell-native distribution channel only if package-manager installation becomes a real requirement.

Official references

Profile and project directory