PowerShellのConvertTo-Jsonで階層が欠ける? ― Depthを2と5で比べる

PowerShellカテゴリを表すパンダのイラスト PowerShell

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのConvertTo-Json仕様を確認し、深いオブジェクトをJSONへ変換するときのDepthを安全なダミーデータで比べます。この記事作成時にはPowerShell実行を行っていません。

検証ステータス:📘 公式仕様確認済み・PowerShell実行未確認
情報確認日:2026年10月2日。

API用JSONで期待した階層にならないとき、ConvertTo-JsonのDepthを確認します。

入れ子を作る

$data = [pscustomobject]@{
 Name = 'demo'
 Settings = [pscustomobject]@{
  Network = [pscustomobject]@{
   Proxy = [pscustomobject]@{ Enabled = $false; Port = 8080 }
  }
 }
}
$data | ConvertTo-Json -Depth 2
$data | ConvertTo-Json -Depth 5

Microsoft LearnではDepthの既定値は2です。指定したDepthを超える入力について警告される場合があります。

再読込して確認する

$json = $data | ConvertTo-Json -Depth 5
$check = $json | ConvertFrom-Json
$check.Settings.Network.Proxy.Port

8080が辿れるかを見ます。

1か所変える

Depthを3へ変え、出力と警告を比較します。

flowchart TD
 A["Object"] --> B["ConvertTo-Json"]
 B --> C{"Depth十分?"}
 C -->|Yes| D["必要階層"]
 C -->|No| E["警告/表現を確認"]

仕事で使うなら

Depthをむやみに最大へせず、APIが必要とする構造を把握して十分な値を指定します。

なぜDepthがAPI障害につながるのか

PowerShell上のobjectが正しく見えていても、APIへ渡す直前にはJSONという別の表現へserializeされます。ここで必要な階層まで表現できていなければ、「PowerShellでは値があるのに、送信先では設定が欠ける」という切り分けにくい障害になります。

そこで送信前にJSON文字列を見るだけでなく、一度ConvertFrom-Jsonで戻して、必要なpropertyまで辿れるか確認します。Depthを大きくすれば常に正解というより、API contract上必要な深さを把握して、その構造が保持されていることを確認するのがポイントです。

公式情報・一次情報

GitHubサンプル

文書情報

記事タイトル
PowerShellのConvertTo-Jsonで階層が欠ける? ― Depthを2と5で比べる
作成日
更新日
Source URL
https://papanda925.com/?p=17500

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました