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