PowerShell JSON – 例付きガイド

JSON (Javascript Object Notation) は、データを簡単に保存、読み取り、書き込みするために使用される軽量のデータ交換形式です。 使用 @{} オブジェクトおよび配列として PowerShell で JSON 変数を作成するための表記法。

PowerShell では、ConvertTo-Json コマンドレットが ps オブジェクトを JSON に変換し、ConvertFrom-Json コマンドレットが JSON データを変数に解析します。

Advertisement

この記事では、JSON オブジェクトの作成、JSON データの変数への解析、PowerShell オブジェクトの JSON への変換、PowerShell での JSON データの操作など、PowerShell で JSON 変数を操作する方法について説明します。

PowerShell での JSON 変数の作成

PowerShell では、JSON 変数をオブジェクトおよび配列として作成できます。

JSON オブジェクトの作成

使用 @{} PowerShell で JSON 文字列を作成するための表記法。 プロパティと値のペアで文字列を初期化します。

$jsonString = @"
{ "Name": "Tom", "Age": 27, "Address": { "Country": "India" }
}
"@
$jsonObject = ConvertFrom-Json $jsonString
# Print the JSON object
Write-Host $jsonObject
# Print the properties in the JSON object
Write-Host $jsonObject.Name

上記の PowerShell スクリプトでは、JSON 文字列は here-string 構文 (@” と “@) を使用すると、複数行の文字列を作成できます。 変数 $jsonString は、プロパティとネストされたオブジェクトを持つオブジェクトを含む JSON 文字列を保持します。

Advertisement

私たちは、 ConvertFrom-Json $jsonString 変数を PowerShell オブジェクトに変換し、変換されたオブジェクトを $jsonObject 変数に格納するコマンドレット。

$jsonObject 変数は、JSON のプロパティと値にアクセスするために使用されます。

JSON 変数と JSON オブジェクトを作成した後の上記の PowerShell スクリプトの出力は、JSON オブジェクトの「Name」プロパティの値をコンソールに出力することです。

@{Name=Tom; Age=27; Address=}
Tom

JSON 配列の作成

使用 @{} PowerShell で JSON 配列を作成するための表記。 文字列を複数行の文字列で初期化します。

$jsonString = @"
[ { "Name": "Tom", "Age": 30 }, { "Name": "Harry", "Age": 25 }
]
"@
$jsonArray = ConvertFrom-Json $jsonString
Write-Host $jsonArray[0].Name

上記の PowerShell スクリプトでは、here-string ( @」「@) を使用して JSON 文字列を定義します。 JSON 文字列には、Name や Age などのプロパティを持つ 2 つのオブジェクトを含む配列が含まれ、文字列を変数に格納します $jsonString.

を使用して ConvertFrom-Json コマンドレット、変換しました $jsonString PowerShell オブジェクトに。 の $jsonArray variable は、JSON のオブジェクトとプロパティにアクセスするために使用できる変換された配列を保持します。

上記のスクリプトの出力を実行すると、 Name JSON 配列の最初のオブジェクトのプロパティ。

Tom

PowerShell オブジェクトを JSON に変換する

PowerShell の ConvertTo-Json コマンドレットは、オブジェクトを JSON に変換するために使用されます。

$process = Get-Process | Select-Object -First 1 $json = $process | ConvertTo-Json 

上記の PowerShell スクリプトでは、 取得プロセス コマンドレットは、OS で実行中のすべてのプロセスのリストを取得し、それらを オブジェクトの選択 最初のプロセスを選択し、プロセス情報を $process 変数。

$process プロセス情報を保持する変数は、情報を ConvertTo-Json オブジェクトを JSON 文字列に変換し、結果を $json 変数。

Advertisement

上記の PowerShell スクリプトの出力は、PowerShell オブジェクトを JSON 文字列に変換します。

PowerShell オブジェクトを JSON に変換する

JSON オブジェクトを PowerShell 変数に解析する

ConvertFrom-Json コマンドレットを使用して、データを PowerShell 変数に解析します。

$jsonString = @"
{ "Name": "Tom", "Age": 27, "Address": { "Country": "India" }
}
"@
$jsonObject = ConvertFrom-Json $jsonString

上記の PowerShell スクリプトでは、 $jsonString variable は、オブジェクトとプロパティを含む JSON データを保持します。 を使用して ConvertFrom-JSON コマンドレットで、JSON データを変数に解析しました $jsonObject.

