{"id":20801,"date":"2025-04-14T05:40:29","date_gmt":"2025-04-14T13:40:29","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powershell\/?p=20801"},"modified":"2025-04-14T05:40:29","modified_gmt":"2025-04-14T13:40:29","slug":"powershell-openssh-and-dsc-team-investments-for-2025","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/powershell-openssh-and-dsc-team-investments-for-2025\/","title":{"rendered":"PowerShell, OpenSSH, and DSC team investments for 2025"},"content":{"rendered":"<h1>Team investments for 2025<\/h1>\n<p>First, apologies getting this out so late into the year.\nWe&#8217;ve been very busy and just found the time to write this update.<\/p>\n<h2>Security improvements<\/h2>\n<p>We continue to treat security as a top priority and as issues are discovered or reported,\nwe will continue to prioritize these issues over new feature development.<\/p>\n<h2>Bug fixes and community PRs<\/h2>\n<p>We continue to fix various reported issues, as well as prioritizing the review and merging of community pull requests.\nBased on community feedback, we&#8217;re now using a <a href=\"https:\/\/github.com\/orgs\/PowerShell\/projects\/44\">GitHub project<\/a> to provide transparency\non which issues and pull requests team members are focusing on.<\/p>\n<h2>PowerShell 7.6<\/h2>\n<p>PowerShell 7.6 will be our latest Long-Term Servicing (LTS) release.\nWe continue to align with the .NET 10 release cycle and support lifecycle.\nThere have already been 4 preview releases published.<\/p>\n<h3>Moving PowerShell content folder out of MyDocuments<\/h3>\n<p>This has been a long-standing request from the community due to automatic sync of MyDocuments folder and OneDrive.\nWhile some users want to leverage OneDrive for syncing across their systems,\nmany other users complain about the performance impact on PowerShell module discovery when modules are stored in the OneDrive folder.\nThere was a previous experimental feature <a href=\"https:\/\/github.com\/PowerShell\/PowerShell\/pull\/18152\">PSModuleAutoLoadSkipOfflineFiles<\/a> that is now mainstream in PowerShell 7.5.\nWith this change, PowerShell skips modules that are not marked being available locally.\nHowever, this also led to confusion for users who expected their modules to be available when they were not on disk.<\/p>\n<p>As any change here is a breaking change, we&#8217;ve spent a lot of time discussing the best way to approach this.\nWe are close to finishing a proposal that we will publish to the <a href=\"https:\/\/github.com\/powershell\/powershell-rfc\">PowerShell-RFC<\/a> repository for\ncommunity feedback when ready.\nWe will have experimental feature available within the 7.6 preview cycle for users to test and provide feedback on.<\/p>\n<p>Note that the PowerShell content folder does not just contain modules, but also the user&#8217;s PowerShell profile, scripts installed from PowerShell Gallery,\nand updated help files.<\/p>\n<h3>Enable native commands to integrate with PowerShell more easily<\/h3>\n<p>A common ask from several of our Microsoft partners who are building native commands (Azure CLI, Winget) is to more easily\nintegrate features such as Feedback Providers and Tab Completion where they don&#8217;t need to publish a separate module from their\napplication.<\/p>\n<p>We have already published a <a href=\"https:\/\/github.com\/PowerShell\/PowerShell-RFC\/pull\/386\">design proposal in our RFC repo<\/a> and would welcome\nany feedback from the community.\nOne of the key requirements is that an application&#8217;s install and uninstall should be clean and not leave behind any artifacts in PowerShell.<\/p>\n<h3>Update <code>PATH<\/code> environment variable for WinGet<\/h3>\n<p>Currently, if you use WinGet to install a package, it will not update the <code>PATH<\/code> environment variable.\nThis means that newly installed applications are not available in the current PowerShell session.\nThis feature will be similar to the one made in <code>cmd.exe<\/code> and only apply to a specific applications.<\/p>\n<h3>PowerShell 7 configuration as DSC v3 resource<\/h3>\n<p>As part of our work to enable managing popular developer applications&#8217; settings,\nwe are working on exposing <code>pwsh<\/code> as a DSC v3 resource.\nThis will allow users to manage the settings of PowerShell 7 in a declarative manner.<\/p>\n<h2>PowerShell Gallery<\/h2>\n<p>Significant behind-the-scenes work is happening to migrate the PowerShell Gallery from an Azure Cloud Services classic application\nto one hosted on Azure Kubernetes Service (AKS).\nThis is a difficult effort but, ideally, one that won&#8217;t affect user access or performance.<\/p>\n<h3>EntraID server-side support<\/h3>\n<p>Concurrently, we are working on support for EntraID authentication that\nallows users to use a managed identify to publish modules to the PowerShell Gallery instead of an API key.<\/p>\n<h2>PSResourceGet<\/h2>\n<h3>EntraID client-side support<\/h3>\n<p>Along with the changes necessary on the PowerShell Gallery side, corresponding changes are being made to PSResourceGet\nto support EntraID authentication.<\/p>\n<h3>Complete Micorosft Artifact Registry (MAR) support<\/h3>\n<p>We continue to progress towards General Availability for support of <a href=\"https:\/\/github.com\/microsoft\/containerregistry\">Microsoft Artifact Registry (MAR)<\/a> in PSResourceGet.\nThis allows users to have a default trusted repository for modules and scripts published by Microsoft.\nThis is built on top of the support we already added for <a href=\"https:\/\/azure.microsoft.com\/products\/container-registry\/\">Azure Container Registry (ACR)<\/a>\nOver time, we plan to generally support <a href=\"https:\/\/oras.land\/\">ORAS<\/a> as a standard for storing artifacts in container registries, which would enable\nsupport any container registry that supports the OCI distribution spec.<\/p>\n<h2>Windows OpenSSH<\/h2>\n<p>We continue to merge upstream OpenSSH changes into our Windows OpenSSH distribution with previews published to <a href=\"https:\/\/github.com\/PowerShell\/Win32-OpenSSH\/releases\">GitHub<\/a>\nand the final release updated into Windows.<\/p>\n<h3>DSC v3 resource<\/h3>\n<p>We continue to develop a DSC v3 resource for <code>SSHD_CONFIG<\/code> with expectations that previews will be available later this year.<\/p>\n<h2>Desired State Configuration v3 (DSC)<\/h2>\n<p>We already <a href=\"https:\/\/devblogs.microsoft.com\/powershell\/announcing-dsc-v3\/\">announced DSC 3.0 General Availablity<\/a> last month and already have\ntwo service updates available.<\/p>\n<p>DSC v3.0 is available in the <a href=\"https:\/\/apps.microsoft.com\/detail\/9nvtpzwrc6kq?hl=en-us&amp;gl=US\">Microsoft Store<\/a> or from our <a href=\"https:\/\/github.com\/PowerShell\/DSC\/releases\">GitHub repo<\/a>.\nThe macOS and Linux releases are curently only available from our GitHub repo.<\/p>\n<h3>DSC v3.1<\/h3>\n<p>In addition, we are making rapid progress on a <a href=\"https:\/\/github.com\/PowerShell\/DSC\/releases\/tag\/v3.1.0-preview.3\">DSC v3.1 release with multiple previews<\/a> already available.\nPreview releases are also available from the <a href=\"https:\/\/apps.microsoft.com\/detail\/9pcx3hx4hz0z?hl=en-us&amp;gl=US\">Microsoft Store<\/a> or our GitHub repo.<\/p>\n<p>You can see what features are <a href=\"https:\/\/github.com\/PowerShell\/DSC\/issues?q=is%3Aissue%20state%3Aopen%20milestone%3A3.1-Approved\">approved<\/a> or\nbeing <a href=\"https:\/\/github.com\/PowerShell\/DSC\/issues?q=is%3Aissue%20state%3Aopen%20milestone%3A3.1-Consider\">considered<\/a> for the 3.1 release.<\/p>\n<h2>AI Shell<\/h2>\n<p>Our <a href=\"https:\/\/github.com\/powershell\/aishell\">AI Shell<\/a> project continues to make progress towards integration of AI into the shell to\nboost productivity.<\/p>\n<p>Some further improvements being planned:<\/p>\n<ul>\n<li>Better macOS support<\/li>\n<li>Enhanced Azure PowerShell support<\/li>\n<li>Expansion of new Agents<\/li>\n<li>Better integration with PowerShell<\/li>\n<li>Support for <a href=\"https:\/\/modelcontextprotocol.io\/introduction\">Model Context Protocol (MCP)<\/a><\/li>\n<\/ul>\n<h2>Other tooling updates<\/h2>\n<p>We will continue to address reported issues and merge community pull requests for the following projects:<\/p>\n<ul>\n<li>PowerShell VSCode extension<\/li>\n<li>PowerShell Script Analyzer<\/li>\n<li>others as needed<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>Security is our top priority. We continue to improve the security of how we deliver software. Those improvements are not visible to the community, but they ensure that we are delivering secure software.\nWe will continue to work on the community&#8217;s top issues and pull requests across our many projects, when possible.\nWe are very thankful to our active community members!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Planned team investments for 2025 for PowerShell, OpenSSH, DSC, and related tooling.<\/p>\n","protected":false},"author":685,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[231,248],"class_list":["post-20801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-openssh","tag-powershell"],"acf":[],"blog_post_summary":"<p>Planned team investments for 2025 for PowerShell, OpenSSH, DSC, and related tooling.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/20801","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\/685"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=20801"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/20801\/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=20801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=20801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=20801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}