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 文字列に変換します。
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 のホームページを参照してください。