【PowerShell】YAMLデータの読み込み・書き込み方法

【PowerShell】YAMLデータの読み込み・書き込み方法

PowerShellによるYAMLデータの読み込み・書き込み方法について記載します。
PowerShellはYAMLデータの読み込み・書き込みする標準ライブラリがありません。そのため、powershell-yamlモジュールを使用します。

<環境>
OS:Windows10(64bit)
PSVersion:v5.1
powershell-yaml 0.4.7

powershell-yamlとは

powershell-yamlはPowerShellでYAMLを取り扱うためのオープンソースのライブラリです。ライセンスはApache License 2.0で提供されます。
https://github.com/cloudbase/powershell-yaml

powershell-yamlのインストール

構文
Install-Module -Name powershell-yaml

PowerShellを「管理者として実行」して、上記コマンドでインストールします。

補足
Install-Moduleの初回実行時は以下が求められます。[Y]を入力してインストールします。
  • NuGetプロバイダーのインストール
  • PSGalleryを信頼するリポジトリに設定

powershell-yamlのインストール

事前に以下のコマンドを実行してもOKです。
# NuGetプロバイダーのインストール
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force

# PSGalleryを信頼するリポジトリに設定
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

YAMLデータの読み込み

構文
ConvertFrom-Yaml <YAML形式の文字列>


スクリプト例
YAMLファイルを読み込んで、オブジェクトに変換します。
# YAMLファイル読み込み
$yamlStr = Get-Content -Path ".\test.yaml" -Encoding UTF8 -Raw

# オブジェクトに変換
$yamlData = ConvertFrom-Yaml $yamlStr

Write-Output $yamlData.Name
Write-Output $yamlData.Level
Write-Output $yamlData.Abilities[0]
Write-Output $yamlData.Abilities[1]
Write-Output $yamlData.Parameter.HP
Write-Output $yamlData.Parameter.ATK
Write-Output $yamlData.Parameter.DEF


YAMLファイル
読み込むYAMLファイルの内容は以下になります。

Name: ピカチュウ
Level: 100
Abilities:
  - でんきショック
  - ボルテッカー
Parameter:
  HP: 70
  ATK: 50
  DEF: 20

YAMLデータの書き込み

構文
ConvertTo-Yaml <オブジェクト>


スクリプト例
オブジェクトをYAML形式の文字列に変換して、ファイルに書き込みます。

# ハッシュテーブル
$hash = @{
    Name = "ピカチュウ"
    Level = 100
    Abilities = @("でんきショック", "ボルテッカー")
    Parameter =
    @{
        HP=70
        ATK=50
        DEF=20
    }
}
 
# YAML形式の文字列に変換
$yamlStr = ConvertTo-Yaml $hash
 
# ファイルに書き込み
Set-Content -Path "./test.yaml" -Value $yamlStr -Encoding UTF8


YAMLファイル
書き込んだYAMLファイルの内容は以下になります。

Abilities:
- でんきショック
- ボルテッカー
Name: ピカチュウ
Level: 100
Parameter:
  DEF: 20
  ATK: 50
  HP: 70


Next Post Previous Post