PowerShell / PowerShell/Win32-OpenSSH
MSIX packaged programs can't start in ssh session if already running in another session in some configurations
Open
Nobody has claimed this yet.
Area-sshd
Investigate
- Dominant language
- No language data
- Stars
- 8.3k
- Forks
- 819
- PR merge metrics
- No merged PRs in 30d
Description
Prerequisites
- Write a descriptive title.
- Make sure you are able to repro it on the latest version
- Search the existing issues.
Steps to reproduce
Feedback Hub report:
Run this script from an elevated pwsh shell installed from winget:
# Repro: packaged app cannot be activated from session 0 while an instance of the
# same package is running in the desktop session.
#
# RUN THIS FROM A pwsh WINDOW (elevated). The pwsh running it is itself the
# packaged app instance that owns the container in session 1, which is the
# condition being demonstrated. No ssh is involved.
$script = "$env:TEMP\appx-session-repro-inner.ps1"
$result = "$env:TEMP\appx-session-repro-result.txt"
@'
$alias = "$env:localappdata\Microsoft\WindowsApps\pwsh.exe"
$error.clear()
$out = & $alias -nologo -noprofile -c '$PSVersionTable.PSVersion.ToString()' 2>&1 | out-string
"session=$([System.Diagnostics.Process]::GetCurrentProcess().SessionId) pwsh_running_in_other_session=$(@(get-process pwsh -ea ignore).Count) out=[$(($out -replace '\s+',' ').Trim())] err=[$(($error[0] -split '\r?\n')[0])]" |
add-content "$env:TEMP\appx-session-repro-result.txt"
'@ | Set-Content $script
Remove-Item $result -ErrorAction Ignore
$action = New-ScheduledTaskAction `
-Execute "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe" `
-Argument "-noprofile -executionpolicy bypass -file `"$script`""
# -LogonType s4u runs the task as this user in session 0, with no ssh involved.
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType s4u -RunLevel Highest
Register-ScheduledTask -Force -TaskName AppxSessionRepro -Action $action -Principal $principal | Out-Null
Start-ScheduledTask -TaskName AppxSessionRepro
Start-Sleep -Seconds 12
Unregister-ScheduledTask -TaskName AppxSessionRepro -Confirm:$false
'--- result (session 0 activation, packaged pwsh already running on the desktop):'
Get-Content $result
'--- AppModel-Runtime errors logged by the attempt:'
Get-WinEvent -LogName 'Microsoft-Windows-AppModel-Runtime/Admin' -MaxEvents 10 -ErrorAction Ignore |
Where-Object LevelDisplayName -eq 'Error' | Select-Object -First 3 |
ForEach-Object { ' ' + ($_.Message -replace '\s+', ' ') }
'--- environment:'
" build=$([Environment]::OSVersion.Version.Build).$((Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').UBR)"
" edition=$((Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').EditionID)"
" package=$((Get-AppxPackage Microsoft.PowerShell).PackageFullName) status=$((Get-AppxPackage Microsoft.PowerShell).Status)"
" SAC=$((Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\CI\Policy' -ErrorAction Ignore).VerifiedAndReputablePolicyState)"
Expected behavior
Launch MSIX packaged program from Session 0, which is what sshd runs in, joining the container in Session 1 on the desktop.
Actual behavior
Failure to join the container from Session 0 to Session 1 or vice-versa.
Error details
--- result (session 0 activation, packaged pwsh already running on the desktop):
session=0 pwsh_running_in_other_session=1 out=[] err=[Program 'pwsh.exe' failed to run: Access is deniedAt C:\Users\rkito\AppData\Local\Temp\appx-session-repro-inner.ps1:3 char:8]
--- AppModel-Runtime errors logged by the attempt:
0x80070005: Cannot create the process for package Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe because an error was encountered while configuring runtime. [FinishPackageActivation]
0x80070005: Cannot add process 5716 to Desktop AppX container 92535e51-91ab-11f1-a311-7008948fd66e for package Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe because an error was encountered.
0x80070005: Cannot create the process for package Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe because an error was encountered while configuring runtime. [FinishPackageActivation]
--- environment:
build=26300.9032
edition=Professional
package=Microsoft.PowerShell_7.6.4.0_x64__8wekyb3d8bbwe status=Ok
SAC=2
Environment data
v pwsh{win} ~
rkito@lenovo > $PSVersionTable
Name Value
---- -----
PSVersion 7.6.4
PSEdition Core
GitCommitId 7.6.4
OS Microsoft Windows 10.0.26300
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.4
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Version
10.0.0.0
Visuals
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the supplied elevated pwsh reproduction and review the AppModel-Runtime/Admin errors for the session-0 activation path. Compare the sshd/session-0 behavior with the expected container join across sessions. Done means the packaged pwsh/MSIX program launches successfully when an instance is already running in another session.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- powershell
- Domain
- cli, operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100