Introducing PackageManagement in Windows 10

In Windows 10 we are launching a new PackageManagement feature (formerly referred to as OneGet) that enables ITPros or DevOps to automate software discovery, installation, and inventory (SDII), locally or remotely, no matter what the installer technology is and where the software is located. 

So why are we implementing PackageManagement? In the Linux world, people are familiar with package managers such as Apt-Get, YUM, RPM, etc, for different Linux distros.  In the Windows world, however, there are quite a few installer technologies, each having their own way to install software, such as MSI, MSU, APPX, and the list goes on and on. This creates a challenge for ITPros and DevOps and a need for a tool to automate the software deployment experience.  PackageManagement is aimed at solving this problem.  Let’s first have a glance at the architecture.



PackageManagement is essentially a Package Management Aggregator.  It creates a unified and consistent PowerShell interface for users and provides a plug-in model at the back end that different installer technologies or package managers can plug-in as providers, using PackageManagement APIs.  Each provider further manages one or multiple package sources (repositories) where software packages are stored.

Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, which we call Package Sources, and query a system for the software installed.


 What’s in the box?

In the box, we will have

  • PackageManagement Core component,

  • a PowerShell module to provide cmdlets, and

  • a key set of providers. 

That’s it, all other providers can be installed on the fly.  This allows for a small footprint while not losing agility to dynamically bootstrap package providers and install packages from those providers.

The key set of providers coming in the box are:

  • a Bootstrap provider (the provider that knows where to get more providers from)
  • an MSI provider for handling MSI files
  • an MSU provider for handling Microsoft update files
  • an Programs provider (Add/Remove programs) for providing inventory data of anything that registered itself with Add/Remove programs
  • PowerShellGet — for accessing PowerShell modules.


Quick Start

Let’s explore what PackageManagement can offer you. A handy Get-Command is a good start.

You can see that we provide three levels of management, i.e. provider, package source, and package. The cmdlets are pretty much self-explained. We are particularly interested at the Package level operations, so let’s explore further on the SDII operations.

Discover Packages

This will look at all package sources for the provider PSModule and return all the versions matching the package name.

Install Packages

Once you find the package, you can simply specify the version without specifying a package source and PackageManagement will install that version of package from the correct package source.


You can specify the –provider parameter at Cmdlet get-package to check what’s installed in the local machine. There is a special provider Programs included. With –IncludeWindowsInstaller option, it returns a superset of packages comparing to the Add-and-Remove Program, which only lists those ‘volunteering’ registered MSI packages.


Where to get it for down-level platforms

Besides Win10, PackageManagement is available for down level platforms in a few ways:

  • It is included in the Windows Management Frameworks 5.0 (WMF 5.0) Preview that supports back to Windows 7 and Windows Server 2008 R2. WMF 5.0 also contains PowerShell 5.0, DSC, and other components. 

  • For users who only want PackageManagement, we will soon release a stable version of just PackageManagement and PowerShellGet provider as a MSI package, and plan to refresh it frequently.

PackageManagement is also an open source project at You can check out the latest news and code from there.

