Home > Windows にまつわる e.t.c.

スクリプトフォルダーの取得


バッチ処理をすると、スクリプトがどこにあるかを知りたくなります。

PowerShell Vertion 3以降であれば、自動変数の「$PSScriptRoot」に.ps1がどこに置かれているのかの情報が格納されています。

PowerShell Vertion 2以前は、この自動変数が無いので「Split-Path $MyInvocation.MyCommand.Path -Parent」で取得します。

test.ps1

# for PS v3
if( $PSVersionTable.PSVersion.Major -ge 3 ){
    echo "Data from `$PSScriptRoot"
    $ScriptDir = $PSScriptRoot
}
# for PS v2
else{
    echo "Data from `$MyInvocation.MyCommand.Path"
    $ScriptDir = Split-Path $MyInvocation.MyCommand.Path -Parent
}

echo $ScriptDir

 

Windows 8.1 update 1

PS D:\test> .\test.ps1
Data from $PSScriptRoot
D:\test

 

Windows Server 2008 R2

PS E:\test> .\test.ps1
Data from $MyInvocation.MyCommand.Path
E:\test

 

ちなみに、

$MyInvocation.MyCommand.Name

には、スクリプトファイル名が

$MyInvocation.MyCommand.Path

には、スクリプトファイル名のフルパスが格納されています。

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.