{"id":18309,"date":"2020-03-30T12:48:26","date_gmt":"2020-03-30T20:48:26","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powershell\/?p=18309"},"modified":"2022-04-21T12:06:53","modified_gmt":"2022-04-21T20:06:53","slug":"powershellget-3-0-preview-1","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/powershellget-3-0-preview-1\/","title":{"rendered":"PowerShellGet 3.0 Preview 1"},"content":{"rendered":"<div class=\"markdown-body\">\n<p>We are excited to announce that our first <a href=\"https:\/\/www.powershellgallery.com\/packages\/PowerShellGet\/3.0.0-beta1\">preview release of PowerShellGet 3.0<\/a> is now available on the PowerShell Gallery. This is a major update to PowerShell&#8217;s experience for discovering, installing, updating and publishing PowerShell resources like modules, DSC resources, role capabilities and scripts. This was first proposed in <a href=\"https:\/\/github.com\/PowerShell\/PowerShell-RFC\/pull\/185\">RFC PR #185<\/a> and superseded by <a href=\"https:\/\/github.com\/PowerShell\/PowerShell-RFC\/pull\/237\/files?short_path=6610627#diff-661062766ee198277a334922a903752e\">RFC PR #237<\/a>. Thanks for all the community feedback! For a detailed view of the update to PowerShellGet please refer to the <a href=\"https:\/\/github.com\/PowerShell\/PowerShell-RFC\/pull\/237\/files?short_path=6610627#diff-661062766ee198277a334922a903752e\">RFC<\/a>.<\/p>\n<p>This early preview release of the module is not feature complete and has breaking changes intended to improve the user experience. For this reason, the preview release will work side-by-side with your existing PowerShellGet v2 module.<\/p>\n<p>The purpose of this release to begin gathering the critical user feedback to improve the module through subsequent preview releases before we finalize the design for General Availability later this year.<\/p>\n<h2>How to Install PowerShellGet 3.0 Preview 1<\/h2>\n<h3>Prerequisites<\/h3>\n<p>Please ensure that you have the latest (non-prerelease) version of PowerShellGet and PackageManagement installed.\nTo check the version you currently have installed run the command:\n<code>Get-InstalledModule PowerShellGet, PackageManagement<\/code><\/p>\n<p>The latest version of PowerShellGet is 2.2.3, and the latest version of PackageManagement is 1.4.6.<\/p>\n<p>To install the latest versions of these modules run the following at the start of a fresh PowerShell session:<\/p>\n<p><code>Install-Module PowerShellGet -Force -AllowClobber<\/code><\/p>\n<h2>Installing the Preview side by side<\/h2>\n<p>To install this preview release side-by-side with your existing PowerShellGet version,\nopen any PowerShell console and run:<\/p>\n<p><code>Install-Module PowerShellGet -Force -AllowPrerelease<\/code><\/p>\n<p>To register the PSGallery run the command:<\/p>\n<pre class=\"lang:ps decode:true \">Register-PSResourceRepository -PSGallery<\/pre>\n<p>If you run the command <code>Get-Command -Module PowerShellGet<\/code> you will get a good picture of the\nside-by-side cmdlet interfaces.<\/p>\n<div class=\"highlight highlight-source-powershell\">\n<pre class=\"\">CommandType     Name                                               Version    Source\r\n-----------   ----                                              -------     ------\r\nFunction        Find-Command                                       2.2.3      PowerShel.\r\nFunction        Find-DscResource                                   2.2.3      PowerShel.\r\nFunction        Find-Module                                        2.2.3      PowerShel.\r\nFunction        Find-RoleCapability                                2.2.3      PowerShel.\r\nFunction        Find-Script                                        2.2.3      PowerShel.\r\nFunction        Get-InstalledModule                                2.2.3      PowerShel.\r\nFunction        Get-InstalledScript                                2.2.3      PowerShel.\r\nFunction        Get-PSRepository                                   2.2.3      PowerShel.\r\nFunction        Install-Module                                     2.2.3      PowerShel.\r\nFunction        Install-Script                                     2.2.3      PowerShel.\r\nFunction        New-ScriptFileInfo                                 2.2.3      PowerShel.\r\nFunction        Publish-Module                                     2.2.3      PowerShel.\r\nFunction        Publish-Script                                     2.2.3      PowerShel.\r\nFunction        Register-PSRepository                              2.2.3      PowerShel.\r\nFunction        Save-Module                                        2.2.3      PowerShel.\r\nFunction        Save-Script                                        2.2.3      PowerShel.\r\nFunction        Set-PSRepository                                   2.2.3      PowerShel.\r\nFunction        Test-ScriptFileInfo                                2.2.3      PowerShel.\r\nFunction        Uninstall-Module                                   2.2.3      PowerShel.\r\nFunction        Uninstall-Script                                   2.2.3      PowerShel.\r\nFunction        Unregister-PSRepository                            2.2.3      PowerShel.\r\nFunction        Update-Module                                      2.2.3      PowerShel.\r\nFunction        Update-ModuleManifest                              2.2.3      PowerShel.\r\nFunction        Update-Script                                      2.2.3      PowerShel.\r\nFunction        Update-ScriptFileInfo                              2.2.3      PowerShel.\r\nCmdlet          Find-PSResource                                    3.0.0      PowerShel.\r\nCmdlet          Get-PSResource                                     3.0.0      PowerShel.\r\nCmdlet          Get-PSResourceRepository                           3.0.0      PowerShel.\r\nCmdlet          Install-PSResource                                 3.0.0      PowerShel.\r\nCmdlet          Register-PSResourceRepository                      3.0.0      PowerShel.\r\nCmdlet          Set-PSResourceRepository                           3.0.0      PowerShel.\r\nCmdlet          Uninstall-PSResource                               3.0.0      PowerShel.\r\nCmdlet          Unregister-PSResourceRepository                    3.0.0      PowerShel.<\/pre>\n<\/div>\n<h2>High-Level Goals of PowerShellGet 3.0<\/h2>\n<p>PowerShellGet 3.0 is a complete re-write of PowerShellGet with the following goals:<\/p>\n<ul>\n<li><em>Improve maintainability of the codebase<\/em>: This goal is addressed by removing the provider model that PowerShellGet was originally built on. This means that PowerShellGet 3.0 does not take a dependency on OneGet, NuGet or any other package provider. Further, this version is written in C# instead of PowerShell script which has allowed us to simplify the code base. By using the lessons learned from previous versions of the module we hope that a cleaner implementation and interface will allow us to more quickly address bugs as they arise and iterate on our vNext issues more efficiently.<\/li>\n<li><em>Address top customer issues<\/em>. Many of the top customer issues in previous versions of the module have been challenging to resolve because of architecture decisions made early on in the development of PowerShellGet. Below we enumerate many of these issues we hope to resolve, to view a full enumeration of these issues view <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\/issues?q=is%3Aissue+is%3Aopen\">this GitHub query<\/a>.<\/li>\n<\/ul>\n<h2>Features of this Release<\/h2>\n<ul>\n<li>A new set of cmdlets which abstract all PSResource types (Module, Script, DSCResource, RoleCapability, Command) to a single set of cmdlets which use the noun &#8220;PSResource&#8221;. Many of these cmdlets use a <code>-Type<\/code> parameter for the user to specify the PSResource type if they would like.<\/li>\n<\/ul>\n<div class=\"highlight highlight-source-powershell\">\n<pre class=\"lang:ps decode:true\">Find-PSResource\r\nGet-PSResource \r\nGet-PSResourceRepository \r\nInstall-PSResource \r\nRegister-PSResourceRepository \r\nSet-PSResourceRepository \r\nUninstall-PSResource \r\nUnregister-PSResourceRepository \r\nUpdate-PSResource \r\nSYNTAX \r\nFind-PSResource [[-Name] &lt;string[]&gt;] [-Type {Module | Script | DscResource | RoleCapability | Command}] [-Version &lt;string&gt;] [-Prerelease] [-ModuleName &lt;string&gt;] [-Tags &lt;string[]&gt;] [-Repository &lt;string[]&gt;] [-Credential &lt;pscredential&gt;] [-IncludeDependencies] [-WhatIf] [-Confirm] [&lt;CommonParameters&gt;] EXAMPLE Find-PSResource -Name PowerShellGet -Type Module -Prerelease<\/pre>\n<\/div>\n<ul>\n<li>For the cmdlets <code>Register-PSRepository<\/code> and <code>Set-PSRepository<\/code> a <code>-Priority<\/code> parameter allows setting the search order of repositories with a lower value indicating a higher priority. If not specified, the default value is 50. The PSGallery, which is registered by default, has an editable value of 50. If two PSRepositories have the same priority the &#8220;Trusted&#8221; one will be chosen, if they also have the same level of trust the first one alphabetically will be selected.<\/li>\n<\/ul>\n<ul>\n<li>For <code>Find-PSResource<\/code> the <code>-Repository<\/code> parameter supports wildcard search. If no repository is specified, the cmdlet will return the latest version found from the repository with the highest priority.<\/li>\n<\/ul>\n<div class=\"highlight highlight-source-powershell\">Find-PSResource Az.Sql -Repository *Name Version Repository Description\n&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8211;\nAz.Sql 2.5.0 PSGallery Microsoft Azure PowerShell &#8211; SQL service cmdlets for Azure Resource&#8230;\nAz.Sql 2.5.0 PoshTestGallery Microsoft Azure PowerShell &#8211; SQL service cmdlets <span class=\"pl-k\">for<\/span> Azure Resource&#8230;Find-PSResource Az.SqlName Version Repository Description\n&#8212;- &#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8211;\nAz.Sql 2.5.0 PSGallery Microsoft Azure PowerShell &#8211; SQL service cmdlets for Azure Resource&#8230;<\/div>\n<ul>\n<li>For <code>Find-PSResource<\/code> and <code>Install-PSResource<\/code> the -Version parameter will accept strings (with wildcard support) based on the <a href=\"https:\/\/docs.microsoft.com\/en-us\/nuget\/reference\/package-versioning#version-ranges-and-wildcards\" rel=\"nofollow\">Nuget version range syntax<\/a><\/li>\n<\/ul>\n<div class=\"highlight highlight-source-powershell\">\n<pre class=\"\">Find-PSResource Microsoft.PowerShell.GraphicalTools -Version *\r\n\r\nName                                Version Repository Description\r\n----                                ------- ---------- -----------\r\nMicrosoft.PowerShell.GraphicalTools 0.2.0   PSGallery  Cross-platform GUI Tools for Pow.\r\nMicrosoft.PowerShell.GraphicalTools 0.1.0   PSGallery  Cross-platform GUI Tools for Pow.\r\n\r\nFind-PSResource Microsoft.PowerShell.GraphicalTools -Version \"(0.0,1.0)\"\r\n\r\nName                                Version Repository Description\r\n----                                ------- ---------- -----------\r\nMicrosoft.PowerShell.GraphicalTools 0.2.0   PSGallery  Cross-platform GUI Tools for Pow.\r\n\r\nFind-PSResource Microsoft.PowerShell.GraphicalTools -Version \"0.1.1\"\r\n\r\nName                                Version Repository Description\r\n----                                ------- ---------- -----------\r\nMicrosoft.PowerShell.GraphicalTools 0.1.0   PSGallery  Cross-platform GUI Tools for Pow.<\/pre>\n<\/div>\n<ul>\n<li><code>Install-PSResource<\/code> has a<code>-DestinationPath<\/code> parameter which allows the user to specify the target directory instead of the default one. Note that in this release &#8220;x86&#8221; paths, and Linux paths are not yet supported. Expect to see this support in future releases.<\/li>\n<li><code>Update-PSResource<\/code> has an <code>-UpdateTo<\/code> parameter with values <code>MinorVersion<\/code> (the default), <code>MajorVersion<\/code> and, <code>PatchVersion<\/code>.<\/li>\n<\/ul>\n<ul>\n<li>There is support for NuGet v2 and v3 endpoints for PSRepositories.<\/li>\n<\/ul>\n<p>If any of the features on this list are not behaving how you would expect them to, or would prefer them to be sure to open an issue in our <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\">GitHub repository<\/a>.<\/p>\n<h3>Table of Implemented Parameters in this Release<\/h3>\n<table class=\" aligncenter\" style=\"width: 97.1493%;\" width=\"97.1493%\">\n<tbody>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Cmdlet<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">Implemented parameters<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">Not implemented<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Install-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Version<\/p>\n<p>-Prerelease<\/p>\n<p>-Repository<\/p>\n<p>-Credential<\/p>\n<p>-Scope<\/p>\n<p>-Reinstall<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-InputObject<\/p>\n<p>-DestinationPath [partially implemented]<\/p>\n<p>-NoClobber<\/p>\n<p>-IgnoreDifferentPublisher<\/p>\n<p>-TrustRepository<\/p>\n<p>-Force [there hasn&#8217;t been a need for force yet since the things you would force aren&#8217;t implemented]<\/p>\n<p>-Quiet<\/p>\n<p>-AcceptLicense<\/p>\n<p>-PassThru<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Update-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Version<\/p>\n<p>-Prerelease<\/p>\n<p>-Credential<\/p>\n<p>-Repository [Update should be discovering the repository from the xml metadata instead of from user input, this will be fixed in future releases]<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-InputObject<\/p>\n<p>-UpdateTo<\/p>\n<p>-Force<\/p>\n<p>-Quiet<\/p>\n<p>-AcceptLicense<\/p>\n<p>-PassThru<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Find-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Type<\/p>\n<p>-Version<\/p>\n<p>&#8211; Prerelease<\/p>\n<p>-ModuleName<\/p>\n<p>-Tags<\/p>\n<p>-Repository<\/p>\n<p>-Credential<\/p>\n<p>-IncludeDependencies<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">[Nothing]<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Uninstall-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Version<\/p>\n<p>-PrereleaseOnly<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">[Nothing]<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Save-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Version<\/p>\n<p>-Prerelease<\/p>\n<p>-Repository<\/p>\n<p>-Credential<\/p>\n<p>-AsNupkg<\/p>\n<p>-Path<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-AcceptLicense<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Get-PSResource<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-Version<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-Prerelease<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Register-PSResourceRepository<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-URL<\/p>\n<p>-PSGallery<\/p>\n<p>-Credential [credential persistence has not been implemented yet so this parameter is not currently being passed to anything]<\/p>\n<p>-Trusted<\/p>\n<p>-Priority<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-Repositories<\/p>\n<p>-Proxy[for any proxies other than the default proxy]<\/p>\n<p>-ProxyCredential[see above regarding -Proxy]<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Unregister-PSResourceRepository<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">[Nothing]<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 22.1947%;\" width=\"164\">Get-PSResourceRepository<\/td>\n<td style=\"width: 43.0227%;\" width=\"208\">-Name<\/p>\n<p>-URL<\/p>\n<p>-Credential<\/p>\n<p>-Trusted<\/p>\n<p>-Priority<\/td>\n<td style=\"width: 69.9521%;\" width=\"338\">-Repositories<\/p>\n<p>-Proxy [for any proxies other than the default proxy]<\/p>\n<p>-ProxyCredential [see above regarding -Proxy]<\/p>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>What&#8217;s Coming Next<\/h2>\n<h3>Features to Expect in Coming Preview Releases<\/h3>\n<p>This module is not feature complete, meaning many issues\/bugs in this release may just be features we have not finished implementing.\nBelow is a list of features that we are still in the process of implementing which you can expect to see in future preview releases.<\/p>\n<ul>\n<li>Publish functionality (in the meantime the publish functionality of PowerShellGet2.x works nicely side-by-side)<\/li>\n<li>Error handling, warnings, <code>-Verbose<\/code>, and <code>-Debug<\/code> parameters (for the full list of missing parameter see the table above).<\/li>\n<li>Local cache&#8211;this important feature significantly improves the performance of Find\/Install operations. Look forward to it in future releases.<\/li>\n<li>Dependency management. In future releases, <code>Install-PSResource<\/code> will accept a path to a psd1 or json file (using <code>-RequiredResourceFile<\/code>), or a hash table or json (using <code>-RequiredResource<\/code>) where the key is the module name and the value is either the required version specified using Nuget version range syntax or a hash table where <code>repository<\/code> is set to the URL of the repository and<code>version<\/code> contains the <a href=\"https:\/\/docs.microsoft.com\/en-us\/nuget\/reference\/package-versioning#version-ranges-and-wildcards\" rel=\"nofollow\">Nuget version range syntax<\/a>.<\/li>\n<\/ul>\n<div class=\"highlight highlight-source-powershell\">\n<pre class=\"wrap:false lang:ps decode:true \">Install-PSResource -RequiredResource @{ \"Configuration\" = \"[1.3.1,2.0)\" \"Pester\" = @{ version = \"[4.4.2,4.7.0]\" repository = \"https:\/\/www.powershellgallery.com\" credential = $cred allowPrerelease = $true } }<\/pre>\n<p>&nbsp;<\/p>\n<\/div>\n<p>In this case the modules named &#8220;Configuration&#8221;, and &#8220;Pester&#8221; will be installed.\nThe JSON format will be the same as if this hashtable is passed to <code>ConvertTo-Json<\/code>:<\/p>\n<div class=\"highlight highlight-source-json\">\n<pre class=\"lang:ps decode:true\">{ \"Configuration\": \"[1.3.1,2.0)\", \"Pester\": { \"version\": \"[4.4.2,4.7.0]\", \"credential\": null, \"repository\": \"https:\/\/www.powershellgallery.com\", \"allowPrerelease\": true } }<\/pre>\n<\/div>\n<ul>\n<li>We will introduce a <code>New-RequiredResourceFile<\/code> cmdlet which will create a template file.\nIf the switch <code>-AsPSD1<\/code> is used it will create a psd1 file, otherwise it will default to JSON.<\/li>\n<li><code>Save-PSResource -Type Library<\/code> will download nupkgs that have a <code>lib<\/code> folder. The dependent native library in <code>runtimes<\/code> matching the current system runtime will be copied to the root of the destination specified. A <code>-IncludeAllRuntimes<\/code> can be used to explicitly retain the <code>runtimes<\/code> directory hierarchy within the nupkg to the root of the destination.<\/li>\n<li>Native credential management\/credential persistence for registered PSRepositories<\/li>\n<\/ul>\n<h3>Improvements we are Considering Post-GA<\/h3>\n<p>One important goal of PowerShellGet 3.0 is to improve the supportability of the module. As a result, once this work is complete,we hope to iterate more quickly, and tackle other top customer issues. This list represents issues we are considering tackling but have not committed to yet.<\/p>\n<ul>\n<li>We will explore automatic updating of the cache in which on any operation that reaches out to a repository, a REST API will be called to see if the hash of the cache matches the current cache and if not, a new one is downloaded. This system may also take into consideration how recently the cache has been updated to avoid constant updates.<\/li>\n<li>We will explore an <code>Enable-PowerShellGetAlias<\/code> cmdlet that will allow users to use known cmdlets like Install-Module from the PowerShellGet 3.0 implementation.<\/li>\n<li>We will explore uninstalling orphaned dependencies automatically.<\/li>\n<\/ul>\n<p>To track the full list of issues we are considering we are using the label <code>vNext<\/code> <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\/issues?q=is%3Aopen+is%3Aissue+label%3AvNext\" target=\"_blank\" rel=\"noopener noreferrer\">in our GitHub Repositor<\/a>y.<\/p>\n<h2>How to Track the Development of this Module<\/h2>\n<p><a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\">GitHub<\/a> is the best place to track the bugs\/feature requests related to this module. We have used a combination of projects and labels on <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\">our GitHub repo<\/a> to track issues for this upcoming release. We are using the label <code>Resolved-3.0<\/code> to label issues that we plan to release at some point in before we release the module as GA (generally available). To track issues\/features to particular preview and GA releases we are using <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\/projects\">GitHub projects<\/a> which are titled to reflect the release.<\/p>\n<\/div>\n<p>Please note that<a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\"> PowerShell\/PowerShellGet<\/a> now represents the codebase for PowerShellGet 3.0. If you are looking for the source code, or issues related to previous versions of PowerShellGet, use <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGetv2\">PowerShell\/PowerShellGetV2<\/a>.<\/p>\n<div class=\"markdown-body\">\n<h2>Timeline\/Roadmap<\/h2>\n<p>Expect to see preview releases as new functionality is added\/changes are made at approximately a monthly cadence until the module is feature-complete. Through this process we will also be adapting the module based on user feedback. Once we feel we have reached a sufficient quality and completeness, we will release a &#8220;Release Candidate&#8221; version of the module. Assuming this release does not require any high impact changes, we will then release that version of the module as &#8220;Generally Available&#8221;. Since these milestones are quality, rather than date, driven we can not offer an exact timeline at this point, but hope to release the module later this year.<\/p>\n<h2>How to Give feedback and Get Support<\/h2>\n<p>We cannot overstate how critical user feedback is at this stage in the development of the module. Feedback from preview releases help inform design decisions without incurring a breaking change once generally available and used in production. In order to help us to make key decisions around the behavior of the module please give us feedback by opening issues in our <a href=\"https:\/\/github.com\/PowerShell\/PowerShellGet\/\">GitHub repository<\/a>.<\/p>\n<p>Sydney Smith\nPowerShell Team<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce that our first preview release of PowerShellGet 3.0 is now available on the PowerShell Gallery. This is a major update to PowerShell&#8217;s experience for discovering, installing, updating and publishing PowerShell resources like modules, DSC resources, role capabilities and scripts. This was first proposed in RFC PR #185 and superseded by [&hellip;]<\/p>\n","protected":false},"author":2299,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[274],"class_list":["post-18309","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-powershellget"],"acf":[],"blog_post_summary":"<p>We are excited to announce that our first preview release of PowerShellGet 3.0 is now available on the PowerShell Gallery. This is a major update to PowerShell&#8217;s experience for discovering, installing, updating and publishing PowerShell resources like modules, DSC resources, role capabilities and scripts. This was first proposed in RFC PR #185 and superseded by [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/18309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/2299"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=18309"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/18309\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=18309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=18309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=18309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}