Skip to content

Bundled Modules should be installed in \Name\Version\ folders in PSCore #2350

Description

@kilasuit

Steps to reproduce

Install v6.0.0.10 for Windows10
Open C:\Program Files\PowerShell\6.0.0.10\Modules and check the folder for the bundled module like PSReadLine

Expected behavior

There should be a folder relating to the version of the Module installed and the module files should be in that location i.e. C:\Program Files\PowerShell\6.0.0.10\Modules\PSReadLine\1.2\

Actual behavior

Module files are stored in the module name folder with no version folder i.e. C:\Program Files\PowerShell\6.0.0.10\Modules\PSReadLine\

Environment data

Name                           Value                                                                                   
----                           -----                                                                                   
PSEdition                      Core                                                                                    
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                 
PSVersion                      6.0.0-alpha                                                                             
SerializationVersion           1.1.0.1                                                                                 
PSRemotingProtocolVersion      2.3                                                                                     
WSManStackVersion              3.0                                                                                     
GitCommitId                    v6.0.0-alpha.10-dirty                                                                   
BuildVersion                   3.0.0.0                                                                                 
CLRVersion                                                                                                             

Activity

  1. added this to the milestone on Nov 4, 2016
  2. SteveL-MSFT commented on Nov 4, 2016

    @SteveL-MSFT
    Member

    This appears to affect all modules

  3. kilasuit commented on Dec 1, 2016

    @kilasuit
    CollaboratorAuthor

    This seems to still affect the modules below that are built along with PowerShell from what I can tell in the 6.0.0.13 release

    CimCmdlets
    Microsoft.PowerShell.Archive
    Microsoft.PowerShell.Diagnostics
    Microsoft.PowerShell.Host
    Microsoft.PowerShell.LocalAccounts
    Microsoft.PowerShell.Management
    Microsoft.PowerShell.Security
    Microsoft.PowerShell.Utility
    Microsoft.WSMan.Management
    Pester
    PSDesiredStateConfiguration
    PSDiagnostics
    PSReadLine

  4. removed this from the milestone on May 25, 2017
  5. joeyaiello commented on May 25, 2017

    @joeyaiello
    Contributor

    Still relevant, but not critical for 6.0.0.

  6. kilasuit commented on May 27, 2017

    @kilasuit
    CollaboratorAuthor

    Joey Aiello (@joeyaiello) - although not critical it is IMO detrimental for being able to ship any of these in packaged versions as separate packages

  7. iSazonov commented on May 28, 2017

    @iSazonov
    Collaborator

    I believe it requires an enhancement in Import-Module to load last version, required version or explicit version too, doesn't it?

  8. SteveL-MSFT commented on May 28, 2017

    @SteveL-MSFT
    Member

    Ilya (@iSazonov) import-module already understands module versioning, this should only require putting the module files under a version folder

  9. iSazonov commented on May 29, 2017

    @iSazonov
    Collaborator

    Sorry for the inaccuracy. I mean, can the cmdlet do this for directory structure like "/PowerShell/<PowerShell version>/Modules/<Module name>/<Module version>/" ?

  10. SteveL-MSFT commented on May 29, 2017

    @SteveL-MSFT
    Member

    Should be $PSHome/Modules/<ModuleName>/<ModuleVersion>

  11. joeyaiello commented on May 30, 2017

    @joeyaiello
    Contributor

    Ilya (@iSazonov): yes, we look in any folder in PSModulePath for module folders, and in those module folders we look for version folders. In the absence of a version folder, we load the module from there.

    For context, this is in the PSModulePath in 6.0.0-beta.1:

    $env:psmodulepath
    C:\Users\jaiello.REDMOND\Documents\PowerShell\Modules;C:\Program Files\PowerShell\Modules;c:\program files\powershell\6.0.0-beta.1\Modules
    

    Ryan Yates (@kilasuit) could you elaborate? I don't fully understand the scenario you're describing.

  12. kilasuit commented on Jun 2, 2017

    @kilasuit
    CollaboratorAuthor

    Joey Aiello (@joeyaiello) - It just shows a level of inconsistency & it could easily cause confusion to those not that overly familiar. It also allows in future for the potential for all modules bundled with the engine to be unbundled as per #1979

    Also as versioned modules support was brought in v5 it really doesn't make sense for there to be this inconsistency in a v6 product especially as you are moving to a more decoupled nature the further that the development goes on and on.

  13. kilasuit commented on Jun 14, 2018

    @kilasuit
    CollaboratorAuthor

    This is still relevant in 6.1.0-preview.3 as seen below for a number of the packaged modules like

    CimCmdlets, 
    Microsoft.PowerShell.Diagnostics, 
    Microsoft.PowerShell.Host, 
    Microsoft.PowerShell.Management, 
    Microsoft.PowerShell.Security, 
    Microsoft.PowerShell.Utility, 
    Microsoft.WSMan.Management, 
    PSDesiredStateConfiguration,
    PSDiagnostics
    

    This is how it looks in the directory

    C:\Program Files\PowerShell\6-preview\Modules\CimCmdlets
    C:\Program Files\PowerShell\6-preview\Modules\CimCmdlets\CimCmdlets.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive\1.1.0.0
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive\1.1.0.0\en-US
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive\1.1.0.0\Microsoft.PowerShell.Archive.cat
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive\1.1.0.0\Microsoft.PowerShell.Archive.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Archive\1.1.0.0\Microsoft.PowerShell.Archive.psm1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Diagnostics
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Diagnostics\Diagnostics.format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Diagnostics\Event.format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Diagnostics\GetEvent.types.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Diagnostics\Microsoft.PowerShell.Diagnostics.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Host
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Host\Microsoft.PowerShell.Host.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Management
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Management\Microsoft.PowerShell.Management.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Security
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Security\Microsoft.PowerShell.Security.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Utility
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psm1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.WSMan.Management
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.WSMan.Management\Microsoft.WSMan.Management.psd1
    C:\Program Files\PowerShell\6-preview\Modules\Microsoft.WSMan.Management\WSMan.format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\coreclr
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\DSCResources
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\fullclr
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageManagement.cat
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageManagement.format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageManagement.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageManagement.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageManagement.Resources.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PackageManagement\1.1.7.0\PackageProviderFunctions.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\en-US
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\PowerShellGet.cat
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\PowerShellGet.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\PSGet.Format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\PSGet.Resource.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PowerShellGet\1.6.0\PSModule.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PSDesiredStateConfiguration
    C:\Program Files\PowerShell\6-preview\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PSDiagnostics
    C:\Program Files\PowerShell\6-preview\Modules\PSDiagnostics\PSDiagnostics.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PSDiagnostics\PSDiagnostics.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\Changes.txt
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\en-US
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\License.txt
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\Microsoft.PowerShell.PSReadLine2.dll
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\PSReadLine.format.ps1xml
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\PSReadLine.psd1
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\PSReadLine.psm1
    C:\Program Files\PowerShell\6-preview\Modules\PSReadLine\2.0.0\SamplePSReadLineProfile.ps1
    

    each of these modules should be in their version specific folder for neatness

  14. SteveL-MSFT commented on Jun 15, 2018

    @SteveL-MSFT
    Member

    Until the module is decoupled from PSCore itself, there's no value to have it in a versioned folder since it's not updatable outside of updating PSCore itself. The ones that have versioned folders are those obtained from PSGallery.

  15. iSazonov commented on Aug 29, 2018

    @iSazonov
    Collaborator

    Currently we removed all external modules from the repo and as Steve Lee (@SteveL-MSFT) said all standard modules is installed without version folder to support servicing by WU.
    So I close the Issue.

  16. o-l-a-v commented on Jun 23, 2026

    @o-l-a-v

    This should not be closed. Making WU able to update modules might be implemented, but it partially broke import.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions