別の ps1 スクリプトファイルをインクルードする
よく使う、お決まりのファンクションなどをまとめて別ファイルで管理し、メインの実行スクリプトからインクルードする方法を紹介します。
まずは、一つのファイルにファンクションもメインルーチンも記述したスクリプトを示します。
function get_yyyy_mmdd_hhmmss_nnn( $args_dtm )
{
$y4 = $args_dtm.Year
$m2 = $args_dtm.Month
$d2 = $args_dtm.Day
$hh = $args_dtm.Hour
$mm = $args_dtm.Minute
$ss = $args_dtm.Second
$ms = $args_dtm.Millisecond
$ret_str = "{0:d4}_{1:d2}{2:d2}_{3:d2}{4:d2}{5:d2}_{6:d3}" -f $y4, $m2, $d2, $hh, $mm, $ss, $ms
return $ret_str
}
# ファンクションをコールする.
$dtm = Get-Date
$str = get_yyyy_mmdd_hhmmss_nnn( $dtm )
Write-Host( $str )
いま、ここで、get_yyyy_mmdd_hhmmss_nnn() というファンクションは、違う案件のスクリプトでも使うことが予想されるので mylib.ps1 という名前の別ファイルに逃がします。
mylib.ps1 というファイルを、メインのスクリプトからコールするには、
ドット、スペース、インクルードしたいファイルの相対パスorフルパス
をスクリプトに書くことでインクルードを実現できます。
# 外部の ps1 ファイルをインクルードする.
. "./mylib.ps1"
# ファンクションをコールする.
$dtm = Get-Date
$str = get_yyyy_mmdd_hhmmss_nnn( $dtm )
Write-Host( $str )
function get_yyyy_mmdd_hhmmss_nnn( $args_dtm )
{
$y4 = $args_dtm.Year
$m2 = $args_dtm.Month
$d2 = $args_dtm.Day
$hh = $args_dtm.Hour
$mm = $args_dtm.Minute
$ss = $args_dtm.Second
$ms = $args_dtm.Millisecond
$ret_str = "{0:d4}_{1:d2}{2:d2}_{3:d2}{4:d2}{5:d2}_{6:d3}" -f $y4, $m2, $d2, $hh, $mm, $ss, $ms
return $ret_str
}
下記が実行結果です.
PS C:\tmp> ./main.ps1
2022_0703_133341_691