quickstarts/microsoft.devcenter/devbox-ready-to-code-image/tools/artifacts/run-artifact.ps1 (62 lines of code) (raw):

$ErrorActionPreference = "Stop" Set-StrictMode -Version Latest function ____ExitOne { exit 1 } function ____Invoke-Artifact { param( [Parameter(Mandatory = $true)][ValidateNotNullOrEmpty()][String] $____ArtifactName, [Parameter(Mandatory = $false)][String] $____ParamsBase64 ) if ((new-object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)) { if ($env:USERNAME -eq "$($env:COMPUTERNAME)$") { $private:userInfo = "(as SYSTEM)" } else { $private:userInfo = "(as admin user '$($env:USERNAME)')" } } else { $private:userInfo = "(as standard user '$($env:USERNAME)')" } # Convert to a hashtable to be used with splatting $private:scriptArgs = @{} $private:paramsJson = '' if ([String]::IsNullOrEmpty($____ParamsBase64)) { Write-Host "=== Running $private:userInfo '$____ArtifactName' without parameters" } else { $private:paramsJson = $scriptArgsObj = [Text.Encoding]::ASCII.GetString([Convert]::FromBase64String($____ParamsBase64)) $private:scriptArgsObj = $private:paramsJson | ConvertFrom-Json Write-Host "=== Running $private:userInfo '$____ArtifactName' with parameters $($private:paramsJson | Out-String)" $private:scriptArgsObj.psobject.properties | ForEach-Object { $private:scriptArgs[$_.Name] = switch ($_.Value) { 'TrUe' { $true } 'FaLSe' { $false } default { $_ -replace '`' } } } } $private:scriptPath = Join-Path $PSScriptRoot "$____ArtifactName/$____ArtifactName.ps1" Write-Host "=== Invoking $private:scriptPath with arguments: $private:paramsJson" try { Set-Location -Path (Join-Path $PSScriptRoot $____ArtifactName) Write-Host "=== Current location: $(Get-Location)" Set-StrictMode -Off & $private:scriptPath @private:scriptArgs Set-StrictMode -Version Latest if ((Test-Path variable:global:LASTEXITCODE) -and ($LASTEXITCODE -ne 0)) { throw "Artifact script $private:scriptPath exited with code $LASTEXITCODE" } } catch { $exitCodeMsg = "" if ((Test-Path variable:global:LASTEXITCODE) -and ($LASTEXITCODE -ne 0)) { $exitCodeMsg = " (exit code $LASTEXITCODE)" } Write-Host "=== Failed$exitCodeMsg to run $private:scriptPath with arguments: $private:paramsJson" Write-Host -Object $_ Write-Host -Object $_.ScriptStackTrace ____ExitOne } }