Comments (33)

  1. Anonymous says:

    Why so long and unfriendly for non-english speakers name? What was wrong with OneGet?

  2. Has the download been pulled?

  3. WayneB says:

    Is there any way to use this without PowerShell? I typically avoid PowerShell because it never "just works" – there is always some configuration to do in order to be able to do normal things like executing scripts (e.g. Set-ExecutionPolicy).

  4. Garry Trinder says:

    How is Microsoft addressing security or lack there of in these aggregated package repositories? Will there be any vetting, secure download, package signing, or revocation requirements placed on repository owners? I’d like to see a high bar for trusted
    repositories, perhaps with an associated logo process.

  5. Josh says:

    Count on MS to not do it right.

    And with Linux, Docker, and Mezos, things are getting very interesting on the Big Data side of stuff. MS tech is just tiring to work against, having little of the ‘cool toys’. They only reason they are relevant on the business side is because of Office, Exchange,
    and Sharepoint. And even that is just… boring.

    — Linux user/dev for last 14 years, O365 / Shibboleth integrator

  6. WayneB says:

    Nevermind, I just have no idea what I’m doing with Powershell.

    /hurp derp

  7. Josh says:


    PowerShell was a badly implemented afterthought that Microsoft bolted on a GUI. No wonder it’s for the dogs.

    And frankly, what do you expect? Even if you’re a professional, crummy tools make for bad results.

  8. Bryan says:

    @Ted : It will likely work like Chocolatey or the *nix repos; mods have full control and monitoring of the repos. What happens in the Enterprise is a local repo that gets copies from other repos, as per your software admin(s).

    @WayneB : If the ExecutionPolicy is your only problem, set it via GPO. Or double up with psexec to set the policy then run the script, and reset the policy back if you’re worried about security.

  9. ryan says:

    I’m sorry but wtf are "DevOps" and "ITPros"?

    I think you are referring to computer professionals that administer computers running windows. But seriously, those are not real words. Does this mean only certain network administrators will bea ble to install software but not home users or something?

    Also, the fact that your normal windows shell can’t do much of anything (including this package management system apparantly) and users have to run powershell with all it’s own weird syntax/rules/permissions from everything before it is really really annoying.

    I’d also be interested to hear about how repos are vetted and security is insured in this system. The post is very light on details in that area.

  10. Omatsei says:

    @Josh, you must be talking about Powershell v1.0. Try anything after that, as it’s MUCH better. Version 2 was when it became a fully-fledged shell, just as useful as bash (this is coming from a 15-year linux admin).

  11. Chad says:

    This is being built because microsoft has realized through it’s own operation of large numbers of machines (Azure) that the software deployment ability on windows (servers and vdi presentations of workstation OS’s) is severely limited and impossible to
    run at scale at prices that compete with AWS. Meaning, they now realize why people run clouds and large distributed systems infrastructures on Linux…..and will now proceed to port these linux features back into MS OS’s. This is a good thing. Right up there
    with Blackberry realizing they own the high ground in MDM and need to get IOS support in there (BES 12) and stop trying to compete with the cool kids on fashion products….and take their money to port the features they don’t understand back into their pretty
    toys so that workers can use them.
    "devops" are developers that don’t have to ask "IT pros" for anything infrastructure-wise because they use Azure.
    "IT PROS" are guys that are running their own clouds, based on linux, that whine about not wanting to support windows because it doesn’t do…..package management.
    Now, everyone = happy.
    Good times.
    Except…we (IT PROS) will now end up with applications to run written by developers that understand even less (if that’s possible) about infrastructure.

  12. AnnoyedAdmin says:

    What is wrong with you people commenting? It’s 2015 and you’re acting as if Powershell is new or hard. There has been a decade of integration. PS is here to stay and its quite fantastic (still annoyed at reserved operators but I understand why I cant have
    < > etc ).

  13. VinnieNZ says:

    Is there an ‘update’ or ‘upgrade’ part yet for upgrading installed packages?

  14. matt crupi says:

    are there any plans to get w10 package manager to handle dependencies, like apt and yum?

  15. Joel says:

    I like it. A no-nonsense name and an in-the-box rollout. Now make Windows Update a front end for this and create a mechanism for trusted packages to add repositories, and you create at least the potential to move up from the current landscape of an updater
    for every installed app.

  16. Christopher Warner says:

    WMF 5.0 installs don’t seem to be working for 2008

  17. Chris says:

    LOL at all the *seriously* ignorant comments here. Astounding actually.

  18. ExcitedButConfused says:

    I just installed Build 10074. I added the Chocolatey provider and I can find packages, but I can’t actually install anything. For example:

    PS C:Windowssystem32> find-package stylecop

    Name Version Source Summary
    —- ——- —— ——-
    stylecop 4.7 chocolatey StyleCop

    However, trying to do install-package stylecop returns almost instantly with no errors. However, looking in Add/Remove Programs, StyleCop is not there. What gives?

  19. Andrea Maruccia says:

    sweet 🙂

  20. Robert says:

    Hi ExitedButConfused. I ran this from an admin shell:
    Find-Package google-chrome-x64 | Install-Package -Verbose -Force

    And that worked out just fine! Hope it works for you

  21. Bill gay says:

    Microsoft is just ****** disgusting disaster. Microsoft always use dirty tricks which is not illegal to keep its monopolistic status. Microsoft earns a lot of money from patent fee. It means Microsoft wants to get respected about ideas of their products.
    But Microsoft never respected the software ecosystem and other softwares at all. Please don’t act like a snobbery

  22. anonymouscommenter says:

    Apt-Get for Windows – OneGet and Chocolatey on Windows 10

  23. preguntoncojonero says:

    And now 2015, what’s new ? I’m very newbie-silly, I’m confused about all that. Not DEFINITIVE GUIDE about it, IMHO.

    NuGet, MyGet, Chocolatey, OneGet… what?! People ask questions and occasionally can’t see the forest for the trees. Here’s a quick recap:

    NuGet: a solution-level package management tool, used to manage software dependencies within the scope of a solution. It is accompanied by the NuGet Gallery, the home of many if not all .NET open source components.

    Chocolatey: a system-level package management tool, used to manage software installations on a Windows system. It (currently) leverages PowerShell and NuGet, supports the Web Platform Installer (WebPI), MSI, RubyGems and many more, and is accompanied by the
    Chocolatey Gallery where you can find many popular software packages. Rob describes Chocolatey as somewhat like “apt-get”, but with Windows in mind.

    MyGet: a hosted NuGet package server where you can create and secure your own feeds. In essence, MyGet is able to host vanilla NuGet feeds, as well as Chocolatey feeds.

    OneGet: a a unified interface to package management systems (see above)

    And more, and more:

    PSGet and PSReadLine

  24. thomas says:

    Does this actually work on Windows 10 yet? It just seems to download the package files but only downloads them to c:Chocolatey directory.

    Does this happen for everyone or just me??

  25. thomas says:

    Let me be more precise…I typed: install-package vlc

    returns with:
    The packages come from a package source that is not marked as trusted.
    Are you sure you want to install softwae from ‘chocolatey’? I select yes and then
    it pauses for about 3 seconds and then returns…

    Name version source summary
    ——— ———- ——— ————-
    vlc chocolatey VLC Media Player

    But doesn’t actually install it. It downloads it to c:/Chocolatey/lib/vlc.

    There’s a directory ‘tools’ and a file named vlc.
    Inside ‘tools’ is ‘chocolateyInstall.ps1’

    I don’t think it’s downloading the actual program or installing it. Is that happening for everyone or just me?

  26. thomas says:

    Nevermind…I got it to work…first you have to enable scripts bypass with: Set-ExecutionPolicy Bypass

    Then it installed everything fine.

  27. Spam says:


  28. anonymouscommenter says:

    Introduce Windows Server Apps (WSAs), based on APPX, to package and install an application on Nano Server.

  29. anonymouscommenter says:

    Hands on Packaging and Installing WSAs to Nano Server.

  30. PackageManagement is not installed on Windows 10 says:

    On my two Windows 10 environments I find that C:Program FilesPackageManagement contains just one empty folder: ProviderAssemblies. And I’m out of luck installing it today due to this error message from PowerShell:

    NuGet-anycpu.exe is required to continue.
    PowerShellGet requires NuGet-anycpu.exe to interact with NuGet based galleries. NuGet-anycpu.exe must be available in ‘C:Program
    FilesPackageManagementProviderAssemblies’ or ‘C:Usersdavid-nobleAppDataLocalPackageManagementProviderAssemblies’. For more
    information about NuGet provider, see Do you want PowerShellGet to download NuGet-anycpu.exe now?
    [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
    WARNING: Unable to download the list of available providers. Check your internet connection.
    WARNING: Unable to find package provider ‘NuGet’.
    Install-NuGetClientBinaries : NuGet-anycpu.exe is required to interact with NuGet based galleries. Please ensure that NuGet-anycpu.exe is
    available under ‘C:Program FilesPackageManagementProviderAssemblies’ or
    At C:Program FilesWindowsPowerShellModulesPowerShellGetPSGet.psm1:946 char:9
    + Install-NuGetClientBinaries
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (:) [Install-NuGetClientBinaries], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetBinaries,Install-NuGetClientBinaries

    WARNING: Unable to download the list of available providers. Check your internet connection.
    WARNING: Unable to find module provider ‘NuGet’.
    WARNING: The specified PackageManagement provider ‘NuGet’ is not available.
    PackageManagementInstall-Package : No match was found for the specified search criteria and module name ‘NTFSSecurity’.
    At C:Program FilesWindowsPowerShellModulesPowerShellGetPSGet.psm1:993 char:21
    + … $null = PackageManagementInstall-Package @PSBoundParameters
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (Microsoft.Power….InstallPackage:InstallPackage) [Install-Package], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

    Others on the internet report similar problems, but there’s no solution for me today. Let me know when OneGet can actually get anything by default on Windows 10.

  31. Also Repro-ing no PackageManagement on Windows 10 says:

    PS C:UsersJosh> Import-Module PackageManagement
    Import-Module : The specified module ‘PackageManagement’ was not loaded because no valid module file was found in any
    module directory.

    Was this removed after RTM?