cmdlet

Powershellにおける設定ファイルの読み込み方

Java開発でお馴染みの .properties ファイル。PowerShellの世界でこれに相当するものは何だろう?と探してみたところ、出会ったのは .psd1 という拡張子とImport-PowerShellDataFileというコマンドレットでした。

Q1. 「ただのハッシュテーブルではないのか?」

A. 構造はハッシュテーブルですが、「実行コードを含まないデータ」であることをシステムが保証するための「型」のような存在です。

Q2. 「なぜドットソース読み込みではダメなのか?」

A. 理由は「セキュリティ」対策です。Import-PowerShellDataFile を使う事で、ファイルを「テキストデータ」としてパースし、実行可能なコマンドが含まれていないかチェックします。スクリプトインジェクション対策がされます

利用例

config.psd1というファイル名で以下を作成します

設定ファイル
@{
    # ハッシュテーブル形式
    LineApi = @{
        endpoint= 'https://api.line.me/v2/bot/message/push'
        Token   = 'TokenDnyilFU='
        GroupId = 'C19c66d5'
    }
    # 配列
    TargetServers = @(
        'server1',
        'server2',
        'server3' 
    )
}
設定ファイルの読み込み
$conf = Import-PowerShellDataFile ".\config.psd1"
動作確認
send-test >> $conf = Import-PowerShellDataFile ".\config.psd1"
send-test >> $conf.LineApi.endpoint
https://api.line.me/v2/bot/message/push
send-test >> $conf.LineApi.Token
TokenDnyilFU=
send-test >> $conf.LineApi.GroupId
C19c66d5
send-test >> $conf.TargetServers[0]
server1
send-test >> $conf.TargetServers[2]
server3
send-test >>

スポンサーリンク
タイトルとURLをコピーしました