I started using the new Windows Terminal application more and more. I also often start a PowerShell from another PowerShell. Using the old command line infrastructure this was as easy as
But the new Windows Terminal is a Shop App, or a Universal App, so it behaves differently from a normal Win32 program.
In my PowerShell profiles I had long support to start modern Windows apps, this is using COM interop and ActivateApplication to function, so I could do something like:
Start-WindowsApp -id Microsoft.WindowsTerminal_8wekyb3d8bbwe!App
and create a alias like:
to start a new Windows Terminal session. This works but requires some overhead in the PowerShell profile.
Then I read somewhere that you can just use Win+R and type
wt, this indeed works but it didn't explain how?
wt.exe works, but there is no executable
wt.exe anywhere in the Windows path. I used SysMon to figure out where this executable is and found it in:
this path is also listed in the $env:path, but as a user specific entry, this is why it works from anywhere.
The file is a zero byte file and actually just a ReparsePoint, or softlink pointing to the actual App.
C:\Users\xxx\AppData\Local\Microsoft\WindowsApps\wt.exe: UNKNOWN MICROSOFT REPARSE POINT
so this is not a normal symbolic link, and the tools I usually use to inspect it, don't work.
AppManifest.xml file of the Terminal app has the following lines:
<Extensions> <uap3:Extension Category="windows.appExecutionAlias" Executable="WindowsTerminal.exe" EntryPoint="Windows.FullTrustApplication"> <uap3:AppExecutionAlias> <desktop:ExecutionAlias Alias="wt.exe" /> </uap3:AppExecutionAlias> </uap3:Extension> </Extensions>
I don't know enough about modern apps to understand how this all works together, but I found it interesting enough to investigate this a little.