Home > Windows にまつわる e.t.c.

PowerShell スクリプトで使う「設定」を分離する


PowerShell スクリプト(.ps1)を書いていると、スクリプト内で使用する「設定」を本体スクリプトに書くのではなく、外部ファイルで管理したくなる時があります。

そんな時は「.」で設定用の .ps1 を読み込みます。

[config.ps1]

# 対象システム名
$C_TergetSystemName = "HogeHoge System"

# タイムアウト
$C_TimeOut = 60

# リトライ回数
$C_Retry = 20

[main.ps1]

# include config
. ".\config.ps1"

 

こんな感じですね

定数として使う用途がメインなので、一般変数と区別するために何かしらのルールを決めておくのがお勧めです。
僕は、変数のプレフィックスとして $C_ (CONST の意)をつけるようにしていますが、わかりやすいルールであれば何でも良いと思います。

ただし、$RETRY みたいに大文字変数は、PowerShell が変数名の大文字小文字を区別しないのでお勧めしません。

厳密に定数にするのであれば、以下のように書くことも出来ます

Set-Variable -Name [変数名] -Value [値] -Option Constant

 

ただ、定数定義にすると PowerShell ISE とかのデバッグで何度も同じスクリプトを走らせる時に定義済みの変数に値をセットすることになってしまい、扱いが面倒になるので僕は使っていません。

 

function とか class を分離するのであれば、.psm1 でモジュール化する手もありますので、こちらを見てください。

PowerShell での Class 定義分離
http://www.vwnet.jp/Windows/PowerShell/2018013001/ClassDefinitionSeparation.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.