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
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
コマンドレットに Path と LiteralPath パラメーターを追加 (#19042) (@ArmaanMcleod!) に感謝- コマンドレット (#19108) に NoHeader パラメーターを
ConvertTo-Csv
とExport-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!))- 現在のカルチャが言語に関連付けられていない場合、 適切なエラーをスローする (#19765
Update-Help
) (@josea!)に感謝) -Skip
パラメーターと-SkipLast
パラメーターをSelect-Object
コマンドレットで組み合わせることを許可します。 (#18849)(@ArmaanMcleod!) に感謝- コマンドレット
Get-SecureRandom
追加 (#19587) - リモート使用用
Set-Clipboard -AsOSC52
(#18222)、@dkaszews!) に感謝 - 相対パスの解決を高速化 (
Resolve-Path
) (#19171) (@MartinGC94!) に感謝して) - switch パラメーター
-CaseInsensitive
をSelect-Object
コマンドレットとGet-Unique
コマンドレット (#19683) に追加しました (Thanks @ArmaanMcleod!)) - unix で sudo を使用して実行していない場合、
Restart-Computer
とStop-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
に、FeedbackName、FeedbackText、および FeedbackAction プロパティも追加されます。
- この機能では、フィードバック メッセージの書式設定を変更できる
- PSModuleAutoLoadSkipOfflineFiles - モジュールの検出で、クラウド プロバイダーによって完全にディスク上にないとしてマークされているファイルがスキップされるようになりました。
- PSCommandWithArgs - コマンドに引数を 1 つの文字列として渡すためのサポートを追加
次の実験機能が主流になりました。
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 では、次の試験的な機能が変更されました。
- PSCommandNotFoundSuggestion - この機能では、ハードコーディングされた提案ではなく拡張可能なフィードバック プロバイダーが使用されるようになりました (#18726)
試験的特徴の詳細については、「試験的特徴を使用する
PowerShell