PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2005-11-09

[]スクリプトファイルのインクルード

汎用的な処理を1つのスクリプトにまとめ、他のスクリプトから利用したい場合、

スクリプトファイルのインクルードができれば便利です。


「.(ドット)」+「 (スペース)」でインクルード

「.(ドット)」+「 (スペース)」に続けてスクリプトファイルを指定すると、

そのスクリプトファイルが実行され、定義されている関数を利用できるようになります。


より正確に言うと、「.(ドット)」+「 (スペース)」+「スクリプト」を実行すると、

指定した「スクリプト」の内容が、呼び出し元スクリプトに展開されるため、

スクリプト」で定義されたfunctionが呼び出し元スクリプトで利用可能になる訳です。


ちなみに、「.(ドット)」+「 (スペース)」なしで「スクリプト」を実行しても、

スクリプト」の内容は展開されないため、定義されている関数を呼び出すことはできません。

インクルードのサンプル

include.mshの内容確認
MSH C:\> get-content .\include.msh
function header()
{
@"
<html>
<head>
<title>$title</title>
</head>
"@
}
インクルード前は「header」関数は実行不可
MSH C:\> header
'header' is not recognized as a Cmdlet, function, operable program, or script file.
At line:1 char:6
+ header <<<<
「.(ドット)」+「 (スペース)」でインクルード
MSH C:\> . .\include.msh
「header」関数の呼び出しが可能
MSH C:\> header
<html>
<head>
<title></title>
</head>
変数を設定すると・・・
MSH C:\> $title = "MSH Memo"
MSH C:\> header
<html>
<head>
<title>MSH Memo</title>
</head>