$jsonObject を使用して、JSON データ内のオブジェクトとプロパティに簡単にアクセスできます。

JSON データの操作

JSON オブジェクトのプロパティの追加、変更、削除など、PowerShell で JSON データを簡単に操作できます。

以下の JSON 文字列と、JSON データを保持するオブジェクトについて考えてみましょう。

$jsonString = @"
{ "Name": "Tom", "Age": 30, "Address": { "Street": "Ashoka", "City": "Delhi", "State": "India" }
}
"@
$jsonObject = ConvertFrom-Json $jsonString

JSON オブジェクトに新しいプロパティまたはキーを追加する

使用 追加メンバー コマンドレットを使用して、新しいプロパティまたはキーを JSON オブジェクトに追加します。

# Add a new property to the JSON object
$jsonObject | Add-Member -MemberType NoteProperty -Name "Email" -Value "[email protected]"

上記の PowerShell スクリプトでは、 $jsonObject 変数は JSON データを保持します。 に送信されました。 追加メンバー 「」という名前の新しいプロパティを追加するコマンドレットEメール「その価値とともに」[email protected]」。

Advertisement

上記の PowerShell スクリプトの出力は、新しいプロパティのキーと値のペアを追加します。Eメール」を既存の JSON データに追加します。

PS C:> $jsonObject | Add-Member -MemberType NoteProperty -Name "Email" -Value "[email protected]"
PS C:> $jsonObject
Name Age Address Email
---- --- ------- -----
Tom 30 @{Street=Ashoka; City=Delhi; State=India} [email protected]

JSON オブジェクトのプロパティ値を変更する

PowerShell では、JSON データにアクセスして値を代入することで、JSON データ内の任意のオブジェクトのプロパティ値を簡単に変更できます。

# Modify an existing property value in the JSON object
$jsonObject.Age = 32

上記の PowerShell スクリプトでは、 $jsonObject 変数は JSON データを格納します。 にアクセスします。 Age JSON オブジェクトのプロパティを変更し、それに新しい値を割り当てます。 既存の JSON オブジェクトを変更します。

上記のスクリプトの出力により、既存のプロパティ値が変更されます。

PS C:> $jsonObject.Age = 32
PS C:> $jsonObject
Name Age Address Email
---- --- ------- -----
Tom 32 @{Street=Ashoka; City=Delhi; State=India} [email protected]

JSON オブジェクトから既存のプロパティを削除する

使用 Remove() の方法 PSObject.Properties 削除するコレクション Address プロパティを JSON オブジェクトから取得します。

# Remove an existing property from the JSON object
$jsonObject.PSObject.Properties.Remove("Address")

上記の PowerShell スクリプトの出力は、プロパティ「住所」を JSON データから取得します。

PS C:> $jsonObject.PSObject.Properties.Remove("Address")
PS C:> $jsonObject
Name Age Email
---- --- -----
Tom 32 [email protected]
PS C:> 

JSON データをファイルに保存する

PowerShell で Set-Content コマンドレットを使用して、JSON データをファイルに保存します。

Set-Content -Path 'shellusers.json' -value $jsonString 

上記の PowerShell スクリプトでは、 $jsonString 変数は JSON データを保持します。 の セット内容 コマンドレットは、 -Path shellusers.json という名前のファイルに JSON 文字列を書き込むパラメータ

Advertisement

ファイルからの JSON データの読み取り

PowerShell で Get-Content コマンドレットを使用して、ファイルから JSON データを読み取ります。

# Read the JSON data from a file
$jsonString = Get-Content -Path "D:PSshellusers.json"
# Read JSON data from a file and convert JSON data to PowerShell object
$jsonObject = Get-Content -Path "D:PSshellusers.json" | ConvertFrom-JSON

上記の PowerShell スクリプトでは、 Get-Content コマンドレットはファイルから JSON データを読み取り、JSON 文字列を変数に格納します。 $jsonString.

次のコマンドでは、 ConvertFrom-JSON JSON データを PowerShell オブジェクトに変換して変数に格納するコマンドレット $jsonObject.

結論

PowerShell で JSON データを操作し、JSON 変数を使用する方法に関する上記の記事がお役に立てば幸いです。

PowerShell で JSON データを操作すると、構造化データを効率的に管理できます。 JSOn 変数を作成、変更、削除、および保存できます。

PowerShell Active Directory コマンドと PowerShell の基本に関するその他のトピックについては、ShellGeek のホームページを参照してください。

Advertisement