WTToolBox.psm1
#region main code #Turn on Verbose output if module was imported with -Verbose if ($myinvocation.line -match "Verbose") { $VerbosePreference = "Continue" } if ($IsWindows -OR $PSEdition -eq 'Desktop') { Write-Verbose "Dot source the module script files" (Get-ChildItem $PSScriptRoot\functions\*.ps1).foreach({.$_.fullname}) Write-Verbose "Testing for Microsoft.WindowsTerminal" <# need to take into account that a user might have a preview version also installed of maybe they are only using the preview version. 8/1/2020 jdh #> #use the settings of the currently running Windows Terminal <# Sept. 22, 2020 JH PowerShell 7.1 previews are based on a newer version of .NET Core which breaks the AppX cmdlets. I'll use remoting to Windows PowerShell. #> if ($PSVersionTable.PSVersion.ToString() -match "^7\.1") { $app = Invoke-Command -ScriptBlock { Get-AppxPackage Microsoft.WindowsTerminal*} -ConfigurationName Microsoft.PowerShell -ComputerName localhost } else { $app = Get-AppxPackage Microsoft.WindowsTerminal* } if ($app) { Write-Verbose "Windows Terminal is installed" Write-Verbose "Testing for a current WindowsTerminal Process" $wt = Get-CimInstance -ClassName Win32_process -filter "ProcessID=$pid" #validate the parent process is Windows Terminal $parent = Get-Process -id $wt.parentProcessID if ($parent.processname -match "WindowsTerminal") { Write-Verbose "Testing for settings.json" #build path from process path $wtPath = Split-Path -Path $parent.path #pull the release name from $wtpath -parsing out version number $release = Split-Path -path $wtpath -leaf $trimmed = $Release -replace "_.*_", "_" $local = Join-Path -path $ENV:Userprofile\AppData\Local\Packages -childpath $trimmed $jsonPath = Join-Path -path $local -ChildPath "LocalState\settings.json" Write-Verbose "Using path $jsonPath" If (Test-Path $jsonPath) { #Export settings path to a global variable Write-Verbose "Creating settings variable" $global:WTSettingsPath = $jsonPath #create a custom object with the settings.json values saved as $WTSettings AddWTSettingsVariable Write-Verbose "Creating a global variable with defaults" $defaults = Join-Path -path $app.installLocation -ChildPath defaults.json $global:WTDefaultsPath = $defaults #need to account for preview and stable releases $global:WTDefaults = $defaults.foreach( { $wtPath = $_ (Get-Content -path $_).where( {$_ -notmatch "(\/{2})(?=\s+)"}) | ConvertFrom-Json | Add-Member -memberType NoteProperty -name DefaultPath -value $wtPath -PassThru }) } #if json file is found } #if parent process is WT } #if $app else { Write-Warning "Windows Terminal was not found on this system so not all commands in this module will work." } } #if Windows else { Write-Warning "This module requires a Windows platform." } #endregion |