Skip to main content
Welcome. This site supports keyboard navigation and screen readers. Press ? at any time for keyboard shortcuts. Press [ to focus the sidebar, ] to focus the content. High-contrast themes are available via the toolbar.
serard@dev00:~/cv

PowerShell Modules

All FrenchExDev PowerShell work is under intensive development. It provides shell-level automation for the tools and machines I use, alongside the C# libraries, wrappers and bundles. Diem is the product effort intended to bring these pieces toward a configurable software factory Lab.

Reading the Module Inventory

The 9 September 2026 source inventory contains 36 module manifests, plus standalone scripts and other directories. A manifest, a file under src/Public, and a command actually exported after import are different observations.

The commands below are declared in inspected source. Modules were not imported for this review, and their operations were not executed. Usage excerpts assume that the corresponding module and its dependencies are already loaded.

Most module directories follow PoSh/FrenchExDev/FrenchExDev.<name>.PoSh. This existing PowerShell implementation evolves alongside the C# stack; it does not uniformly wrap the newer .NET APIs. PowerShell source tree (ouvre dans une nouvelle fenêtre).

Developer Shell

The daily workflow is to configure a shell, read project settings and manage a workspace.

Module Current entry points and purpose
DevPoSh Get-DevPoSh, New-DevPoSh, profile and PowerShell installation helpers
DevSetup Invoke-DevSetup, .NET/software/package/Vagrant-plugin installation helpers
System File, directory, text, administrator and capture-group utilities
Env Get-EnvFile, Import-Env, Update-EnvFile, Write-EnvFile
VsCode Create, read and save workspace configurations

For example, the Env function accepts an explicit settings file:

Get-EnvFile -EnvFile ./.env.example

It reads key/value lines using helpers from System. The DevBash directory in the broader tree is not counted as an implemented command set here. Env source (ouvre dans une nouvelle fenêtre) · Shell source (ouvre dans une nouvelle fenêtre).

Source Control & CI

Git supplies Get-GitStatus, Get-GitStatuses and New-Git; GitHub supplies New-GitHubRepo. The GitLab.DockerCompose module contains separate constructors for GitLab and GitLab Runner services, generators and Compose configurations.

A repository-status example uses the current parameter:

Get-GitStatuses -Dir ./repositories

The GitLab and runner constructors are existing composition work relevant to the future software factory. The C# GitLab configuration components and CLI wrappers are separate integrations being developed toward the same product direction. Git functions (ouvre dans une nouvelle fenêtre) · GitLab and runner constructors (ouvre dans une nouvelle fenêtre).

Container & Orchestration

Module Current scope
Docker Create, remove and switch Docker contexts
DockerCompose Build configuration objects, write files and invoke Compose operations
Traefik.DockerCompose Construct proxy services, labels, routing and Compose configuration
Traefik Construct TLS configuration
Kubernetes Manifest and loader scaffold; no public function files in the inspected directory

For an existing Docker context named lab, the source supports Get-DockerContext -Action SwitchTo -Name lab. Despite its Get- name, this dispatcher performs the selected action; this example switches context.

The Compose and Traefik functions work with their external tools and project settings. Compose source (ouvre dans une nouvelle fenêtre) · Traefik source (ouvre dans une nouvelle fenêtre) · C# configuration APIs.

VM & Image Building

Module Current scope
Packer Template/configuration constructors, writing and Build-Packer
Packer.Alpine Answer files, configuration objects and Alpine image composition
Packer.Alpine.Docker Docker image configuration and composition
Packer.Alpine.Kubernetes Kubernetes image configuration and composition
Packer.Debian Manifest and loader scaffold; no public function files found
Vagrant Vagrant dispatch, box lookup and insecure public-key helper
Vagrant.Catalog Catalog, version and provider metadata constructors
VirtualBox Version, Guest Additions and VM cleanup helpers

Get-VirtualBoxVersion currently runs VBoxManage from the standard Windows installation directory. It is a concrete example of a host-specific assumption in this automation.

The Packer.Alpine.Kubernetes manifest declares three exports but only two public function files were found; its export list needs alignment before publishing a command count. Packer source (ouvre dans une nouvelle fenêtre) · Kubernetes image source (ouvre dans une nouvelle fenêtre) · C# image and VM stack.

Virtual Operating Systems (Vos)

The PowerShell Vos module has configuration constructors, file writers and machine/group dispatch functions. Vos.Alpine and Vos.Alpine.Docker add specialized machine construction. Vos.Alpine.Kubernetes includes machine/IP configuration and jumpbox setup functions.

For example, Get-VosConfig -Action Edit -Global -Local opens the configured global and local files in VS Code. This is an editing action in the existing shell implementation.

The newer C# Vos.Infra.PowerShell project supplies a separate cmdlet integration with the .NET service layer. Its existence does not mean every PowerShell Vos function already delegates to that layer. PowerShell Vos source (ouvre dans une nouvelle fenêtre) · C# Vos services.

Infrastructure Services

Module Current scope
EtcHosts Read/write the hosts file and add/remove entries
SshConfig SSH config, known-hosts editing, keys and session helpers
MkCert Certificate command/generator helpers
Net MAC address generation and validation
PiHole / PiHole.DockerCompose DNS helpers and service composition
Keycloak.DockerCompose Keycloak service and Compose constructors
Sonatype.Nexus.DockerCompose Repository service and Compose generators
LocalHost.HomeLab A New-LocalHostHomeLab public file; manifest exports are empty
Keycloak Manifest and loader scaffold; no public function files found

To read the hosts file using its platform-dependent path:

Get-EtcHostsFile -Action GetContent

SshConfig declares seven exports for eight public files. LocalHost.HomeLab and that mismatch are further reasons to describe functions by source instead of advertising one aggregate cmdlet count. Service sources (ouvre dans une nouvelle fenêtre) · LocalHost.HomeLab (ouvre dans une nouvelle fenêtre).

.NET & Build

Dotnet provides project/solution operations, version bumping, source/test project discovery, cleaning and package publication helpers. Its action dispatcher can build the solution in the current working directory:

Get-DotnetSolution -Action Build -Configuration Release

This invokes dotnet build --configuration Release. It is separate from the generated C# Dotnet wrapper. The Alpine directory previously listed here has no verified public command set in this inventory; C# release discovery is documented under Alpine.Version. Dotnet PowerShell source (ouvre dans une nouvelle fenêtre).

AI & Productivity

Claude contains src/Restart-ClaudeVm.ps1, a standalone script accepting -Action Restart or -Action Reset. It defines Restart-ClaudeVm and Reset-ClaudeVm and invokes the selected branch. The code targets local Claude processes, VM state and a Windows service.

MyInfra contains infrastructure composition scripts. MyRoot.VsCode contains Initialize-Me.ps1 for workspace setup. These are machine-oriented scripts, not evidence of packaged module exports.

The intended next level of composition is MyLocalHost.Diem.Lab: a project expressing my own laptop Lab through the reusable stack. That product integration, including GitLab, GitLab CI and nodes, remains in development. Claude script (ouvre dans une nouvelle fenêtre) · Diem Lab trajectory.

Back to the ecosystem · Next: development practices

⬇ Download