CINXE.COM

PowerShell Team

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" > <channel> <title>PowerShell Team</title> <atom:link href="https://devblogs.microsoft.com/powershell/feed/" rel="self" type="application/rss+xml" /> <link>https://devblogs.microsoft.com/powershell/</link> <description>Automating the world one-liner at a time…</description> <lastBuildDate>Wed, 12 Feb 2025 21:34:58 +0000</lastBuildDate> <language>en-US</language> <sy:updatePeriod> hourly </sy:updatePeriod> <sy:updateFrequency> 1 </sy:updateFrequency> <image> <url>https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/10/Microsoft-favicon-48x48.jpg</url> <title>PowerShell Team</title> <link>https://devblogs.microsoft.com/powershell/</link> <width>32</width> <height>32</height> </image> <item> <title>PowerShell 7.5 GA is now available</title> <link>https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/</link> <comments>https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/#comments</comments> <dc:creator><![CDATA[Jason Helmick]]></dc:creator> <pubDate>Wed, 12 Feb 2025 21:34:13 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20694</guid> <description><![CDATA[<p>We&#8217;re pleased to announce the release of PowerShell 7.5.0! For this release the focus has been on quality, security and stability of the platform. We greatly appreciate the enormous amount of community contributions in this release along with new cmdlets, experimental features and other quality of life additions. PowerShell 7.5 is built on top of [&#8230;]</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/">PowerShell 7.5 GA is now available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p>We&#8217;re pleased to announce the release of <a href="https://github.com/PowerShell/PowerShell/releases/tag/v7.5.0">PowerShell 7.5.0</a>! For this release the focus has been on quality, security and stability of the platform. We greatly appreciate the enormous amount of community contributions in this release along with new cmdlets, experimental features and other quality of life additions. PowerShell 7.5 is built on top of <a href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/">.NET 9</a> and will be supported for 18 months as a standard support release.</p> <p>Please note that support for PowerShell 7.2 is ended <a href="https://learn.microsoft.com/powershell/scripting/install/powershell-support-lifecycle#powershell-end-of-support-dates">November 8, 2024</a>. PowerShell 7.4 is the current LTS release of PowerShell and is supported until November 2026.</p> <h2>How do I get it?</h2> <p>PowerShell 7 is supported on Windows, Linux, and macOS. Consult the <a href="https://learn.microsoft.com/powershell/scripting/install/installing-powershell">documentation</a> for installation instructions and supported platforms.</p> <h2>What&#8217;s new in this release?</h2> <p>The PowerShell 7.5 milestone focused on security, quality and community contributions. A few highlights include:</p> <ul> <li>PSResourceGet now supports ACR as a container gallery, for more information check out the <a href="https://learn.microsoft.com/powershell/gallery/powershellget/how-to/use-acr-repository">documentation</a></li> <li>PSReadLine has been updated to version <a href="https://learn.microsoft.com/powershell/module/psreadline/about/about_psreadline_release_notes">2.3.6</a></li> <li>New cmdlets <code>ConvertTo-CliXml</code> and <code>ConvertFrom-CliXml</code> (Thanks @ArmaanMcleod!)</li> <li>Performance improvements to the += operation for an array of objects. (Thanks @jborean93!)</li> <li>Web cmdlet improvements as well as <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-75#web-cmdlets-improvements">improvements to other cmdlets</a> (Thanks @CarloToso, @ArmaanMcleod, @Snowman-25 and @LNKLEO!)</li> <li>Many Tab completion improvements (Thanks @MartinGC94 and @ArmaanMcleod!)</li> <li>Many engine improvements. (Thanks @JustinGrote, @jborean93! and @ArmaanMcleod!)</li> <li>New experimental features <code>PSDirectToVariable</code>, <code>PSNativeWindowsTildeExpansion</code>, and <code>PSSerializeJSONLongEnumAsNumber</code> (Thanks @jborean93 and @domsleee!)</li> <li>This release also contained a number of bug fixes &#8212; for the full list of changes please refer to the <a href="https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md">changelog</a></li> </ul> <p>For more information on what&#8217;s changed, see <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-75">What&#8217;s new in PowerShell 7.5</a>.</p> <h2>Experimental feature changes</h2> <p>The following experimental features were converted to mainstream features in PowerShell 7.5:</p> <ul> <li><code>PSCommandNotFoundSuggestion</code></li> <li><code>PSCommandWithArgs</code></li> <li><code>PSModuleAutoLoadSkipOfflineFiles</code></li> </ul> <p>PowerShell 7.5 also includes the following experimental features:</p> <ul> <li><code>PSRedirectToVariable</code></li> <li><code>PSNativeWindowsTildeExpansion</code></li> <li><code>PSSerializeJSONLongEnumAsNumber</code></li> </ul> <p>For more information, see <a href="https://learn.microsoft.com/powershell/scripting/learn/experimental-features">Using Experimental Features in PowerShell</a>.</p> <h2>What&#8217;s next?</h2> <p>We are also releasing previews of PowerShell 7.6, our next long term servicing (LTS) release. We appreciate all the efforts of the community, both individuals and <a href="https://github.com/PowerShell/PowerShell/blob/master/docs/community/working-group-definitions.md">working group members</a>. We look forward to your continued feedback and contributions!</p> <p>Jason</p> <p>PowerShell Team</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/">PowerShell 7.5 GA is now available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item> <title>Announcing the Public Preview of AI Shell</title> <link>https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/</link> <comments>https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/#comments</comments> <dc:creator><![CDATA[Steven Bucher]]></dc:creator> <pubDate>Tue, 19 Nov 2024 20:28:06 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[AI]]></category> <category><![CDATA[AI Shell]]></category> <category><![CDATA[Azure OpenAI]]></category> <category><![CDATA[Copilot in Azure]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20632</guid> <description><![CDATA[<p>We are pleased to announce the public preview of AI Shell.</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/">Announcing the Public Preview of AI Shell</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p><!-- markdownlint-disable MD041 --></p> <p>We&#8217;re thrilled to unveil the public preview of <strong>AI Shell</strong>! AI Shell enhances your shell with AI capabilities to facilitate your interactions with the command line. AI Shell create an interactive shell that can interact with various large language model and provides a framework that you can use to build a custom system that meet your needs. Users can interact with the AI agents in a conversational manner.</p> <p>The AI Shell project includes:</p> <ul> <li>The command-line shell (<code>aish</code>) interface</li> <li>A framework for creating AI agents and other assistance providers</li> <li>A PowerShell module for deeper integration with PowerShell.</li> <li>Built in AI agents to get you started assistance immediately</li> </ul> <p>Each AI assistant is known as an agent. The initial release of AI Shell includes two agents:</p> <ol> <li><strong>Azure OpenAI Agent</strong>: Powering general-purpose assistance, the <a href="https://azure.microsoft.com/products/ai-services/openai-service">Azure OpenAI</a> agent can use any of the AI models provided by Azure open AI to handle broad queries, natural language interpretations or code generation. You can connect it to your deployed Azure OpenAI models if you are looking for more privacy, management of the model settings, or have a model trained with your data. Additionally, you can also utilize OpenAI&#8217;s models.</li> <li><strong>Copilot in Azure</strong>: This agent brings the power of <a href="https://learn.microsoft.com/azure/copilot/overview">Copilot in Azure</a> directly to your CLI. It specializes in delivering cloud-centric assistance, providing Azure CLI and Azure PowerShell commands and helping you automate your Azure-specific tasks.To get started with the Copilot in Azure agent you need sign in to Azure with Azure CLI with an account that has the IAM role for accessing Copilot in Azure.</li> </ol> <p style="padding-left: 40px;"><div class="alert alert-primary"><p class="alert-divider"><i class="fabric-icon fabric-icon--Info"></i><strong>NOTE</strong></p>The Azure OpenAI agent needs additional configuration to connect to your Azure OpenAI instance. To get started, follow the instructions provided when you start start the agent.</div></p> <p>Recognizing that you may have different CLI command needs, AI Shell provides a framework for creating your own agents. For more information, see <a href="https://learn.microsoft.com//powershell/utility-modules/aishell/developer/create-ollama-agent">Creating an Agent</a>.</p> <h2>Using and Installing AI Shell</h2> <p>We know every CLI user has their own preferences, so AI Shell offers two flexible modes to fit your workflow:</p> <h3><strong>Standalone Executable</strong></h3> <p>You can use AI Shell as a self-contained executable, allowing it to run independently from any shell. This setup is perfect if you&#8217;re looking for a dedicated, streamlined experience that&#8217;s easily accessible without dependencies.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/standalone.gif" alt="A GIF of the standalone experience" /></p> <h3>Side-by-Side Integration with PowerShell 7</h3> <p>This is the recommended method for using AI Shell because it enables an uninterrupted work flow. The <strong>AIShell</strong> module connects the <code>aish</code> tool to your PowerShell 7 session for deeply integrated user experience. AI Shell opens in a side pane right next to your PowerShell 7 session that enables a rich communication between panes, results from the chat can be carried seamlessly to your PowerShell session for easy execution and the AI agent can be used to provide assistance to resolve a PowerShell error.</p> <p><a href="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/side-by-side-1.gif"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-20635" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/side-by-side-1.gif" alt="A GIF of the side-by-side experience" width="1199" height="637" /></a></p> <h4>Installation and Getting Started</h4> <p>Some system requirements are needed to run AI Shell.</p> <p>AI Shell (<code>aish</code>) and the <strong>AIShell</strong> module are separate downloads. For your convenience, we created a script to download and install them for you.</p> <h5>Windows</h5> <p>Some prerequisites are needed to run AI Shell on Windows.</p> <ul> <li>Windows 10 or higher</li> <li>PowerShell 7.4.6 or higher</li> <li>Windows Terminal</li> </ul> <p>The following install script will:</p> <ul> <li>Installs <code>aish.exe</code> to <code>$env:LOCALAPPDATA\Programs\AIShell</code> and adds it to your PATH</li> <li>Installs the <strong>AIShell</strong> module to your module path location</li> </ul> <h5>MacOS</h5> <p>Some prerequisites are needed to run AI Shell on MacOS.</p> <ul> <li>macOS v13 Ventura or higher</li> <li>PowerShell 7.4.6 or higher</li> <li> <div> <div>iTerm2 terminal app</div> </div> </li> </ul> <p>On MacOS, this script:</p> <ul> <li>Installs the <code>aish</code> executable to <code>/usr/local/AIShell</code> and creates a symbolic link at <code>/usr/local/bin/aish</code></li> <li>Due to some limitations, the <strong>AIShell</strong> module is not installed</li> </ul> <p><div class="alert alert-primary"><p class="alert-divider"><i class="fabric-icon fabric-icon--Info"></i><strong>NOTE</strong></p>This script only works on Windows and Mac systems. Linux users need to follow the manual installation instructions.</div></p> <p>To install AI Shell, run the following command in your PowerShell session:</p> <pre><code class="language-powershell">Invoke-Expression "&amp; { $(Invoke-RestMethod 'https://aka.ms/install-aishell.ps1') }"</code></pre> <p>To find details on manual installation please see, <a href="https://learn.microsoft.com/powershell/utility-modules/aishell/install-aishell?view=ps-modules&amp;tabs=windows#install-ai-shell-1">Installing AI Shell manually</a>.</p> <p>After running the install script, you can run <code>Start-AIShell</code> to begin using AI Shell.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/startup.gif" alt="A GIF of the start up experience" /></p> <p>AI Shell starts in the side by side experience. You can switch between the agents by using the <code>@&lt;agent name&gt;</code> command. For example, to switch to the Azure OpenAI agent you would use the <code>@openai-gpt</code> command. Additionally you can do <code>@&lt;agent name&gt; &lt;question&gt;</code> to send a question to the agent immediately.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/SwitchAgents.gif" alt="A GIF of the agent selection experience" /></p> <h3>Inserting code into the PowerShell 7 session</h3> <p>Copying and pasting a lot of code can be annoying. AI Shell makes it easy to insert the AI generated code directly into your PowerShell 7 session with the <code>/code post</code> command. In your AI Shell, run <code>/code post</code> or use the <kbd>Ctrl</kbd>+<kbd>d</kbd>,<kbd>Ctrl</kbd>+<kbd>d</kbd> keyboard shortcut to copy the code into your PowerShell session.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/SwitchAgents.gif" alt="A GIF of the code insertion experience" /></p> <p>If you are familiar with PowerShell 7 you may be familiar with <a href="https://devblogs.microsoft.com/powershell/announcing-psreadline-2-1-with-predictive-intellisense/">Predictive Intellisense</a>. When you get multi-step commands in your AI Shell response, you can easily get each subsequent step in your Predictive Intellisense buffer.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/predictiveintellisensedemo.gif" alt="A GIF of the code insertion experience with predictive Intellisense" /></p> <h3>Resolving errors quicker</h3> <p>If you encounter an error in your working terminal, you can use the <code>Resolve-Error</code> cmdlet to send that error to the open AI Shell window for resolution. This command asks the AI model to help you resolve the error.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/Resolve-error.gif" alt="A GIF of the error resolution experience" /></p> <h3>Invoking AIShell from PowerShell 7</h3> <p>One key scenario we wanted to support is being able to pipe output of one command into the AI Shell to get more information or ask a follow up question on the data given. With the <code>Invoke-AIShell</code> command you can easily do this.</p> <p><img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2024/11/Invoke-AIShell.gif" alt="A GIF of the Invoke-AIShell experience" /></p> <p><code>Invoke-AIShell</code> can take input from the pipeline but also can just be used to call the AI agent selected in AI Shell without having to switch back and forth.</p> <h3>Some additional tips using AI Shell</h3> <p>There are other chat commands and hot-keys that make using AI Shell easier. For a full list of the chat commands, see the <a href="https://learn.microsoft.com/powershell/utility-modules/aishell/how-to/aishell-reference">AI Shell reference</a>.</p> <table> <thead> <tr> <th>Key bindings</th> <th>Command</th> <th>Functionality</th> </tr> </thead> <tbody> <tr> <td><kbd>Ctrl</kbd>+<kbd>d</kbd>, <kbd>Ctrl</kbd>+<kbd>c</kbd></td> <td><code>/code copy</code></td> <td>Copy <em>all</em> the generated code snippets to clipboard</td> </tr> <tr> <td><kbd>Ctrl</kbd>+<kbd>&lt;n&gt;</kbd></td> <td><code>/code copy &lt;n&gt;</code></td> <td>Copy the <em>n-th</em> generated code snippet to clipboard</td> </tr> <tr> <td><kbd>Ctrl</kbd>+<kbd>d</kbd>, <kbd>Ctrl</kbd>+<kbd>d</kbd></td> <td><code>/code post</code></td> <td>Post <em>all</em> the generated code snippets to the connected application</td> </tr> <tr> <td><kbd>Ctrl</kbd>+<kbd>d</kbd>,<kbd>&lt;n&gt;</kbd></td> <td><code>/code post &lt;n&gt;</code></td> <td>Post the <em>n-th</em> generated code snippet to the connected application</td> </tr> </tbody> </table> <p>Additionally, you can switch between the panes easier using the following keyboard shortcuts.</p> <table> <thead> <tr> <th>Key bindings</th> <th>Functionality</th> </tr> </thead> <tbody> <tr> <td><kbd>Alt</kbd>+<kbd>RightArrow</kbd></td> <td>Moves your cursor to the right AI Shell pane</td> </tr> <tr> <td><kbd>Alt</kbd>+<kbd>LeftArrow</kbd></td> <td>Moves your cursor to the left PowerShell pane</td> </tr> </tbody> </table> <h2>Why Try AI Shell?</h2> <p>AI Shell was built for those who seek intelligence and adaptability from their command-line. With multi-agent support, AI Shell aims to be the assistant for any CLI tool. You&#8217;ll benefit from advanced AI capabilities, deeper integration with your PowerShell session, and an extensibility model to get the assistance you need.</p> <h2>Call to Action!</h2> <p>This public preview is just the beginning. We&#8217;d love to hear your feedback and insights as we refine AI Shell to better serve the CLI and PowerShell community. Download it today in PowerShell with</p> <p><code class="language-powershell">Invoke-Expression "&amp; { $(Invoke-RestMethod 'https://aka.ms/install-aishell.ps1') }"</code></p> <p>Be sure to explore the capabilities of the Copilot in Azure and Azure OpenAI agents, and take command-line productivity to the next level! Feel free to give us feedback on the current tool and sign up for early access to future features at <a href="https://aka.ms/AIShell-Feedback">aka.ms/AIShell-Feedback</a>.</p> <p>Thank you so much!</p> <p>Steven Bucher</p> <p>Product Manager on the PowerShell/CLI Team</p> <p><!-- link reference --></p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/">Announcing the Public Preview of AI Shell</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item> <title>PowerShell 7.5 RC-1 is now available</title> <link>https://devblogs.microsoft.com/powershell/powershell-7-5-rc-1-is-now-available/</link> <comments>https://devblogs.microsoft.com/powershell/powershell-7-5-rc-1-is-now-available/#comments</comments> <dc:creator><![CDATA[Sydney Smith]]></dc:creator> <pubDate>Mon, 18 Nov 2024 15:57:17 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20621</guid> <description><![CDATA[<p>Availability of PowerShell 7.5 RC1</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-5-rc-1-is-now-available/">PowerShell 7.5 RC-1 is now available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p>We&#8217;re proud to announce the availability of <a href="https://github.com/PowerShell/PowerShell/releases/tag/v7.5.0-rc.1">PowerShell 7.5.0-rc.1</a>! This is the first release candidate version of PowerShell 7.5 and is considered a &#8220;go-live&#8221; release meaning that it&#8217;s a supported release in production. PowerShell 7.5 is built on top of <a href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/">.NET 9</a> and will be supported for 18 months as a standard support release.</p> <p>Please note that support for PowerShell 7.2 is <a href="https://learn.microsoft.com/powershell/scripting/install/powershell-support-lifecycle#powershell-end-of-support-dates">ended November 8, 2024</a>. <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-74">PowerShell 7.4</a> is the current LTS release of PowerShell and is supported until November 2026.</p> <h2>How do I get it?</h2> <p>Since PowerShell 7 is supported on Windows, Linux, and macOS, and there are a <a href="https://learn.microsoft.com/powershell/scripting/install/installing-powershell">many ways to install it</a>. If you installed the previous PowerShell 7.5 preview release on Windows and opted into <a href="https://learn.microsoft.com/powershell/scripting/install/microsoft-update-faq">Microsoft Update</a>, you will be automatically updated to 7.5.0-rc.1.</p> <p><div class="alert alert-primary"><p class="alert-divider"><i class="fabric-icon fabric-icon--Info"></i><strong>Note</strong></p> Automatic updates aren&#8217;t available immediately after a release. It can take up to 2 weeks to get the latest versions deployed to all release channels. </div></p> <h2>What&#8217;s new in this release?</h2> <p>The PowerShell 7.5 milestone focused on security, quality and community contributions. A few highlights include:</p> <ul> <li>PSResourceGet now supports ACR as a container gallery, for more information check out the <a href="https://learn.microsoft.com/powershell/gallery/powershellget/how-to/use-acr-repository">documentation</a></li> <li>PSReadLine has been updated to version <a href="https://github.com/PowerShell/PSReadLine/releases/tag/v2.3.6">2.3.6</a></li> <li>New cmdlets <code>ConvertTo-CliXml</code> and <code>ConvertFrom-CliXml</code>(Thanks @ArmaanMcleod!)</li> <li>Web cmdlet improvements as well as <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-75#web-cmdlets-improvements">improvements to other cmdlets</a></li> <li>Tab completion improvements</li> <li>This release also contained a number of bug fixes &#8212; for the full list of changes please refer to <a href="https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md">the changelog</a></li> </ul> <p>For more information on what&#8217;s changed, see <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-75">What&#8217;s new in PowerShell 7.5</a>.</p> <h2>Experimental Features that were made stable for 7.5</h2> <p>The following experimental features were converted to mainstream features in PowerShell 7.5:</p> <ul> <li><code>PSCommandNotFoundSuggestion</code></li> <li><code>PSCommandWithArgs</code></li> <li><code>PSModuleAutoLoadSkipOfflineFiles</code></li> </ul> <h2>What&#8217;s next?</h2> <p>We expect to release PowerShell 7.5 GA in January 2025. We&#8217;ll have a separate blog post when the GA release is available. We appreciate all the efforts of the community, both individuals and <a href="https://github.com/PowerShell/PowerShell/blob/master/docs/community/working-group-definitions.md">working group members</a>, and look forward to your continued feedback and contributions!</p> <p>Sydney</p> <p>PowerShell Team</p> <p><!-- link references --></p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-5-rc-1-is-now-available/">PowerShell 7.5 RC-1 is now available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/powershell-7-5-rc-1-is-now-available/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item> <title>Announcing Microsoft.PowerShell.PlatyPS 1.0.0-Preview1</title> <link>https://devblogs.microsoft.com/powershell/announcing-platyps-100-preview1/</link> <comments>https://devblogs.microsoft.com/powershell/announcing-platyps-100-preview1/#comments</comments> <dc:creator><![CDATA[Jason Helmick]]></dc:creator> <pubDate>Wed, 30 Oct 2024 19:15:36 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[PowerShell PlatyPS]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20604</guid> <description><![CDATA[<p>We are pleased to announce the release of Microsoft.PowerShell.PlatyPS 1.0.0-Preview1, a tool to build PowerShell help files.</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-platyps-100-preview1/">Announcing Microsoft.PowerShell.PlatyPS 1.0.0-Preview1</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p><!-- markdownlint-disable MD041 --></p> <p><strong>PlatyPS</strong> is the primary tool for creating the PowerShell help displayed using <code>Get-Help</code>. PowerShell help files are stored in an XML format known as <a href="https://wikipedia.org/wiki/Microsoft_Assistance_Markup_Language">Microsoft Assistance Markup Language</a> (MAML). Prior to <strong>PlatyPS</strong>, the help files were hand authored using complex tool chains. <a href="https://wikipedia.org/wiki/Markdown">Markdown</a> is widely used in the open source community, supported by many editors including <a href="https://code.visualstudio.com">Visual Studio Code</a>, and easier to author. <strong>PlatyPS</strong> simplifies the process by allowing you to write the help files in Markdown and then converted to MAML.</p> <h2>Announcing Microsoft.PowerShell.PlatyPS</h2> <p>We&#8217;re pleased to announce the release of <a href="https://www.powershellgallery.com/packages/Microsoft.PowerShell.PlatyPS">Microsoft.PowerShell.PlatyPS 1.0.0-Preview1</a>. With this release, there are two versions of PlatyPS.</p> <ul> <li><strong>platyPS v0.14.2</strong> is the current version of PlatyPS that&#8217;s used to create PowerShell help files in Markdown format.</li> <li><strong>Microsoft.PowerShell.PlatyPS</strong> is the new version of PlatyPS that includes several improvements: <ul> <li>Provides a more accurate description of a PowerShell cmdlet and its parameters</li> <li>Increased performance &#8211; processes 1000s of Markdown files in seconds</li> <li>Creates an object model of the help file that you can manipulate in memory</li> <li>Provides cmdlets that you can chain together to perform complex operations</li> </ul> </li> </ul> <p>Our main goal for this release is to address long standing issues, add more schema driven features, and improve validity checking along with performance. This release is a substantial rewrite with all new cmdlets. If you have scripts that use the older version of PlatyPS, you must rewrite them to use the new cmdlets.</p> <p>In this Preview release, we focused on:</p> <ul> <li>Re-write in C# leveraging <a href="https://github.com/xoofx/markdig">markdig</a> for parsing Markdown.</li> <li>New Markdown schema that includes all elements needed for <code>Get-Help</code>, plus information that was previously unavailable.</li> <li>The new cmdlets produce objects, supporting chaining cmdlets for complex operations.</li> <li>Full serialization to YAML to support our publishing pipeline.</li> <li>Automatic conversion of existing Markdown to the new object model.</li> <li>Export of the object model to Markdown, Yaml, and MAML.</li> <li>The module contains the following cmdlets: <ul> <li><code>Compare-CommandHelp</code></li> <li><code>Export-MamlCommandHelp</code></li> <li><code>Export-MarkdownCommandHelp</code></li> <li><code>Export-MarkdownModuleFile</code></li> <li><code>Export-YamlCommandHelp</code></li> <li><code>Export-YamlModuleFile</code></li> <li><code>Import-MamlHelp</code></li> <li><code>Import-MarkdownCommandHelp</code></li> <li><code>Import-MarkdownModuleFile</code></li> <li><code>Import-YamlCommandHelp</code></li> <li><code>Import-YamlModuleFile</code></li> <li><code>New-CommandHelp</code></li> <li><code>New-MarkdownCommandHelp</code></li> <li><code>New-UpdateableHelp</code></li> <li><code>Test-MarkdownCommandHelp</code></li> <li><code>Update-CommandHelp</code></li> <li><code>Update-MarkdownCommandHelp</code></li> </ul> </li> </ul> <p><strong>Microsoft.PowerShell.PlatyPS</strong> runs on:</p> <ul> <li>Windows PowerShell 5.1+</li> <li>PowerShell 7+ on Windows, Linux, and macOS</li> </ul> <h2>Installing Microsoft.PowerShell.PlatyPS</h2> <p>To begin working with <strong>Microsoft.PowerShell.PlatyPS 1.0.0 Preview1</strong>, download and install the module from PSGallery.</p> <pre><code class="language-powershell">Install-PSResource -Name Microsoft.PowerShell.PlatyPS -Prerelease</code></pre> <h2>Documentation to get started</h2> <p>For the preview1 release, the cmdlet reference is available at <a href="https://learn.microsoft.com/powershell/module/microsoft.powershell.platyps">Microsoft.PowerShell.PlatyPS</a>. For an example of how to use the new cmdlets, see <em>Example #1</em> in <a href="https://learn.microsoft.com/powershell/module/microsoft.powershell.platyps/new-markdowncommandhelp#example-1-create-markdown-help-files-for-a-module">New-MarkdownCommandHelp</a>.</p> <h2>Call to action</h2> <p>Our goal is to make it easier for you to update and maintain PowerShell help files. We value your feedback. Stop by our <a href="https://github.com/PowerShell/platyPS">GitHub repository</a> and let us know of any issues you find.</p> <p>Jason Helmick</p> <p>Sr. Product Manager, PowerShell</p> <p><!-- link references --></p> <p>The post <a href="https://devblogs.microsoft.com/powershell/announcing-platyps-100-preview1/">Announcing Microsoft.PowerShell.PlatyPS 1.0.0-Preview1</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/announcing-platyps-100-preview1/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item> <title>PSResourceGet support for Azure Container Registry (ACR) is in Preview</title> <link>https://devblogs.microsoft.com/powershell/psresourceget-support-for-azure-container-registry-acr-is-in-preview/</link> <comments>https://devblogs.microsoft.com/powershell/psresourceget-support-for-azure-container-registry-acr-is-in-preview/#comments</comments> <dc:creator><![CDATA[Sydney Smith]]></dc:creator> <pubDate>Tue, 02 Apr 2024 22:37:11 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[PowerShellGet]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20475</guid> <description><![CDATA[<p>PSResourceGet 1.1 preview 1 is available</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/psresourceget-support-for-azure-container-registry-acr-is-in-preview/">PSResourceGet support for Azure Container Registry (ACR) is in Preview</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p>Microsoft.PowerShell.PSResourceGet 1.1.0-preview1 is now available on <a href="https://www.powershellgallery.com/packages/Microsoft.PowerShell.PSResourceGet/">the PowerShell Gallery</a>.</p> <p>This preview adds support for Azure Container Registry (ACR) as a private repository for PowerShell. Although ACR is a container registry by name, in this release we add support for PowerShell resources as modules, scripts and DSC resources to be directly published and consumed in the repository. To support this we publish the PowerShell resources as OCIArtifacts, and created a dependable schema to store the needed PSResource metadata.</p> <p><a href="https://learn.microsoft.com/en-us/powershell/gallery/powershellget/supported-repositories?view=powershellget-3.x#azure-container-registry">The documentation for PSResourceGet</a> is also updated to reflect this release.</p> <h2>How to install the module</h2> <p>To install from PSResourceGet (which is included since PowerShell 7.4 Preview 5)</p> <p><code>Install-PSResource -Name Microsoft.PowerShell.PSResourceGet -Prerelease</code></p> <p>To install from PowerShellGet 2.2.5</p> <p><code>Install-Module -Name Microsoft.PowerShell.PSResourceGet -AllowPrerelease</code></p> <p>This module is supported on all supported versions of PowerShell including Windows PowerShell 5.1.</p> <h2>Updates in this release</h2> <h3>New Features</h3> <ul> <li>Support for Azure Container Registries</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Fix incorrect request URL when installing resources from ADO (Thanks @anytonyoni!)</li> <li>Fix for swallowed exceptions</li> <li>Fix for PSResourceGet not working in Constrained Language Mode</li> </ul> <h2>Getting started with ACR</h2> <p>Azure Container Registry (ACR) allows you to build, store, and manage container images and artifacts in a private registry for all types of container deployments. ACR-based repositories are private repositories and require credentials for access. To create a registry refer to <a href="https://learn.microsoft.com/en-us/powershell/gallery/powershellget/how-to/use-acr-repository?view=powershellget-3.x#create-an-azure-container-registry">this documentation</a>.</p> <p>To register an ACR repository, you must know the LoginServer name of the ACR. Use the following commands to register an ACR repository as a PSResource repository.</p> <pre><code class="language-powershell">$myAcr = Get-AzContainerRegistry -Name myAcr $acrUrl = "https://$($myAcr.LoginServer)" Register-PSResourceRepository -Name ACRDemoRepo -Uri $acrUrl</code></pre> <p>After you register the repository, the first time you perform an operation on the registered repository in a new session you are prompted to login. This repository uses the Azure.Identity SDK for authentication.</p> <p>Once you register, you can publish to the repository, note you will not need to use an API key. For PowerShell resources to be discoverable/installable by PSResourceGet they will need to be published by PSResourceGet, this is because the module formats the metadata in a particular way during the publish process to ACR.</p> <pre><code class="language-powershell">$publishPSResourceSplat = @{ Path = 'D:\MyModule' Repository = 'ACRDemoRepo' } Publish-PSResource @publishPSResourceSplat</code></pre> <p>You can now interact with the repository using find/install commands as you would with other repositories.</p> <p>Please note <a href="https://learn.microsoft.com/en-us/powershell/gallery/powershellget/how-to/use-acr-repository?view=powershellget-3.x#limitations">the limitations of container registries</a>.</p> <p>For more detailed information check out <a href="https://learn.microsoft.com/en-us/powershell/gallery/powershellget/how-to/use-acr-repository?view=powershellget-3.x">the documentation</a>.</p> <h2>How to give feedback and get support</h2> <p>We cannot overstate how useful user feedback has been in the development of this module.</p> <p>In order to give feedback or get support please open issues in our <a href="https://github.com/powershell/psresourceget">GitHub repository</a>.</p> <p>Sydney</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/psresourceget-support-for-azure-container-registry-acr-is-in-preview/">PSResourceGet support for Azure Container Registry (ACR) is in Preview</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/psresourceget-support-for-azure-container-registry-acr-is-in-preview/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item> <title>PowerShell and OpenSSH team investments for 2024</title> <link>https://devblogs.microsoft.com/powershell/powershell-and-openssh-team-investments-for-2024/</link> <comments>https://devblogs.microsoft.com/powershell/powershell-and-openssh-team-investments-for-2024/#comments</comments> <dc:creator><![CDATA[Steve Lee]]></dc:creator> <pubDate>Mon, 05 Feb 2024 19:08:41 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[OpenSSH]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20251</guid> <description><![CDATA[<p>Planned team investments for 2024 for PowerShell, OpenSSH, and related tooling.</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-and-openssh-team-investments-for-2024/">PowerShell and OpenSSH team investments for 2024</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<h2>PowerShell 7.5</h2> <p>We continue to follow our yearly release schedule for PowerShell 7 and the next version will align with .NET 9.</p> <h3>Pseudo-terminal support</h3> <p>PowerShell currently has a design limitation that prevents full capture of output from native commands by PowerShell itself. Native commands (meaning executables you run directly) will write output to STDERR or STDOUT pipes. However, if the output is not redirected, PowerShell will simply have the native command write directly to the console. PowerShell can&#8217;t just always redirect the output to capture it because:</p> <ul> <li>The order of output from STDERR and STDOUT can be non-deterministic because they are on different pipes, but the order written to the console has meaning to the user.</li> <li>Native commands can use detection of redirection to determine if the command is being run interactive or non-interactively and behave differently such as prompting for input or defaulting to adding text decoration to the output.</li> </ul> <p>To address this, we are working on an experimental feature to leverage <a href="https://en.wikipedia.org/wiki/Pseudoterminal">pseudoterminals</a> to enable PowerShell to capture the output of native commands while still allowing the native command to seemingly write directly to the console.</p> <p>This feature can then further be leveraged to:</p> <ul> <li>Ensure complete transcription of native commands</li> <li>Proper rendering of PowerShell progress bars in scripts that call native commands</li> <li>Enable feedback providers to act upon native command output <ul> <li>For example, it would be possible to write a feedback provider that looked at the output of <code>git</code> commands and provided suggestions for what to do next based on the output.</li> </ul> </li> </ul> <p>Once this feature is part of PowerShell 7, there are other interesting scenarios that can be enabled in the future.</p> <h3>Platform support</h3> <p>Operating system versions and distributions are constantly evolving. We want to ensure that a supported platform is a platform that is tested and validated by the team.</p> <p>During 2024, the engineering team will focus on:</p> <ul> <li>Making our tests reliable so we are only spending manual effort investigating real issues when test fails</li> <li>Simplify how we add new platforms to our test matrix so new distro requests can be fulfilled more quickly</li> <li>More actively track the lifecycle of platforms we support</li> <li>Automate publishing the supported platforms list so that our docs are always up to date</li> </ul> <h3>Bug fixes and community PRs</h3> <p>The community has been great at opening issues and pull requests to help improve PowerShell. For this release, we will focus on addressing issues and PRs that have been opened by the community. This means less new features from the team, but we hope to make up for that with the community contributions getting merged into the product. We will also be investing in the Working Group application process to expand the reach of those groups.</p> <p>Please use reactions in GitHub issues and PRs to help us prioritize what to focus our limited time on.</p> <h2>Artifact management</h2> <h3>Fundamentals work</h3> <p>Ensure PowerShell Gallery addresses the latest compliance requirements for security, accessibility, and reliability.</p> <h3>Include new types of repositories for PSResourceGet</h3> <p>We plan to introduce integration with container registries, both public and private, which will help enterprise customers create a differentiation between trusted and untrusted content. This change will allow for a Microsoft trusted repository while the PowerShellGallery continues as untrusted by default. By having more options for private galleries, in addition to a Microsoft trusted repository and the PowerShell Gallery, this enables customers to have control over package availability suitable for their environments.</p> <h3>Concurrent installs</h3> <p>To improve performance during long-running installations, we plan to enable parallel operations so multiple module installations can happen at the same time. This change will be particularly impactful in modules with many dependencies, such as the Az module, which currently can take significant time to install.</p> <h3>Local caching of artifact details</h3> <p>Currently the <code>find-psresource</code> cmdlet pulls information about available artifacts from service endpoints and outputs the list locally. We believe there is opportunity to locally cache the metadata about available artifacts to reduce network dependency and improve performance when resolving dependency relationships. This would also help enable implementing a feedback provider to suggest how to install module that is not currently installed. So if a user tries to run a cmdlet that is not installed, the feedback provider will suggest what module to install to get the cmdlet to work.</p> <h2>Intelligence in the shell</h2> <p>We are observing and being thoughtful about what it will mean to integrate the experiences provided by large language models into shell experience. Our current outlook is to think beyond natural language chat to deep integration of learning opportunities.</p> <p>We also believe there are lots of improvements to the interactivity of PowerShell that does not require a large language model. This includes some more subtle improvements to the interactive experience of PowerShell that would help increase productivity and efficiency at the command line.</p> <h2>Configuration</h2> <p>Desired State Configuration (DSC) helped to enable configuration as code for Windows. With v3, we are focusing on enabling cross-platform use, simplifying resource development, improving experience to integrate with higher level configuration management tools, and improving the experience for end users. Our goal is to be code complete by end of March and work towards a release candidate by middle of the year. This is a complete rewrite of DSC and we welcome feedback during the design and development process.</p> <h2>Remoting</h2> <h3>Win32_OpenSSH</h3> <p>We hope to continue bringing new versions of OpenSSH to the Windows Server platform. Another goal is to reduce the complex steps required to install and manage SSH at scale, to enable partners that create automation tools to use the same mechanism when connecting to Windows servers as they use for Linux.</p> <h3>SSHDConfig</h3> <p>Monitoring and management of the <code>sshd_config</code> file at scale across platforms can be challenging. We are working on a DSC v3 resource to enable management of <code>sshd_config</code> using a syntax that is closer aligned to the command line tools used by modern cloud platforms. Initially, we&#8217;ll be targeting auditing scenarios but we hope to enable full management of the file in the future.</p> <h2>Help system</h2> <p><a href="https://www.powershellgallery.com/packages/platyPS/">platyPS</a> is a module that enables you to write PowerShell help documentation in Markdown and convert it to PowerShell help format. This tool is used by Microsoft teams and the community of module authors to more easily write and maintain help documentation. We hope to continue work in this area to address partner feedback.</p> <h2>Other projects</h2> <p>The projects above will already keep the team very busy, but we will continue to maintain other existing projects. We appreciate the community contributions to these projects and will continue to review issues and PRs:</p> <ul> <li>VSCode extension</li> <li>PSScriptAnalyzer module</li> <li>ConsoleGuiTools module</li> <li>TextUtility module</li> <li>PSReadLine module</li> <li>SecretManagement module</li> </ul> <p>Our other projects will continue to be serviced on an as needed basis.</p> <p>Thanks to the community from Steve Lee and Michael Greene on behalf of our team!</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-and-openssh-team-investments-for-2024/">PowerShell and OpenSSH team investments for 2024</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/powershell-and-openssh-team-investments-for-2024/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item> <title>PowerShell 7.4 General Availability</title> <link>https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/</link> <dc:creator><![CDATA[Steve Lee]]></dc:creator> <pubDate>Thu, 16 Nov 2023 18:56:58 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20191</guid> <description><![CDATA[<p>PowerShell 7.4 GA has been released.</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/">PowerShell 7.4 General Availability</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<p>As we come to towards the end of 2023, we are excited to announce the general availability of PowerShell 7.4! This release is built on <a href="https://learn.microsoft.com/dotnet/core/whats-new/dotnet-8">.NET 8</a> and similarly, is our latest Long Term Support (LTS) release supported for 3 years.</p> <p>We want to thank our community and many contributors for their invaluable help identifying issues, engaging in discussions in our <a href="https://github.com/powershell/powershell">repository</a>, providing fixes and new features, and helping us ship a high quality release!</p> <h2>How do I get it?</h2> <p>Since PowerShell 7 is supported on Windows, Linux, and macOS, there are a <a href="https://learn.microsoft.com/powershell/scripting/install/installing-powershell">variety of ways to get it</a>. If you installed the previous PowerShell 7 stable release (7.3) via the Windows Store or MSI (and opted into <a href="https://learn.microsoft.com/powershell/scripting/install/microsoft-update-faq">Microsoft Update</a>), you will be automatically updated to 7.4 GA.</p> <h2>What&#8217;s new?</h2> <p>This release continues to focus on enhancing the shell experience and addressing commonly reported customer and partner issues.</p> <p>A detailed report of <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-74">What&#8217;s New</a> is available in our documentation or via the <a href="https://www.powershellgallery.com/packages/Microsoft.PowerShell.WhatsNew">WhatsNew</a> module.</p> <p>Here are a few highlights:</p> <h3>PSResourceGet 1.0</h3> <p>This release includes <a href="https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/">PSResourceGet</a>, which itself was made generally available earlier this year. PSResourceGet replaces PowerShellGet (although the two work side-by-side for legacy scripts) and where we will invest future enhancements to the PowerShell module ecosystem. This release focuses on a new codebase that is more maintainable and also provides better performance. In addition, this module uses a different set of cmdlets to allow for breaking changes that provide a more intuitive user experience.</p> <h3>PSReadLine 2.3</h3> <p>This release includes the latest <a href="https://devblogs.microsoft.com/powershell/psreadline-2-3-4-ga-release/">PSReadLine</a> release that contains a number of enhancements and bug fixes.</p> <h3>New stable features</h3> <p>The PowerShell Committee reviewed the experimental features we&#8217;ve had in the preview releases along with community feedback (issues) and telemetry indicating the feature was used and not disabled and decided that the following features were ready to be deemed stable for this release:</p> <ul> <li><code>PSConstrainedAuditLogging</code> This feature enables PowerShell 7 to adhere to WDAC Audit mode and log events into the Windows Event Log. In this mode, PowerShell runs scripts in Full Language Mode, but logs events if there would be a difference in behavior in System Lockdown mode. This makes it easier for administrators to deploy PowerShell 7 in environments that have System Lockdown mode enabled by understanding what scripts would need to be modified to run in that mode.</li> <li><code>PSCustomTableHeaderLabelDecoration</code> A common feedback from users is that with objects rendered as tables, it was not clear when a header label was not a property of the object. For example, when using <code>Get-Process</code>, you&#8217;ll see a column with the header <code>CPU(s)</code> to indicate the amount of cpu seconds used by that process. However, if you tried to access that property, you would find it&#8217;s actually called just <code>CPU</code> and the <code>(s)</code> was added to the header to indicate that it was in seconds. This new feature allows you to decorate the header label to make it clear that it is not a property of the object. The default decoration simply renders the header label in italics.<img decoding="async" src="https://devblogs.microsoft.com/powershell/wp-content/uploads/sites/30/2023/11/custom_header.png" alt="image" /></li> <li><code>PSWindowsNativeCommandArgPassing</code> This is continuation of a feature we first added in 7.3. A major difference between Windows and non-Windows is how arguments are parsed particularly when quotes are involved. As more Open Source command-line tools are being used on Windows, we want to make sure that PowerShell can pass arguments to those tools in a way that works as expected. However, many legacy command-line tools on Windows do not handle arguments in the industry standard way. As such, a <code>Windows</code> mode for <code>$PSNativeCommandArgumentPassing</code> special cases some known tools to fallback to how it worked with Windows PowerShell while modern tools the new <code>Standard</code> mode. A <code>Legacy</code> mode is available for those that need to support legacy tools that do not work with the <code>Windows</code> mode.</li> <li><code>PSNativeCommandErrorActionPreference</code> This is another continuation of a feature we first added in 7.3. This feature allows you to treat a non-zero exit code from a native command as an ErrorRecord that would come from a cmdlet. This allows you to set <code>$ErrorActionPreference</code> to <code>Stop</code> and have PowerShell stop execution whether a cmdlet had an error or a native command had a non-zero exit code. This simplifies scripts that previously would have to check <code>$LASTEXITCODE</code> after execution of a native command or wrap it in a helper function.</li> <li><code>PSNativeCommandPreserveBytePipe</code> This feature allows you to preserve the byte stream when piping to or from a native command. Previously, all streams were converted to strings when piping to or from a native command and thus lost the original byte stream. This is useful for tools that expect binary input such as <code>tar</code> or <code>zip</code>.</li> </ul> <p>There are still a number of experimental featues in this release pending additional user feedback before we can promote them to stable. For example, we continue to iterate on the <a href="https://devblogs.microsoft.com/powershell/what-are-feedback-providers/">Feedback Provider</a> model as we get more feedback from users and partners who implement it.</p> <h3>Breaking changes</h3> <p>There are a few <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-74#breaking-changes">Breaking Changes</a> in this release that you should be aware of although we expect them to be rare.</p> <p>One that could affect some users is the new <code>-ProgressAction</code> common parameter. Similar to other common parameters, the new <code>-ProgressAction</code> parameter is automatically available to cmdlets and advanced functions. This parameter allows you to control how progress is reported for a cmdlet or advanced function call. Previously, you would have to set <code>$ProgressPreference</code> to <code>SilentlyContinue</code> to suppress progress and then restore it to its previous value.</p> <h2>What&#8217;s Next?</h2> <p>We will continue to focus on making PowerShell a great shell environment next year with PowerShell 7.5. As usual, we&#8217;ll continue to address issues and bugs reported by our community and partners as well as adopt the latest .NET 9 preview releases. Specific team investments will be discussed in a separate blog post early next year.</p> <p>Thanks again to our community and partners for their continued support and feedback!</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/">PowerShell 7.4 General Availability</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> </item> <item> <title>PowerShell 7.4 Release Candidate 1</title> <link>https://devblogs.microsoft.com/powershell/powershell-7-4-release-candidate-1/</link> <comments>https://devblogs.microsoft.com/powershell/powershell-7-4-release-candidate-1/#comments</comments> <dc:creator><![CDATA[Sydney Smith]]></dc:creator> <pubDate>Tue, 31 Oct 2023 01:05:13 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20173</guid> <description><![CDATA[<p>Availability of PowerShell 7.4 RC1</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-4-release-candidate-1/">PowerShell 7.4 Release Candidate 1</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<h2>PowerShell 7.4 RC-1 is now available</h2> <p>We&#8217;re proud to announce the availability of <a href="https://github.com/PowerShell/PowerShell/releases/tag/v7.4.0-rc.1">PowerShell 7.4.0-rc.1</a>! This is the first release candidate version of PowerShell 7.4 and is considered a &#8220;go-live&#8221; release meaning that it is a supported release in production. Now is the time to test out PowerShell 7.4 in your environment. PowerShell 7.4 is built on top of <a href="https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/">.NET 8</a> and as a LTS (Long Term Support) release will be supported for 3 years.</p> <h2>How do I get it?</h2> <p>Since PowerShell 7 is supported on Windows, Linux, and macOS, there are a <a href="https://learn.microsoft.com/powershell/scripting/install/installing-powershell">variety of ways to get it</a>. If you had installed the previous PowerShell 7.4 preview release (7.4.0-preview.6) via the Windows Store or MSI (and opted into <a href="https://learn.microsoft.com/powershell/scripting/install/microsoft-update-faq">Microsoft Update</a>), you will be automatically updated to 7.4.0-rc.1.</p> <p>Note that after releases there are some delays in all release channels getting the latest bits. If this version is not available on your release channel of choice expect it to be available within 2 weeks.</p> <h2>What&#8217;s new in this release?</h2> <ul> <li>PSResourceGet is now GA and has reached a 1.0.0 version in this release&#8211; for more info on this module release check out <a href="https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/">this blog post</a></li> <li>PSReadLine has been incremented to a new feature version 2.3.4&#8211; for more info on this module release check out <a href="https://devblogs.microsoft.com/powershell/psreadline-2-3-4-ga-release/">this blog post</a></li> <li>This release also contained a number of bug fixes&#8211; for the full list of changes please refer to <a href="https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md">the changelog</a></li> </ul> <p>For more info on what&#8217;s changed in PowerShell 7.4, check out <a href="https://learn.microsoft.com/powershell/scripting/whats-new/what-s-new-in-powershell-74?view=powershell-7.4">this page of the documentation</a>.</p> <h2>Experimental Features which were made stable for 7.4</h2> <p>The following features were developed and released as experimental during the PowerShell 7.4 previews. Through telemetry and user feedback we determined that they should be available as non-experimental features in the 7.4 release.</p> <ul> <li><a href="https://learn.microsoft.com/powershell/scripting/learn/application-control?view=powershell-7.4#wdac-policy-auditing">PSConstrainedAuditLogging</a></li> <li><a href="https://learn.microsoft.com/powershell/scripting/learn/experimental-features?view=powershell-7.4#pscustomtableheaderlabeldecoration">PSCustomTableHeaderLabelDecoration</a></li> <li><a href="https://learn.microsoft.com/powershell/scripting/learn/experimental-features?view=powershell-7.4#psnativecommandargumentpassing">PSWindowsNativeCommandArgPassing</a></li> <li><a href="https://learn.microsoft.com/powershell/scripting/learn/experimental-features?view=powershell-7.4#psnativecommanderroractionpreference">PSNativeCommandErrorActionPreference</a></li> <li><a href="https://learn.microsoft.com/powershell/scripting/learn/experimental-features?view=powershell-7.4#psnativecommandpreservebytepipe">PSNativeCommandPreserveBytePipe</a></li> </ul> <h2>What&#8217;s next?</h2> <p>PowerShell 7.4 will be our next LTS release and expected to ship once an RC is determined to be ready. We&#8217;ll have a separate blog post when the GA release of 7.4 becomes available. We appreciate all the efforts of the community, both individuals and <a href="https://github.com/PowerShell/PowerShell/blob/master/docs/community/working-group-definitions.md">working group members</a>, and look forward to your continued feedback and contributions!</p> <p>Sydney PowerShell Team</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-7-4-release-candidate-1/">PowerShell 7.4 Release Candidate 1</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/powershell-7-4-release-candidate-1/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item> <title>PowerShell Extension for Visual Studio Code Fall 2023 Update</title> <link>https://devblogs.microsoft.com/powershell/powershell-extension-for-visual-studio-code-fall-2023-update/</link> <dc:creator><![CDATA[Sydney Smith]]></dc:creator> <pubDate>Wed, 25 Oct 2023 22:06:44 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[Visual Studio Code]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20169</guid> <description><![CDATA[<p>PowerShell Extension for Visual Studio Fall 2023 Update</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-extension-for-visual-studio-code-fall-2023-update/">PowerShell Extension for Visual Studio Code Fall 2023 Update</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<h2>PowerShell Extension for Visual Studio Code Fall 2023 Update</h2> <p>We are excited to announce that the fall update to the <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell">PowerShell Extension for Visual Studio Code</a> is now available on the extension marketplace.</p> <p>In this update, thanks to efforts across the team, we are shipping the extension with the latest and greatest PSReadLine, v2.3.4! In addition this release contains a number of bug fixes and community contributions.</p> <p>Thanks to all the many community contributors whose efforts make releases such as these possible!</p> <h2>Updates in the Fall Release</h2> <p>Note that these updates all shipped in our preview channel for VS Code before shipping in our stable channel.</p> <p>Some highlights of the fall release:</p> <ul> <li>Stop hiding Activity Bar in ISE Mode.</li> <li>Fix race condition with displaying PowerShell name on icon.</li> <li>Support <code>~</code>, <code>./</code> and named workspace folders in <code>cwd</code>.</li> <li>Enhance <code>additionalPowerShellExes</code> setting.</li> <li>Add <code>startLocation</code> setting for Extension Terminal. (Thanks @krishankanumuri!)</li> <li>Upgrade bundled PSReadLine module to v2.3.4.</li> <li>Add <code>None</code> to <code>PsesLogLevel</code> enum.</li> <li>Fix debugging script blocks that aren&#8217;t in files.</li> <li>Fix shell integration for PowerShell 5.1 with strict mode.</li> </ul> <p>For the full list of changes please refer to our <a href="https://github.com/PowerShell/vscode-powershell/blob/main/CHANGELOG.md">changelog</a>.</p> <p>In this release we also updated our versioning schema. The middle version number no longer corresponds to the month, but is simply incremented. Even versions are stable, and odd versions are pre-release, with the latter purposefully being versioned higher than the former in order to keep both channels (pre-release and stable) available in the Visual Studio Code marketplace.</p> <h2>Getting Support and Giving Feedback</h2> <p>While we hope the new release provides a better user experience, there are bound to be issues. Please let us know if you run into anything.</p> <p>If you encounter any issues with the PowerShell Extension in Visual Studio Code or have feature requests, the best place to get support is through our <a href="https://github.com/PowerShell/vscode-powershell/issues/new/choose">GitHub repository</a>.</p> <p>Sydney Smith PowerShell Team</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/powershell-extension-for-visual-studio-code-fall-2023-update/">PowerShell Extension for Visual Studio Code Fall 2023 Update</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> </item> <item> <title>PSResourceGet is generally available</title> <link>https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/</link> <comments>https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/#comments</comments> <dc:creator><![CDATA[Sydney Smith]]></dc:creator> <pubDate>Mon, 09 Oct 2023 18:19:07 +0000</pubDate> <category><![CDATA[PowerShell]]></category> <category><![CDATA[PowerShellGet]]></category> <guid isPermaLink="false">https://devblogs.microsoft.com/powershell/?p=20158</guid> <description><![CDATA[<p>PSResourceGet is generally available</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/">PSResourceGet is generally available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></description> <content:encoded><![CDATA[<h2>PSResourceGet is Generally Available</h2> <p>Microsoft.PowerShell.PSResourceGet is a continuation of the PowerShellGet 3.0 project. The module under this new name is now generally available on <a href="https://www.powershellgallery.com/packages/Microsoft.PowerShell.PSResourceGet/">the PowerShell Gallery</a>.</p> <p><a href="https://learn.microsoft.com/powershell/module/microsoft.powershell.psresourceget/?view=powershellget-3.x">The documentation for PSResourceGet</a> is also live.</p> <h2>How to install the module</h2> <p>To install from PSResourceGet (which is included since PowerShell 7.4 Preview 5)</p> <p><code>Install-PSResource -Name Microsoft.PowerShell.PSResourceGet</code></p> <p>To install from PowerShellGet 2.2.5</p> <p><code>Install-Module -Name Microsoft.PowerShell.PSResourceGet</code></p> <p>With this release we have also included an update to the PowerShell Gallery UI to add a tab in the installation options for PSResourceGet.</p> <p>This module is supported on all supported versions of PowerShell including Windows PowerShell 5.1.</p> <h2>Updates from the release candidate</h2> <p>From the release candidate we addressed high priority low risk bugs, these included:</p> <ul> <li>Fix RequiredResource silent failures</li> <li>Fix Artifactory v2 and v3 endpoint failures</li> <li>Fix ADO v2 feed installation failures</li> <li>Automatically set the ApiVersion to v2 for repositories imported from PowerShellGet</li> </ul> <h2>What is PSResourceGet/what are the goals</h2> <p>PSResourceGet is a complete re-write of PowerShellGet, the package manager for PowerShell, with the following goals:</p> <ul> <li><em>Create a more intuitive package manager</em>: Make PowerShell resource management more intuitive and easier to use by removing unnecessary prompts when possible.</li> <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.</li> <li><em>Allow for a smooth transition to a better experience</em>: Transitioning from lower versions of PSResourceGet should be as painless as possible. With the help of our compatibility layer explained in more detail below, our goal is to enable users and scripts built on PowerShellGet 2.0 to move seamlessly to the PSResourceGet engine.</li> <li><em>Improve maintainability of the codebase</em>: This goal is addressed by removing the provider model that PowerShellGet was originally built on.</li> </ul> <p>This means that PowerShellGet 3.0 does not take a dependency on OneGet, NuGet or any other package provider therefore simplifying the codebase.</p> <p>Using the lessons learned from previous versions of PowerShellGet, along with a cleaner implementation and interface, we have improved efficiency, performance and quality, allowing us to more quickly address bugs as they arise and iterate on our vNext issues.</p> <h3>Why make a whole new module/why the rename</h3> <p>When we initially introduced the new project we introduced it as PowerShellGet v3, a major update to PowerShellGet. During this time we also introduced a new cmdlet interface (Install-PSResource vs Install-Module), this was done for two main reasons:</p> <ol> <li>To simplify the cmdlet interface</li> <li>The cmdlets now support more than just modules (scripts, nupkgs etc..)</li> </ol> <p>In addition to this major breaking change, there were other smaller breaking changes to the cmdlet interface made to fix bugs or improve usability.</p> <p>Given the many breaking changes when we made the decision to ship the new version in PowerShell 7.4, there was concern that we would break folks&#8211; especially those using PowerShellGet cmdlets in CI/CD or other automation. Through community collaboration we determined that the best path forward was to start fresh with a new module name, and to introduce PowerShellGet v3 as a compatibility layer to bridge the gap between the old cmdlet interface, and the new engine improvements. For more information on how this decision was made read <a href="https://devblogs.microsoft.com/powershell/powershellget-in-powershell-7-4-updates/">this blog post</a>. For more information on when to use which module or how to use PowerShellGet with the new engine via compat layer refer to the &#8216;When to use PowerShellGet v2/v3&#8217; section below.</p> <h2>Shipping in PowerShell</h2> <p>PSResourceGet ships inbox in PowerShell 7.4, side by side with PowerShellGet 2.2.5. We have shipped the last few previews as well as the release candidate for PSResourceGet in 7.4 and this has been a great mechanism for usage and feedback.</p> <p>We are currently exploring options for shipping PSResourceGet inbox in Windows PowerShell 5.1 if this is an important scenario for you please let us know in <a href="https://github.com/PowerShell/PSResourceGet/issues/1437">this GitHub issue</a>.</p> <h2>New Features (compared to PowerShellGet v2)</h2> <p>In addition to addressing long standing bugs and performance, usability and supportability issues, we also added some new features in PSResourceGet 1.0.0. Some of these features include credential persistence, RequiredResource files, and support for more repositories (including nuget v3 repositories). For more information on supported repositories, refer to the section below.</p> <h3>Credential Persistence</h3> <p>This community contributed feature allows you to provide information about where a credential is stored when registering the PSResourceRepository using a <code>-CredentialInfo</code> parameter. This parameter takes a PSCredentialInfo object which takes a Vault name and Secret name. The secret will then be pulled to authenticate to the Repository on future calls. This feature takes advantage of SecretManagement, for more information on SecretManagement refer <a href="https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.secretmanagement/?view=ps-modules">the documentation</a>.</p> <h3>Requirements</h3> <ul> <li>Microsoft.PowerShell.SecretManagement</li> <li>Any vault extension registered (for this example I will use Microsoft.PowerShell.SecretStore)</li> <li>A repository to connect to (for this example I will use Artifactory)</li> </ul> <h3>Getting started</h3> <p>For this example I am going to be using SecretStore to store my credentials for an Artifactory repository. This can be repeated with any SecretManagement extension vault, and with any repository. First, I need to make sure I have a SecretManagement vault set up, with my credential stored.</p> <pre><code>PS C:\Users &gt; Get-SecretInfo Name Type VaultName ---- ---- --------- jFrogCred PSCredential SecretStore</code></pre> <p>Then I can create a PSCredentialInfo object to pass into my PSResourceRepository registration, to create this I pass in the name of the vault and the name of the secret.</p> <pre><code>$credentialInfo = New-Object Microsoft.PowerShell.PSResourceGet.UtilClasses.PSCredentialInfo ("SecretStore", "jfrogCred")</code></pre> <p>Now I am ready to register the repository object, I will pass in a friendly name, a URI for the repository, and the CredentialInfo. I also use the <code>-Trusted</code> switch because I will be controlling what gets published to it.</p> <pre><code>Register-PSResourceRepository -Name artifactory ` -URI " https://&lt;name&gt;.jfrog.io/artifactory/api/nuget/v3/&lt;Repository-Name&gt; -Trusted ` -CredentialInfo $credentialInfo `</code></pre> <p>Now I can run <code>Get-PSResourceRepository</code> to see my registered repositories</p> <pre><code>PS C:\Users &gt; Get-PSResourceRepository Name Uri Trusted Priority ---- --- ------- -------- artifactory https://&lt;name&gt;.jfrog.io/artifactory/api/nuget/v3/&lt;Repository-Name&gt; True 50 PSGallery https://www.powershellgallery.com/api/v2 False 50 </code></pre> <p>If the repository is empty you are going to want to begin by publishing to it. I have saved my API key for publishing to the repository in my SecretStore.</p> <pre><code>Publish-PSResource -Path .\Get-Hello\ -Repository artifactory -ApiKey (Get-Secret jfrogPublish)</code></pre> <p>Now I can find and install PSResources from my repository without needing to provide a credential at each call.</p> <pre><code>PS C:\Users&gt; Find-PSResource -Name Get-Hello -Repository artifactory Name Version Prerelease Repository Description ---- ------- ---------- ---------- ----------- Get-Hello 0.0.2.0 artifactory test module PS C:\Users&gt; Install-PSResource Get-Hello</code></pre> <h3>Using RequiredResources</h3> <p>Install-PSResource can accept a path to a psd1 or json file (using -RequiredResourceFile), or a hashtable or json (using -RequiredResource).</p> <h3>Getting Started</h3> <p>The <code>-RequiredResource</code> parameter can take either a hashtable or a json format string. The following example shows how to format these inputs.</p> <pre><code>Install-PSResource -RequiredResource @{ 'Configuration' = @{ version = '[1.3.1,2.0]' repository = 'PSGallery' } 'Pester' = @{ version = '[4.4.2,4.7.0]' repository = 'PSGallery' prerelease = $true } }</code></pre> <p>In this case the modules named &#8220;Configuration&#8221;, and &#8220;Pester&#8221; will be installed. The json format will be the same as if this hashtable is passed to ConvertTo-Json:</p> <pre><code>"{ 'Pester': { 'allowPrerelease': true, 'version': '[4.4.2,4.7.0]', 'repository': 'PSGallery' }, 'Configuration': { 'version': '[1.3.1,2.0]', 'repository': 'PSGallery' } }"</code></pre> <p>The older System.Version four part version type will be supported to retain compatibility with existing published modules using that format. Declared dependencies are searched and installed using the same trust algorithm as for Install-PSResource.</p> <p>The <code>-RequiredResourceFile</code> parameter can accept either a psd1 or a json file. The psd1 should use the same format as the hashtable above, the json file should use the same format as the json sting above.</p> <h3>Supported Repositories</h3> <p>In this release we made an effort to support repositories which previously worked with PowerShellGet as well as add support for new repositories.</p> <ul> <li>NuGet.org</li> <li>NuGet.Server feeds</li> <li>Azure Artifacts (v2 and v3)</li> <li>GitHub packages</li> <li>Artifactory (v2 and v3 feeds)</li> <li>MyGet.org</li> <li>File-share-based</li> </ul> <p>For more information on how to get started with these repositories, check out <a href="https://learn.microsoft.com/en-us/powershell/gallery/powershellget/supported-repositories?view=powershellget-3.x">our documentation</a>.</p> <p>If a repository you use is not on this list, and does not work with your testing please file an issue and let us know. If issues asking for new repository support get enough community support we will consider adding support.</p> <p>Expect to see new repositories and repository types added to this list in the future.</p> <p>In order to import your repositories from PowerShellGet run the function <code>Import-PSGetRepository</code>.</p> <h3>Other handy features to know about</h3> <ul> <li>You can install to a local path by using <code>Save-PSResource</code> with the <code>-IncludeXML</code> parameter. Note that if you do this you will need to import the module manually or add the path to your PSModulePath environment variable so it can be detected by the PowerShell module import system.</li> <li>You can use aliases for Install-PSResource, Find-PSResource, Update-PSResource, Publish-PSResource (‘isres’,’fdres’,’udres’,’pbres’). Get-PSResource’ is also an alias for ‘Get-InstalledPSResource’.</li> <li>There is now prerelease dependency support. Modules can now take dependencies directly on prerelease modules in the psd1. This includes a change in both publish, and install (note this isn&#8217;t backwards compatible, in the sense that the change has not been also made to install-module).</li> <li>There is now a -Force parameter to Register-PSResourceRepository cmdlet, to override an existing repositories. This allows you to remove a check from scripts to see if the repository already exists before attempting to register.</li> <li>There are now priorities on repositories so that you can specify a preferred repository that a module will be installed from if a module if found in multiple registered repositories. Valid priority values range from 0 to 100. Lower values have a higher priority ranking. The default value is 50, and can be set at registration or later using the set cmdlet. Repositories are sorted by priority then by name. When searching for resources across multiple repositories, the PSResourceGet cmdlets search the repositories using this sort order.</li> <li>We added a <code>-TrustRepository</code> switch on Install-PSResource if you know the repository is trusted for a particular call and do not want to be prompted without needing to set the entire repository to be trusted.</li> </ul> <p>To explore the full cmdlet interface, and feature set check out <a href="https://learn.microsoft.com/powershell/module/microsoft.powershell.psresourceget/?view=powershellget-3.x">the module documentation</a>.</p> <h2>When to use PowerShellGet v2/v3</h2> <p>If you aren&#8217;t ready to update all of your scripts to the new cmdlets (that can be a big task), PowerShellGet, and the existing cmdlet interface, is still there for you to use.</p> <p>In order to bridge the gap between PowerShellGet v2 (the current latest stable PowerShellGet is 2.2.5), and PSResourceGet we introduce a compatibility layer for PSResourceGet and are shipping it as PowerShellGet v3. This module is currently in a preview state and working towards a GA.</p> <p>In the latest preview of <a href="https://www.powershellgallery.com/packages/PowerShellGet/3.0.22-beta22">PowerShellGet (3.0.22-beta22)</a>, the PowerShellGet syntax is the same, but it is actually a proxy function for PSResourceGet and uses the new engine. This is to allow users to take advantage of some of the bug fixes/performance improvements without needing to update their scripts, or have scripts unexpectedly break at module or PowerShell update time.</p> <p>Given these three modules the current recommendation would be to use PSResourceGet for new scripts, or if you want to take advantage of new features and use the newest/most supported version of the module. If you are able to use prerelease versions, or are willing to test out PowerShellGet v3 (the compat layer), we really appreciate all testing for this so we can make changes before this reaches GA. Once PowerShellGet v3 reaches GA, this would be the recommended version for old scripts which you may not want to update, but may want to use a more supported module for (in terms of bug fixes from the team), and thereby take advantage of bug fixes/performance updates. Note that PowerShellGet v3 will be focused on backwards compatibility and not adoption of new features (although there may be incidental new features).</p> <p>Finally, if everything is working totally great for you on PowerShellGet v2 you are free to continue to use it. Nothing has changed about the extent to which it is supported.</p> <p>In PowerShell 7.5 expect to see PowerShellGet version incremented to a v3 version.</p> <h2>Future plans for PSResourceGet</h2> <p>We plan to continue to release updates to PSResourceGet beginning with a patch release including bug fixes that didn&#8217;t quite make the GA timeline and that are found after release. Look out for a feature release in the coming months.</p> <p>To track progress towards these releases, and see what bugs/features are being worked on use the <a href="https://github.com/PowerShell/PSResourceGet/projects?type=classic">projects feature in the PSResourceGet repository</a>.</p> <h2>How to give feedback and get support</h2> <p>We cannot overstate how useful user feedback has been in the development of this module.</p> <p>In order to give feedback or get support please open issues in our <a href="https://github.com/powershell/psresourceget">GitHub repository</a>.</p> <h2>Special thanks to those who made this release happen</h2> <p>The biggest thanks go to the developers who spent so much time on this module, and took so much care to make it an improved user experience:</p> <ul> <li>Amber Erickson</li> <li>Anam Navied</li> <li>Aditya Patwardhan</li> </ul> <p>Thank you to our engineering manager Steve Lee for his support along this whole journey.</p> <p>Thank you also to both Steven Bucher and Michael Greene for taking over as PM during periods when I had to step away from work over the last four years.</p> <p>Thank you to Sean Wheeler for his thoughtful testing, and his essential contributions to the module by writing the documentation.</p> <p>Thank you to every community member who has tested this module over the years, and provided such valuable feedback to shape the design. In particular, a few community members contributions stand out for either contributing code or the sheer quality of issues they have opened, thank you to:</p> <ul> <li>@ThomasNieto</li> <li>@FriedrichWeinmann</li> <li>@cansuerdogan</li> <li>@fsackur</li> <li>@hemisphera</li> </ul> <p>This was a community effort&#8211; I look forward to seeing the bugs filed and to the next patch release, Sydney</p> <p>The post <a href="https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/">PSResourceGet is generally available</a> appeared first on <a href="https://devblogs.microsoft.com/powershell">PowerShell Team</a>.</p> ]]></content:encoded> <wfw:commentRss>https://devblogs.microsoft.com/powershell/psresourceget-is-generally-available/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>

Pages: 1 2 3 4 5 6 7 8 9 10