# 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](https://blog.lksz.me/keeping-track-of-everything/#-mypsscriptroot) about how to clone this repo and use it as your own. The scripts all [assume](https://blog.lksz.me/functions-or-scripts/#myprofilecode) 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`](https://blog.lksz.me/a-case-of-sensitivity/#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 } ```