Invoke-PowerShell.ps1
<#PSScriptInfo
.VERSION 1.0.4 .AUTHOR Roman Kuzmin .COPYRIGHT (c) Roman Kuzmin .TAGS Test .GUID 77483ce2-8c29-495b-9cca-cf079804f832 .PROJECTURI https://github.com/nightroman/PowerShelf .LICENSEURI http://www.apache.org/licenses/LICENSE-2.0 #> <# .Synopsis Invokes new PowerShell of the currently running version. .Description This script invokes powershell/pwsh of the same version as the current: - Windows PowerShell -Version 2 - Windows PowerShell v3+ - PowerShell Core v6+ Arguments of the script are passed in powershell/pwsh. .Link https://github.com/nightroman/PowerShelf #> trap {Write-Error -ErrorRecord $_} if ($PSVersionTable.PSVersion.Major -eq 2) { powershell.exe -Version 2 @args } elseif ($PSVersionTable.PSVersion.Major -le 5) { powershell.exe @args } elseif (Get-Command pwsh -ErrorAction Ignore) { pwsh @args } else { & ([System.Diagnostics.Process]::GetCurrentProcess().Path) @args } |