PowerShell設定ファイルの読み込み
PowerShellで外部設定ファイルを読み込む
PowerShellでは、CSVファイル関連処理やXMファイル関連処理が標準ライブラリで利用できます。
つまり、CSVやXMLで記述した設定ファイルを容易に扱うことができます。
独自の設定ファイル形式を作成するより、XML形式など汎用性のある形式を採用したほうがよいといえます。
単純な設定ファイルの読み込み
設定ファイル
「パラメータ名=値」というini形式のような設定ファイルを用意します。
; configure
name1=value1
name2=value2,value3
name3=value4 value5
スクリプト
設定ファイルを読み込み、行ごとにキーと値を取得します。
なお、「;」文字をコメントとみなします。
function read_ini($filename)
{
$lines = get-content $filename
foreach($line in $lines){
# コメントと空行を除外する
if($line -match "^$"){ continue }
if($line -match "^\s*;"){ continue }
$param = $line.split("=",2)
write-host("key : " + $param[0])
write-host("val : " + $param[1])
}
}
read_ini ".\config.ini"
CSVファイル読み込み処理
CSVファイル
CSVファイルに定義情報を記述します。
# Comma Separeted Values
name, value, comment
"item1", 1, "test item"
"item2", 3, ""
"item3", 5, "sample"
スクリプト
PowerShellでは、読み込んだCSVファイルをハッシュに変換することができます。
function get_value($filepath, $data_name)
{
$hash = @{}
# ファイルの存在を確認する
if((Test-Path $filepath) -eq $false){
write-host("ERROR: Not found CSV-File: " + $filepath)
return ""
}
# CSVファイルを読み込んで、ハッシュに変換する
Import-Csv $filepath | ForEach-Object {$hash.Add($_.name, $_)}
# キーが存在しているか確認する
if($hash.ContainsKey($data_name) -ne $true){
write-host("ERROR: Not found : " + $data_name)
return ""
}
# value項目を返す
return $hash[$data_name].value
}
$filepath = ".\config.csv"
$data_name = "item2"
# 名前に対応する値を取得する
$val = get_value $filepath $data_name
write-host($data_name + ":" + $val)
XMLファイル読み込み処理
XMLファイル
XMLファイルに定義情報を記述します。
<?xml version="1.0"?>
<config>
<data>
<name>"item1"</name>
<value>"value1"</value>
</data>
<data>
<name>"item2"</name>
<value>"value2"</value>
</data>
<data>
<name>"item3"</name>
<value>"value3"</value>
</data>
</config>
スクリプト
PowerShellでは、XMLタイプにキャストして参照するだけでXMLファイルを扱うことができます
$CWD = Split-Path $MyInvocation.MyCommand.Path -parent
$filename = "$CWD\config.xml"
$conf_info = [xml](Get-Content $filename)
foreach($data in $conf_info.config.data){
write-host("name : " + $data.name)
write-host("value: " + $data.value)
}
関連ページ
- Windows
- PowerShellスクリプトの作成と実行
- PowerShell変数
- PowerShell配列
- PowerShell連想配列(ハッシュ)
- PowerShell演算子
- PowerShell制御構文
- PowerShell関数
- PowerShell例外処理
- PowerShellファイル操作
- PowerShell設定ファイルの読み込み