次の方法で共有


PowerShell 7.4 の新機能

PowerShell 7.4.7 には、次の機能、更新プログラム、重大な変更が含まれています。 PowerShell 7.4.7 は .NET 8.0.12 上に構築されています。

変更の完全な一覧については、GitHub リポジトリの CHANGELOG を参照してください。

重大な変更

  • Nano Server Docker イメージは、このリリースでは使用できません
  • ProgressAction パラメーターを共通パラメーターに追加しました
  • 引数が空の文字列である場合に ArgumentNullException ではなく ArgumentException をスローするように一部の PowerShell API を更新 (#19215) (@xtqqczze!) に感謝
  • #requires -pssnapin に関連するコードを削除する (#19320)
  • Test-Json では、Newtonsoft.Json.Schema の代わりに JsonSchema.NET が使用されるようになりました。
    • この変更により、Test-Json は以前の Draft 4 スキーマをサポートしなくなりました。 (#18141)(@gregsdennis!)に感謝. JSON スキーマの詳細については、JSON スキーマ ドキュメント 参照してください。 これにより、コメント付きの JSON ファイルと JSONC ファイルの Test-Json も中断されます。
    • ConvertFrom-Json サポートでは引き続き Newtonsoft.Json.Schema が使用されるため、コメント付きの JSON ファイルを変換できます。
  • Test-Connection からの出力に、TCP 接続テストに関する詳細情報が含まれるようになりました
  • .NET では、Test-Connectionに影響を与える変更が導入されました。 このコマンドレットは、カスタム バッファー サイズ (#20369) を使用するときに Linux プラットフォームで sudo を使用する必要性に関するエラーを返すようになりました
  • 試験的機能 PSNativeCommandPreserveBytePipe が正式機能になりました。 PowerShell では、ネイティブ コマンドの stdout ストリームをファイルにリダイレクトするとき、またはバイト ストリーム データをネイティブ コマンドの stdin ストリームにパイプするときに、バイト ストリーム データが保持されるようになりました。
  • RelativeBasePath パラメーター (#19755) を使用する場合の Resolve-Path の相対パスの処理方法を変更します (ありがとうございます @MartinGC94!))
  • 未使用の PSv2 コードを削除する - TabExpansion 関数を削除します (#18337)

インストーラーの更新

Windows MSI パッケージでは、インストール中に PowerShell テレメトリを無効にするオプションが提供されるようになりました。 詳細については、「コマンド ラインから msi パッケージをインストールする」を参照してください。

PSResourceGet と PSReadLine の更新バージョン

PowerShell 7.4 には、Microsoft.PowerShell.PSResourceGet v1.0.1 が含まれています。 このモジュールは、PowerShellGet v2.2.5 と PackageManagement v1.4.8.1 と並べてインストールされます。 詳細については、Microsoft.PowerShell.PSResourceGetのドキュメントを参照してください。

PowerShell 7.4 には、PSReadLine v2.3.4 が含まれるようになりました。 詳細については、PSReadLineのドキュメントを参照してください。

タブ補完の機能強化

タブ補完を改善するすべての作業について、@MartinGC94 および他の皆さんに感謝いたします。

  • 空の配列式 (#18355) を使用してスクリプトの最初のコマンドを完了するときの問題を修正します
  • 位置引数の補完を修正しました (#17796)
  • 位置引数を完了するときに既定のパラメーター セットに優先順位を付ける (#18755)
  • 動的パラメーターの擬似バインディングを改善する (#18030)
  • ハッシュテーブル キーの型推論を改善する (#17907)
  • 空の return ステートメントの型推論エラーを修正しました (#18351)
  • Get-Random の型推論を改善する (#18972)
  • すべてのスコープ変数の型推論を修正しました (#18758)
  • パイプラインで推論された型の列挙を改善する (#17799)
  • 列挙型を比較するときに比較に値の補完を追加 (#17654)
  • 列挙型のプロパティ割り当ての補完を追加 (#19178)
  • PSCustomObject 変数プロパティの補完を修正 (#18682)
  • 属性引数のメンバー補完を修正しました (#17902)
  • 完了結果から冗長パラメーターエイリアスを除外する (#19382)
  • 基底型を持つクラスのクラスメンバーの補完を修正する (#19179)
  • キーワードを使用するための補完機能の追加 (#16514)
  • 変数を完了するときに TabExpansion2 変数リークを修正する (#18763)
  • ScriptBlock スコープ間で変数の完了を有効にする (#19819)
  • foreach ステートメント変数 (#19814) の完了を修正しました
  • 変数型の推論の優先順位を修正しました (#18691)
  • PowerShell 列挙型クラスのメンバー補完を修正しました (#19740)
  • メソッド呼び出しでのインデックス式の配列リテラルの解析を修正しました (#19224)
  • パス補完を改善する (#19489)
  • 空のスクリプト入力に対する CompleteInput でのインデックス作成の範囲外のエラーを修正しました (#19501)
  • 可変完了パフォーマンスの向上 (#19595)
  • 型の制約付き変数の割り当て、入れ子になったハッシュテーブルなどのハッシュテーブル キー補完の向上 (#17660)
  • 外部アプリケーションの出力を文字列として推論する (#19193)
  • ValidateRange属性で許可されていない値を除外するために、列挙型のパラメーター補完を更新する (#17750) (@fflaten!)に感謝)。
  • 動的パラメーター補完の修正 (#19510)
  • Data ステートメントによって割り当てられた変数の補完を追加します (#19831)
  • ネイティブ コマンド (#21529) によるユース ケースの破損を防ぐために、Windows システムでのチルダ (~) の展開を $home に修正しました

Web コマンドレットの機能強化

Web コマンドレットの改善に関するすべての作業に対して、@CarloToso やその他のユーザーに感謝します。

  • Brotli を含むように Web コマンドレットの解凍を修正する (#17955) (@iSazonov!)に感謝
  • Webcmdlets は、リダイレクト コードと小さなクリーンアップに 308 を追加します (#18536)
  • ダウンロードが完了またはキャンセルされたときに、Invoke-WebRequest で進行状況バーのレンダリングを完了します (#18130)
  • Web コマンドレットは、状態コードが 429 (#18717) の場合、応答ヘッダーから Retry-After 間隔を取得します。
  • Web コマンドレットで既定の文字セット エンコードを UTF8 に設定する (#18219)
  • WebSession.MaximumRedirection を変更されないように維持する (#19190)
  • WebCmdlets は XML 宣言を解析してエンコード値を取得します (存在する場合)。 (#18748)
  • エンコードなしの webcmdlets での xml -Body の使用を修正しました (#19281)
  • Put メソッドの動作を、WebCmdlets の既定のコンテンツ タイプの POST 1 に調整する (#19152)
  • WebCmdlets のヘッダーからの ContentType を考慮する (#19227)
  • -PreserveHttpMethodOnRedirect を Web コマンドレットに追加して、元の HTTP メソッドを保持できるようにします (#18894)
  • Webcmdlets で https から http へのリダイレクトにエラーが表示される (#18595)
  • AllowInsecureRedirect スイッチを Web コマンドレットに追加する (#18546)
  • コンテンツの長さが不明な場合の Web コマンドレットの詳細メッセージを改善する (#19252)
  • Invoke-WebRequest の応答からのリンクの相対 URI を作成します (#19092)
  • WebCmdlets での -CustomMethod POST のリダイレクトを修正しました (#19111)
  • Webcmdlets で以前の応答を破棄する (#19117)
  • xml および json のエラー形式 Invoke-WebRequest 改善する (#18837)
  • WebCmdlets の OutFile および InFile パラメーターに ValidateNotNullOrEmpty を追加します (#19044)
  • HttpKnownHeaderNames ヘッダーリストの更新 (#18947)
  • コンマを含むリンクを修正 Invoke-RestMethod -FollowRelLink (#18829)
  • Web コマンドレットでのリダイレクトと KeepAuthorization の管理に関するバグを修正しました (#18902)
  • StatusCode を HttpResponseException (#18842) に追加する
  • Web コマンドレット (#19249) での HTTP 永続的接続のサポート (@stevenebutler!) に感謝
  • 小さなクリーンアップ Invoke-RestMethod (#19490)
  • 正しい HTTP バージョンを表示するように WebCmdlets の詳細メッセージを改善する (#19616)
  • FileNameStar を WebCmdlets の MultipartFileContent に追加する (#19467)
  • WebCmdlets の HTTP ステータスコードを 409 から 429 に修正し、Retry-After ヘッダーから再試行間隔を取得します。 (#19622)(@mkht!) に感謝
  • -TimeoutSec-ConnectionTimeoutSeconds に変更し、web コマンドレットに -OperationTimeoutSeconds を追加します (#19558) 。その他のコマンドレット @stevenebutler!) に感謝します
  • WebCmdlets でデータ読み取り中に接続がハングした場合、Ctrl+c キーをサポートする (#19330) (@stevenebutler!)に感謝)
  • WebCmdlets での Unix ドメイン ソケットのサポート (#19343)

その他のコマンドレットの機能強化

  • Test-Connection、カスタム バッファー サイズ (#20369) を使用するときに Linux プラットフォームで sudo を使用する必要性に関するエラーが返されるようになりました
  • Format コマンド (#18746) に出力の種類を追加します。ありがとう @MartinGC94!)
  • Get-WinEvent (#17948) の出力型属性を追加します (ありがとうございます @MartinGC94!))
  • Test-Json コマンドレットに PathLiteralPath パラメーターを追加 (#19042) (@ArmaanMcleod!) に感謝
  • コマンドレット (#19108) に NoHeader パラメーターを ConvertTo-CsvExport-Csv に追加します (ありがとう @ArmaanMcleod!))
  • Confirm パラメーターと WhatIf パラメーターを Stop-Transcript に追加 (#18731) (感謝します @JohnLBevan!)
  • FuzzyMinimumDistance パラメーターを Get-Command に追加します (#18261)
  • Encoding パラメーターを使用して PowerShell で ANSI エンコードを実行できるようにする (#19298) (@CarloToso!) に感謝
  • Copy-Item に進行状況を追加する (#18735)
  • Update-Help、米国以外のシステムで暗黙的なカルチャを使用するときにエラーが報告されるようになりました。 (#17780)(@dkaszews!) に感謝
  • 完了した進行状況レコードを作成するとき、アクティビティを不要にする (#18474) (@MartinGC94!)に感謝)
  • Get-Content コマンドレットのパラメーター -Head-Tail に対して負の値を許可しません (#19715) (感謝 @CarloToso!))
  • 現在のカルチャが言語に関連付けられていない場合、 適切なエラーをスローする (#19765Update-Help) (@josea!)に感謝)
  • -Skip パラメーターと -SkipLast パラメーターを Select-Object コマンドレットで組み合わせることを許可します。 (#18849)(@ArmaanMcleod!) に感謝
  • コマンドレット Get-SecureRandom 追加 (#19587)
  • リモート使用用 Set-Clipboard -AsOSC52 (#18222)、@dkaszews!) に感謝
  • 相対パスの解決を高速化 (Resolve-Path) (#19171) (@MartinGC94!) に感謝して)
  • switch パラメーター -CaseInsensitiveSelect-Object コマンドレットと Get-Unique コマンドレット (#19683) に追加しました (Thanks @ArmaanMcleod!))
  • unix で sudo を使用して実行していない場合、Restart-ComputerStop-Computer はエラーで失敗します (#19824)

エンジンの機能強化

$PSStyle の更新

  • Dim プロパティと DimOff プロパティを追加します (#18653)
  • 静的メソッドを PSStyle クラスに追加し、前景と背景の ConsoleColor 値を ANSI エスケープシーケンスにマップしました (#17938)
  • 計算フィールドのテーブル ヘッダーは、既定で斜体で書式設定されます
  • リモート ホスト (#19601) での $PSStyle.OutputRendering の尊重のサポートを追加します
  • CrescendoBuilt モジュールの使用を含むようにテレメトリ データを更新しました (#20371)

その他のエンジンの更新

  • NoRunspaceAffinity 属性を宣言するときに PowerShell クラスを Runspace に関連付けないようにする (#18138)
  • ValidateNotNullOrWhiteSpace 属性 (#17191) を追加します (@wmentha!) に感謝します
  • レガシ引数渡しの sqlcmd をリストに追加します (#18559)
  • 関数 cd~ (#18308) を追加します (@GigaScratch!) に感謝します
  • ジェネリック型 (#19205) での配列型の解析を修正しました (@MartinGC94!) に感謝します
  • デバイス パスのルートでのワイルドカードのグロブを修正する (#19442) (@MartinGC94!)に感謝
  • PSModulePath 要素の場所を取得するためのパブリック API を追加する (#19422)
  • 型変換に対する不適切な文字列の修正 (#19560) (@MartinGC94!) に感謝
  • 多数のブレークポイントが使用されている場合の実行速度が低下する問題を修正 (#14953) (ありがとうございました @nohwnd!))
  • #requires -pssnapin に関連するコードを削除する (#19320)

試験的な機能

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

  • PSFeedbackProvider - ハードコーディングされた提案フレームワークを拡張可能なフィードバック プロバイダーに置き換えます。
    • この機能では、フィードバック メッセージの書式設定を変更できる $PSStyle.Formatting に、FeedbackNameFeedbackText、および FeedbackAction プロパティも追加されます。
  • PSModuleAutoLoadSkipOfflineFiles - モジュールの検出で、クラウド プロバイダーによって完全にディスク上にないとしてマークされているファイルがスキップされるようになりました。
  • PSCommandWithArgs - コマンドに引数を 1 つの文字列として渡すためのサポートを追加

次の実験機能が主流になりました。

PowerShell 7.4 では、次の試験的な機能が変更されました。

  • PSCommandNotFoundSuggestion - この機能では、ハードコーディングされた提案ではなく拡張可能なフィードバック プロバイダーが使用されるようになりました (#18726)

試験的特徴の詳細については、「試験的特徴を使用する 」を参照してください。