Skip to content

Instantly share code, notes, and snippets.

View chriskuech's full-sized avatar

Chris Kuech chriskuech

  • Datum Source, ex MSFT
View GitHub Profile
class Requirement {
[string] $Name
[scriptblock] $Test
[scriptblock] $Set
}
$mySystem = [System.Collections.ArrayList]::new()
$requirements = [Requirement[]]@(
@{
enum MyAutocompleteValues {
A,
B,
C
}
# initialize values once instead of on every invokation
$someDynamicSetting = ...
function myHelperFunction($a, $b) {
function Test-Node {
[CmdletBinding()]
Param(
[Parameter(Mandatory, ParameterSetName = "Nodes", ValueFromPipeline)]
[ValidateNotNullOrEmpty()]
[string[]] $Node,
[Parameter(Mandatory, ParameterSetName = "File")]
[ValidateSet( { Test-Path $_ })]
[ValidateNotNullOrEmpty()]
function testNode([string]$Id) {
try {
Invoke-RestMethod -Method Get -Uri "https://$Id/test"
$auditResult = $true
} catch {
$auditResult = $false
}
[AuditResult]@{
Healthy = $auditResult
Computer = $Id
class Computer {
[string] $Service
[string] $ClusterId
[string] $DatacenterId
[string] $Id
Computer([string]$Id) {
$this.Id = $Id
if ($Id -notmatch "(\w+)(\d+)(\w+\d+)") {
throw "Invalid Computer ID '$Id'"
}
Import-Module MyModule
$modulesDir = $env:PSModulePath -split ":" | Select -First 1
Move-Item .\MyModule $modulesDir
SHELL pwsh
ENV PSModulePath="$PSModulePath:/modules"
COPY ./MyModule /modules
RUN Import-Module MyModule; Invoke-FunctionInMyModule
$env:PSModulePath -split ":" `
| Get-ChildItem -Filter *.psd1 -Recurse `
| Import-PowerShellDataFile -ErrorAction SilentlyContinue `
| % {$_["RequiredModules"]} `
| % {@{Name = $_["ModuleName"]; RequiredVersion = $_["ModuleVersion"]}} `
| ? {-not (Get-Module @_ -ListAvailable)} `
| % {Install-Module @_}
PS /projects> mkdir MyModule
PS /projects> cd MyModule
PS /projects/MyModule>