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 >>

