45b53dc110 | ||
---|---|---|
profile.d | ||
.gitignore | ||
Edit-MyProfiles.ps1 | ||
Edit-MyScript.ps1 | ||
Edit-TextFile.ps1 | ||
Get-MyAliases.ps1 | ||
Get-MyScript.ps1 | ||
Get-PossibleArguments.ps1 | ||
Get-Profiles.ps1 | ||
Get-ScopeDepth.ps1 | ||
LICENSE | ||
README.md | ||
Reload-MyScripts.ps1 | ||
Setup-Profile.ps1 |
README.md
PowerShell Scripts
These are the scripts that go into $MyPSScriptRoot which is part of my $env:PATH.
The development of these is documented in my blog: https://blog.lksz.me
They are provided 'as is' for your review and for your reuse.
There is a blog post about how to clone this repo and use it as your own.
The scripts all assume the code below is part of one of your $PROFILE files. The code establishes the following variables:
$PathEnvDelimiter
- Linux/Unix it's:
, while in Windows it's;
$MyPSModulePath
- Location to place personal Modules$MyPSScriptRoot
- Location of personal Scripts.
The code also makes sure $MyPSScriptRoot
is in the $env:PATH
environment vairable, and finally it calls Reload-MyAliases
if it exists.
$global:PathEnvDelimiter = $(if( $PSVersionTable.Platform -match 'unix' ) {':'} else {';'})
function Split-PathEnv {
param([string]$EnvPath)
$EnvPath -split $PathEnvDelimiter
}
$global:MyPSModulePath = Split-PathEnv $env:PSModulePath | Where-Object { $_ -match "^$(Resolve-Path ~)" }
if( -not $MyPSModulePath ) {
$MyPSModulePath = Resolve-Path ~/powershell/Modules
if( -not (Test-Path $MyPSModulePath) ) {
New-Item -ItemType Directory -Path $MyPSModulePath -Force | Out-Null
}
$env:PSModulePath = "$MyPSModulePath$PathEnvDelimiter$env:PSModulePath"
}
$local:p = Split-PathEnv $env:PATH
$global:MyPSScriptRoot = Join-Path (Split-Path -Parent $MyPSModulePath) Scripts
if( -not (Test-Path $MyPSScriptRoot) ) {
New-Item -ItemType Directory -Path $MyPSScriptRoot -Force | Out-Null
}
$p = @($p[0], $MyPSScriptRoot) + $($p | Select-Object -Skip 1)
$env:PATH = $p -join $PathEnvDelimiter
Get-Command Reload-MyScripts -ErrorAction SilentlyContinue | ForEach-Object { . $_.Name }