#!/bin/pwsh $null = New-Module { function Add-PowerShellProfileStatement() { param ( [string]$HomeDir = "~", [string]$Category = $null, [Parameter(Position=0, Mandatory=$true)] [string]$Statement, [bool]$Overwrite = $false ) [System.Collections.Generic.List[string]] $profiles = @(); if (Get-Command pwsh -ErrorAction SilentlyContinue) { $profiles.Add($(pwsh -c '$PROFILE')); } if (Get-Command powershell -ErrorAction SilentlyContinue) { $profiles.Add($(powershell -c '$PROFILE')); } Push-Location ~; $profiles = $profiles | ForEach-Object { [System.IO.Path]::GetRelativePath($(Get-Location), $_); }; if ($Category) { $profiles = $profiles | ForEach-Object { Join-Path (Split-Path -Parent $_) "profile.d" "$Category.ps1"; }; } $profiles | ForEach-Object { $fileName = "$HomeDir/$_"; $dirName = Split-Path -Parent $fileName; if (-not (Test-Path -PathType Container $dirName)) { New-Item -ItemType Directory $dirName; } if ((Test-Path -PathType Leaf $fileName) -and (-not $Overwrite)) { Add-Content -Force "$fileName" "`n$Statement"; } else { Set-Content -Force "$fileName" "$Statement"; } }; Pop-Location; } }