PSResourceGet icon indicating copy to clipboard operation
PSResourceGet copied to clipboard

Incorrect resource directories when run in VSCode Terminal

Open dsolodow opened this issue 2 years ago • 6 comments

Prerequisites

  • [X] Write a descriptive title.
  • [X] Make sure you are able to repro it on the latest released version
  • [X] Search the existing issues.

Steps to reproduce

VSCode 1.83.1 with PowerShell extension 2023.8.0, set to Windows PowerShell x64. $PSVersionTable shows: Name Value


PSVersion 5.1.19041.3633 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.19041.3633 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1

When running Install-PSResource it installs into the Documents\PowerShell\Modules directory instead of Documents\WindowsPowerShell\Modules

Expected behavior

Running PSResource cmdlets under Windows PowerShell should save to the WindowsPowerShell module/script direcory.


install-psresource -name exchangeonlinemanagement -scope CurrentUser


it should install to Documents\WindowsPowerShell\Modules\ExchangeOnlineManagement

Actual behavior

install-psresource -name exchangeonlinemanagement -scope CurrentUser


it *actually* installed to Documents\PowerShell\Modules\ExchangeOnlineManagement

Running the same line from powershell.exe or a Windows PowerShell tab in Terminal behaves as expected.

Error details

No response

Environment data

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     1.0.0      Microsoft.PowerShell.PSResourceGet  {Find-PSResource, Get-InstalledPSResource, Get-PSResourceRepository, Get-PSScriptFileInfo...}

Key   : PSVersion
Value : 5.1.19041.3633
Name  : PSVersion


Key   : PSEdition
Value : Desktop
Name  : PSEdition


Key   : PSCompatibleVersions
Value : {1.0, 2.0, 3.0, 4.0...}
Name  : PSCompatibleVersions


Key   : BuildVersion
Value : 10.0.19041.3633
Name  : BuildVersion


Key   : CLRVersion
Value : 4.0.30319.42000
Name  : CLRVersion


Key   : WSManStackVersion
Value : 3.0
Name  : WSManStackVersion


Key   : PSRemotingProtocolVersion
Value : 2.3
Name  : PSRemotingProtocolVersion


Key   : SerializationVersion
Value : 1.1.0.1
Name  : SerializationVersion

Visuals

Terminal: image

VS Code: image

dsolodow avatar Oct 24 '23 22:10 dsolodow

It looks like the issue is with utils.cs lines 985-990. If I read it correctly, it's looking at host.version and saying "if greater than 6.0, PowerShell, if less than, Windows PowerShell". Since the VSCode PowerShell terminal returns the module version (2023.8.0) as it's host.version it's mis-interpreting it.

dsolodow avatar Oct 25 '23 01:10 dsolodow

I think that'll be the same issue as #463 then

hbuckle avatar Oct 25 '23 04:10 hbuckle

@andyleejordan do you know what PowerShell api we can call?

SydneyhSmith avatar Oct 30 '23 18:10 SydneyhSmith

The linked issue had a note that linked to what PowerShellEditorServices does (if that helps): https://github.com/PowerShell/PowerShellEditorServices/blob/main/src/PowerShellEditorServices/Utility/VersionUtils.cs

dsolodow avatar Oct 30 '23 18:10 dsolodow

@SydneyhSmith given the constraint that you've just got PSCmdlet...I'm not sure but am looking at it. @SeeminglyScience any bright ideas? It has access to SessionState so there should be a good programmatic way to go about this but I'm not finding it quickly. I don't think I would want to invoke a command to do it...I mean maybe you're best off doing the reflection call like we do 🙃

andyleejordan avatar Oct 31 '23 18:10 andyleejordan

no luck with a fix on this yet?

dsolodow avatar Jun 19 '24 00:06 dsolodow