
本職がJavaとかCOBOLを使うプログラマーなので、共通で使う変数とか関数とかを外部のファイルに保存しておいて、実行するpowerShellはそれを読み込んで使用する(COBOLでいうCOPY句)ということがやりたくなりました。
■ とりあえず読み込んでみる
先頭に . を付ければ読み込んでくれるようです。
下記では、commonShell.ps1というシェルを読み込んでいます。
■ 相対参照で読み込んでみる
共通のpowerShellの置き場が、実行中のpowerShellと同じ、あるいは近くにある時には「実行中のスクリプトのパス」を取得してやります。
まず、スクリプトのパスを「 $myInvocation.MyCommand.path 」で取得します。
さらに、Split-Pathコマンドレットを使用してパス部分を取得します。
んで、その結果を文字列結合してやれば...
って感じでですかね?
■ 最後に一言
「$myInvocation」って変数には、コマンド呼び出しに関する様々な情報が格納されているらしいのですが、はっきり言ってさっぱり分りません。
この他に私が知ってるのは「 $myInvocation.MyCommand.name 」とすると、スクリプトの名前を取得できるってだけです。
一昔前は「自分が理解できないものを使うな」とよく言われたものですが、現在では複雑すぎて理解しきれずに使っているモノが多くなってきましたね。
実際問題、細かく追っていくと時間が掛かりすぎて納期に間に合わないですし、しょうがないですかね。
スポンサードリンク
■ とりあえず読み込んでみる
先頭に . を付ければ読み込んでくれるようです。
下記では、commonShell.ps1というシェルを読み込んでいます。
# 共通の変数、関数を読み込みます。
. 'D:\\script\commonShell.ps1'
■ 相対参照で読み込んでみる
共通のpowerShellの置き場が、実行中のpowerShellと同じ、あるいは近くにある時には「実行中のスクリプトのパス」を取得してやります。
まず、スクリプトのパスを「 $myInvocation.MyCommand.path 」で取得します。
さらに、Split-Pathコマンドレットを使用してパス部分を取得します。
んで、その結果を文字列結合してやれば...
# 共通の変数、関数を読み込みます。
. (@(Split-Path $myInvocation.MyCommand.path) + '\commonShell.ps1')
って感じでですかね?
■ 最後に一言
「$myInvocation」って変数には、コマンド呼び出しに関する様々な情報が格納されているらしいのですが、はっきり言ってさっぱり分りません。
この他に私が知ってるのは「 $myInvocation.MyCommand.name 」とすると、スクリプトの名前を取得できるってだけです。
一昔前は「自分が理解できないものを使うな」とよく言われたものですが、現在では複雑すぎて理解しきれずに使っているモノが多くなってきましたね。
実際問題、細かく追っていくと時間が掛かりすぎて納期に間に合わないですし、しょうがないですかね。
スポンサードリンク


