PowerShell 7.3 の新機能

PowerShell 7.3 は、.NET 7.0 上に構築された次の安定版リリースです。

PowerShell 7.3 には、次の機能、更新、破壊的変更が含まれています。

破壊的変更と機能強化

  • Windows API は、このリリースでは、コンプライアンスのために更新または削除されました。つまり、PowerShell 7.3 は Windows 7 では実行できません。 Windows 7 はサポート対象外となりましたが、以前のビルドは Windows 7 で実行できます。
  • PowerShell Direct for Hyper-V は、Windows 10 バージョン 1809 以降でのみサポートされています。
  • .NET 7 の意図的な破壊的変更により、Test-Connection が中断されます。 これは #17018 によって追跡されています
  • beginprocess、および end に対するピアとして clean ブロックをスクリプト ブロックに追加して簡単なリソース クリーンアップを可能にする (#15177)
  • $PSStyle.OutputRendering の既定値を Host に変更
  • Out-StringOut-File で文字列入力を変更せずに維持 (#17455)
  • System.Security.AccessControl.ObjectSecurity の型データ定義を Microsoft.PowerShell.Security モジュールに移動 (#16355) (感謝します @iSazonov!)
    • この変更の前は、ユーザーは System.Security.AccessControl.ObjectSecurity のインスタンスに対して定義されたコード プロパティを使用するために、Microsoft.PowerShell.Security モジュールを明示的にインポートする必要はありません。
    • この変更の後は、ユーザーはそれらのコード プロパティとコード メソッドを使用するために、Microsoft.PowerShell.Security モジュールを明示的にインポートする必要があります。

タブ補完の改善

  • PowerShell 7.3 には、既定で予測 IntelliSense を有効にする PSReadline 2.2.6 が含まれています。 詳細については、「about_PSReadLine」を参照してください。
  • ValidateScriptAttribute に対して指定されたスクリプト ブロック内でのタブ補完を修正 (#14550) (感謝します @MartinGC94!)
  • break/continue 後のループ ラベルのタブ補完を追加 (#16438) (感謝します @MartinGC94!)
  • 複数のシナリオでの Hashtable 補完の改善 (#16498) (感謝します @MartinGC94!)
    • パラメーター スプラッティング
    • Invoke-CimMethodArguments パラメーター
    • Get-WinEventFilterHashtable パラメーター
    • CIM コマンドレットの Property パラメーター
    • メンバー補完シナリオから重複を削除
  • ネットワーク共有 (UNC パス) 補完でのスラッシュのサポート (#17111) (感謝します @sba923!)
  • メンバーのオートコンプリートを改善 (#16504) (感謝します @MartinGC94!)
  • パラメーターの列挙型よりも ValidateSet の補完を優先する (#15257) (感謝します @MartinGC94!)
  • 型パラメーターを持つジェネリック メソッドの型の推定のサポートを追加 (#16951) (感謝します @MartinGC94!)
  • 型の推定とコンプリートを改善 (#16963) (感謝します @MartinGC94!)
    • ForEach-Object -MemberName のコンプリート結果にメソッドを表示できるようにする
    • ([void]("")) などの void を返す式でのコンプリートを禁止
    • クラス コンプリートが AST に基づいているときに、既定以外のクラスのコンストラクターを表示できるようにする
  • $_ の型の推定を改善 (#17716) (感謝します @MartinGC94!)
  • ICollection の型の推定を修正 (#17752) (感謝します @MartinGC94!)
  • 変数を補完するときに中かっこが削除されないようにする (#17751) (感謝します @MartinGC94!)
  • ディクショナリのインデックス式の補完を追加 (#17619) (感謝します @MartinGC94!)
  • 属性トークンの型の補完を修正 (#17484) (感謝します @MartinGC94!)
  • 動的パラメーター タブの補完を改善 (#17661) (感謝します @MartinGC94!)
  • 値の前のパラメーターを補完するときに位置指定パラメーターをバインドしないようにする (#17693) (感謝します @MartinGC94!)

エラー処理を改善しました

  • リダイレクションによりコマンド式用に $? を正しく設定 (#16046)
  • $PSNativeCommandUseErrorActionPreference を使用した場合のキャスト エラーを修正 (#15993)
  • ネイティブ コマンドのエラー処理で必要に応じて ErrorActionPreference を優先させる (#15897)
  • 0 以外の終了コード ErrorRecord 用に TargetObject として実行可能ファイルのパスを指定 (#16108) (感謝します @rkeithhill!)

セッションとリモート処理の機能強化

  • SSH コマンド経由で PSRP に -Options を追加し、OpenSSH オプションを直接渡せるようにする (#12802) (感謝します @BrannenGH!)
  • .pssc ファイルで定義されたセッション構成で新しいプロセスを開始できるように、pwsh-ConfigurationFile パラメーターを追加 (#17447)
  • Windows 以外のプラットフォームでの New-PSSessionConfigurationFile の使用のサポートを追加 (#17447)

更新されたコマンドレット

  • -HttpVersion パラメーターを Web コマンドレットに追加 (#15853) (感謝します @hayhay27!)
  • 自由形式の入力タグの Web コマンドレットにサポートを追加 (#16193) (感謝します @farmerau!)
  • 最大 100 を許可するように ConvertTo-Json -Depth を修正 (#16197) (感謝します @KevRitchie!)、@rkeithhill!)
  • $using: 式を使用して Invoke-Command を呼び出す際の変数処理を改善 (#16113) (感謝します @dwtaber!)
  • コマンドをローカルで呼び出すときに厳格モードを指定できるように Invoke-Command-StrictMode を追加 (#16545) (感謝します @Thomas-Yu!)
  • beginprocess、および end に対するピアとして clean ブロックをスクリプト ブロックに追加して簡単なリソース クリーンアップを可能にする (#15177)
  • -Amended スイッチを Get-CimClass コマンドレットに追加 (#17477) (感謝します @iSazonov)
  • 順序付きハッシュテーブルを使用するように ConvertFrom-Json -AsHashtable を変更 (#17405)
  • Out-GridView に送信する前の文字列内の ANSI エスケープ シーケンスを削除 (#17664)
  • New-TimeSpanミリ秒パラメーターを追加 (#17621) (感謝します @NoMoreFood!)
  • メソッド定義とオーバーロードを表示するときに省略可能なパラメーターを表示 (#13799) (感謝します @eugenesmlv!)
  • 現在の作業ディレクトリが存在しなくなった場合でもコマンドの実行を許可 (#17579)
  • Set-AuthenticodeSignature -TimeStampServer での HTTPS のサポートを追加 (#16134) (感謝します @Ryan-Hutchison-USAF!)
  • 現在のカルチャを使用してテーブル内の 10 進数をレンダリング (#17650)
  • OrderedDictionary に対して順序付けされた型アクセラレータを追加 (#17804) (感謝します @fflaten!)
  • Windows の従来の引数バインド動作に find.exe を追加 (#17715)
  • pwsh に -noprofileloadtime スイッチを追加 (#17535) (感謝します @rkeithhill!)

詳細な変更一覧については、GitHub リポジトリの変更ログを参照してください。

試験的な機能

PowerShell 7.3 では、次の試験的な機能がメインストリームになりました。

  • PSAnsiRenderingFileInfo - この機能により、$PSStyle.FileInfo メンバーが追加され、特定のファイルの種類の色分けが有効になります。

  • PSCleanBlock - beginprocess、および end に対するピアとして、clean ブロックをスクリプト ブロックに追加して、簡単なリソース クリーンアップを可能にします。

  • PSAMSIMethodInvocationLogging - 検査のために AMSI に送信されるデータを拡張して、.NET メソッド メンバーのすべての呼び出しを含めます。

  • PSNativeCommandArgumentPassing - ネイティブの実行可能ファイルを呼び出すとき、PowerShell により、文字列を再構築する古いメカニズムではなく、StartProcessInfo オブジェクトの ArgumentList プロパティが使用されるようになりました。

    PowerShell 7.3.1 では、引数渡しの Legacy スタイルを使用する Windows のネイティブ コマンドのリストに sqlcmd.exe が追加されます。

  • PSExec - 新しい Switch-Process コマンドレット (別名 exec) を追加して、Windows 以外のシステムに exec との互換性を提供します。

    PowerShell 7.3.1 では、exec エイリアスが Switch-Process をラップする関数に変更されました。 関数を使用すると、WithCommand パラメーターに誤ってバインドされている可能性のあるパラメーターをネイティブ コマンドに渡すことができます。

PowerShell 7.3 では、次の試験的な機能が導入されています。

  • PSNativeCommandErrorActionPreference - ネイティブ コマンドによって生成されたエラーを PowerShell エラーとすることができるようにするために、$PSNativeCommandUseErrorActionPreference 変数を追加します。

PowerShell 7.3 では、次の試験的な機能が削除されました。

  • 試験的な機能 PSNativePSPathResolution はサポートされなくなりました。
  • 試験的な機能 PSStrictModeAssignment はサポートされなくなりました。

試験的な機能の詳細については、試験的機能の使用に関するページを参照してください。