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.