2016年8月1日月曜日

PowerShell 相対パスでの外部スクリプト参照

関数のスコープについて参考にしたページの外部参照方法の記事に、「$myInvocation」を使った相対パス取得あったので、メモしとく。



--- ScopeTest00.ps1 ---

 $cnt = 0
   Write-Debug $cnt

# 直接実行する
   . ((Split-Path $myInvocation.MyCommand.path) + '\ScopeTest01.ps1')
   Write-Debug $cnt

# 直接実行する 配列を使う
   . (@(Split-Path $myInvocation.MyCommand.path) + '\ScopeTest01.ps1')
   Write-Debug $cnt

# 変数に代入して実行する
   $CurrentPath = Split-Path ($myInvocation.MyCommand.path)
   $CommandPath = $CurrentPath + "\ScopeTest01.ps1"
   . $CommandPath
   Write-Debug $cnt

   $CommandPath = $CurrentPath + "\ScopeTest02.ps1"
   . $CommandPath

   Write-Debug $cnt

--- ScopeTest01.ps1 ---

    $cnt++

--- ScopeTest02.ps1 ---

---- 実行結果 ---
    デバッグ: 0
    デバッグ: 1
    デバッグ: 2
    デバッグ: 3
    デバッグ: 13



「$myInvocation」には、MethodとPropertyが結構ある。
 $MyInvocation | Get-Memberで、取得できる。


本日の河上選手:おやすみ
  8/9~ 平和島