Test-Path
パスのすべての要素が存在するかどうかを判断します。
構文
Path (既定)
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
LiteralPath
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-UseTransaction]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
説明
Test-Path コマンドレットは、パスのすべての要素が存在するかどうかを判断します。
すべての要素が存在する場合は $True を返し、存在しない場合は $False します。
また、パス構文が有効かどうか、およびパスがコンテナーまたはターミナル要素またはリーフ要素につながるかどうかを判断することもできます。
Path が空白の場合は、$False が返されます。
Path が空の文字列、$null、$null の配列、または空の配列である場合は、終了しないエラーが返されます。
例
例 1: パスをテストする
Test-Path -Path "C:\Documents and Settings\DavidC"
True
このコマンドは、パス内のすべての要素 (C: ディレクトリ、Documents and Settings ディレクトリ、DavidC ディレクトリ) が存在するかどうかを確認します。
存在しない場合、コマンドレットは $Falseを返します。
それ以外の場合は、$Trueを返します。
例 2: プロファイルのパスをテストする
Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True
これらのコマンドは、PowerShell プロファイルのパスをテストします。
最初のコマンドは、パス内のすべての要素が存在するかどうかを決定します。
2 番目のコマンドは、パスの構文が正しいかどうかを判断します。
この場合、パスは $Falseですが、構文は正しい $Trueです。
これらのコマンドでは、プロファイルが存在しない場合でも、プロファイルの場所を指す自動変数である $profileを使用します。
自動変数の詳細については、about_Automatic_Variablesを参照してください。
例 3: 指定した型以外にファイルがあるかどうかを確認する
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
このコマンドは、.dwg ファイル以外の Commercial Buildings ディレクトリにファイルがあるかどうかを確認します。
このコマンドでは、Path パラメーターを使用してパスを指定します。 パスにはスペースが含まれているため、パスは引用符で囲まれます。 パスの末尾にあるアスタリスクは、商業ビル ディレクトリの内容を示します。 このような長いパスでは、パスの最初の数文字を入力し、TAB キーを使用してパスを完了します。
このコマンドは、Exclude パラメーターを指定して、評価から省略するファイルを指定します。
この場合、ディレクトリには.dwgファイルのみが含まれているため、結果は $False。
例 4: ファイルを確認する
Test-Path -Path $profile -PathType leaf
True
このコマンドは、$profile 変数に格納されているパスがファイルにつながるかどうかを確認します。
この場合、PowerShell プロファイルは .ps1 ファイルであるため、コマンドレットは $Trueを返します。
例 5: レジストリのパスを確認する
これらのコマンドは、PowerShell レジストリ プロバイダーで Test-Path を使用します。
最初のコマンドは、Microsoft.PowerShell レジストリ キーのレジストリ パスがシステム上で正しいかどうかをテストします。
PowerShell が正しくインストールされている場合、コマンドレットは $Trueを返します。
Von Bedeutung
Test-Path は、すべての PowerShell プロバイダーで正しく動作しません。
たとえば、Test-Path を使用してレジストリ キーのパスをテストできますが、レジストリ エントリのパスをテストするために使用すると、レジストリ エントリが存在する場合でも、常に $Falseが返されます。
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
True
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
False
例 6: ファイルが指定した日付より新しいかどうかをテストする
このコマンドは、NewerThan 動的パラメーターを使用して、コンピューター上の "PowerShell.exe" ファイルが "2009 年 7 月 13 日" より新しいかどうかを判断します。
NewerThan パラメーターは、ファイル システム ドライブでのみ機能します。
Test-Path $pshome\PowerShell.exe -NewerThan "July 13, 2009"
True
例 7: 値として null を持つパスをテストする
null、null の配列、または空の配列に対して返されるエラーは、終了しないエラーです。
-ErrorAction SilentlyContinueを使用して抑制できます。
次の例は、NullPathNotPermitted エラーを返すすべてのケースを示しています。
Test-Path $null
Test-Path $null, $null
Test-Path @()
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:11
+ Test-Path $null
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
例 8: 値として空白文字を含むパスをテストする
-Path パラメーターに空白文字が指定されている場合、または空の文字列が指定されている場合、false が返されます。
次の例は、空白と空の文字列を示しています。
Test-Path ' '
Test-Path ''
False
Test-Path : Cannot bind argument to parameter 'Path' because it is an empty string.
At line:1 char:11
+ Test-Path ''
+ ~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
パラメーター
-Credential
注
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、Invoke-Commandを使用します。
パラメーターのプロパティ
| 型: | PSCredential |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-Exclude
このコマンドレットが省略する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 "*.txt" などのパス要素またはパターンを入力します。 ワイルドカード文字を使用できます。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Filter
プロバイダーの形式または言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 ワイルドカード文字の使用を含むフィルターの構文は、プロバイダーによって異なります。 フィルターは他のパラメーターよりも効率的です。プロバイダーは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、オブジェクトを取得するときにフィルターを適用するためです。
パラメーターのプロパティ
| 型: | String |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Include
このコマンドレットがテストするパスを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 "*.txt" などのパス要素またはパターンを入力します。 ワイルドカード文字を使用できます。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-IsValid
このコマンドレットは、パスの要素が存在するかどうかに関係なく、パスの構文をテストすることを示します。
このコマンドレットは、パス構文が有効な場合は $True を返し、有効でない場合は $False します。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-LiteralPath
テストするパスを指定します。 Pathとは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカード文字として解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | PSPath |
パラメーター セット
LiteralPath
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-NewerThan
DateTime オブジェクトとして時刻を指定します。
パラメーターのプロパティ
| 型: | DateTime |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-OlderThan
DateTime オブジェクトとして時刻を指定します。
パラメーターのプロパティ
| 型: | DateTime |
| 規定値: | None |
| ワイルドカードのサポート: | False |
| DontShow: | False |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Path
テストするパスを指定します。 ワイルドカード文字を使用できます。 パスにスペースが含まれている場合は、引用符で囲みます。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | None |
| ワイルドカードのサポート: | True |
| DontShow: | False |
パラメーター セット
Path
| 配置: | 0 |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-PathType
パス内の最終的な要素の型を指定します。
このコマンドレットは、要素が指定した型の場合は $True を返し、指定されていない場合は $False します。
このパラメーターに使用できる値は次のとおりです。
- [コンテナー]。 ディレクトリやレジストリ キーなど、他の要素を含む要素。
- 葉。 ファイルなどの他の要素を含まない要素。
- 任意。 コンテナーまたはリーフ。
パスの最後の要素が特定の型であるかどうかを示します。
注意事項
PowerShell バージョン 6.1.2 までは、IsValid スイッチと PathType スイッチが一緒に指定されている場合、Test-Path コマンドレットは PathType スイッチを無視し、パスの種類を検証せずに構文パスのみを検証します。
問題 #8607によると、この動作の修正は将来のバージョンで破壊的変更になる可能性があります。この場合、IsValid スイッチと PathType スイッチは別々のパラメーター セットに属しているため、この混乱を避けるために一緒に使用することはできません。
パラメーターのプロパティ
| 型: | TestPathType |
| 規定値: | None |
| 指定可能な値: | Any, Container, Leaf |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | タイプ |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-UseTransaction
アクティブなトランザクションにコマンドを含みます。 このパラメーターは、トランザクションが進行中の場合にのみ有効です。 詳細については、about_Transactions を参照してください。
パラメーターのプロパティ
| 型: | SwitchParameter |
| 規定値: | False |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | usetx |
パラメーター セット
(All)
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
String
文字列に含まれるパスは、このコマンドレットにパイプできますが、リテラル パスはパイプできません。
出力
Boolean
このコマンドレットは、ブール値 を返します。
メモ
Path 名詞 (Path コマンドレット) を含むコマンドレットは、パス名を操作し、すべての PowerShell プロバイダーが解釈できる簡潔な形式で名前を返します。 これらは、パス名のすべてまたは一部を特定の形式で表示するプログラムやスクリプトで使用するように設計されています。 Dirname 、Normpath、Realpath、Join、またはその他のパス マニピュレータを使用する場合と同様に使用します。
Test-Path は、任意のプロバイダーによって公開されるデータを操作するように設計されています。
セッションで使用可能なプロバイダーを一覧表示するには、「Get-PSProvider」と入力します。
詳細については、about_Providersを参照してください。