{"id":19775,"date":"2022-11-09T06:37:10","date_gmt":"2022-11-09T14:37:10","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powershell\/?p=19775"},"modified":"2022-11-09T06:37:10","modified_gmt":"2022-11-09T14:37:10","slug":"powershell-7-3-general-availability","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/powershell-7-3-general-availability\/","title":{"rendered":"PowerShell 7.3 General Availability"},"content":{"rendered":"<p>We&#8217;re proud to announce the general availability of <a href=\"https:\/\/github.com\/PowerShell\/PowerShell\/releases\/tag\/v7.3.0\">PowerShell 7.3<\/a>!\nPowerShell 7.3 is built on top of <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-dotnet-7\/\">.NET 7<\/a> and as a non-LTS (Long Term Support) release will be supported for 18 months.\nPowerShell 7.2 is still the current LTS (3-year supported) release of PowerShell.<\/p>\n<h2>How do I get it?<\/h2>\n<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>.\nIf you had installed the previous PowerShell 7 stable release (7.2) via the Windows Store,\nyou will be automatically updated to 7.3 GA.\nHowever, if you installed the MSI and chose to be updated via <a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/install\/microsoft-update-faq\">Microsoft Update<\/a>, since 7.2 is a LTS release,\nyou will not be automatically upgraded to 7.3 and needs to be manually installed.<\/p>\n<h2>What&#8217;s new?<\/h2>\n<p>You can see a <a href=\"https:\/\/www.youtube.com\/watch?v=IWbSrF3VMRM\">video of demos<\/a> I presented at this year&#8217;s <a href=\"https:\/\/psconf.eu\/psconfeu-minicon\/\">PSConfEU minicon<\/a>.\nIt covers some of the major changes including new features and important bug fixes.\nLots of the work presented were contributions fromm the community!<\/p>\n<h2>Known issues<\/h2>\n<p>We found a last minute issue that should not affect most users that we will fix in an expected 7.3.1 release in December.\nDue to an issue with our framework dependent package to be included with the <a href=\"https:\/\/hub.docker.com\/_\/microsoft-dotnet-sdk\">.NET SDK Docker images<\/a>,\nthe .NET 7 GA SDK image will still have PowerShell 7.3-rc.1 included.\nThis should not have any functional impact to users and we expect to update the image with PowerShell 7.3 GA in December.<\/p>\n<h2>Focus on the shell<\/h2>\n<p>The major theme for this release is focusing on making PowerShell 7 a great shell environment.\nHere, &#8220;native command&#8221; means an executable that is not a PowerShell cmdlet or function.<\/p>\n<h3>Improvement to native command argument passing<\/h3>\n<p>Windows and Linux\/macOS have fundamental differences in how native command arguments are handled specifically when quotes are involved.\nWe added a new feature <a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/learn\/experimental-features#psnativecommandargumentpassing\"><code>$PSNativeCommandArgumentPassing<\/code><\/a>\nto control how PowerShell passes arguments to native commands.\nThe default behavior for Windows and Linux\/macOS should work as most users expect in their respective environments.<\/p>\n<p>Another area to make native commands work more like cmdlets is error handling.\nUnlike cmdlets, native commands use their exit code to convey success or failure.<\/p>\n<h3>Consistency in error handling for native commands<\/h3>\n<p>Although <a href=\"https:\/\/learn.microsoft.com\/cpp\/c-runtime-library\/stdin-stdout-stderr\"><code>stderr<\/code><\/a> is often used for error messages,\nit is also used for progress, information, warnings, etc. because native commands don&#8217;t have the rich streams that PowerShell cmdlets have.\nAlthough a non-zero exit code does NOT always indicate an error, the convention for native commands is that a non-zero exit code typically indicates an error.<\/p>\n<p>A new feature <a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/learn\/experimental-features#psnativecommanderroractionpreference\"><code>$PSNativeCommandUseErrorActionPreference<\/code><\/a>\nallows you to have PowerShell treat a non-zero exit code as an error.\nThis means that you can set <a href=\"https:\/\/learn.microsoft.com\/powershell\/module\/microsoft.powershell.core\/about\/about_preference_variables#erroractionpreference\"><code>$ErrorActionPreference<\/code><\/a>\nto <code>Stop<\/code> and have PowerShell stop execution whether a cmdlet had an error or a native command had a non-zero exit code.<\/p>\n<p>This simplifies scripts that previously would have to check <a href=\"https:\/\/learn.microsoft.com\/powershell\/module\/microsoft.powershell.core\/about\/about_automatic_variables#lastexitcode\"><code>$LASTEXITCODE<\/code><\/a>\nafter execution of a native command or wrap it in a helper function.<\/p>\n<h2>What&#8217;s next?<\/h2>\n<p>PowerShell 7.4 will be our next LTS release and expected to be built on .NET 8 for next year.\nWe&#8217;ll have a separate blog post early next year to discuss the investments of the PowerShell\/OpenSSH team for 2023.\nWe 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>,\nand look forward to your continued feedback and contributions!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>General availability of PowerShell 7.3<\/p>\n","protected":false},"author":66121,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[248],"class_list":["post-19775","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-powershell"],"acf":[],"blog_post_summary":"<p>General availability of PowerShell 7.3<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/19775","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\/66121"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=19775"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/19775\/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=19775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=19775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=19775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}