Test-Path
パスのすべての要素が存在するかどうかを確認します。
構文
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<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 パラメーターを使用してパスを指定します。 パスにはスペースが含まれているため、パスは引用符で囲まれます。 パスの末尾のアスタリスクは、Commercial Building ディレクトリの内容を表します。 このような長いパスでは、パスの最初の数文字を入力し、TAB キーを使用してパスを完了します。
このコマンドは、評価から除外する ファイルを指定する Exclude パラメーターを指定します。
この場合、ディレクトリには.dwgファイルのみが含まれているため、結果は $false
.
例 4: ファイルを確認する
Test-Path -Path $profile -PathType leaf
True
このコマンドは、変数に格納されている$profile
パスがファイルにつながるかどうかをチェックします。 この場合、PowerShell プロファイルはファイルであるため、コマンドレット$true
は .ps1
.
例 5: レジストリのパスを確認する
これらのコマンドは、PowerShell レジストリ プロバイダーで使用 Test-Path
します。
最初のコマンドは、Microsoft.PowerShell レジストリ キーのレジストリ パスがシステム上で正しいかどうかをテストします。 PowerShell が正しくインストールされている場合、コマンドレット $true
は .
重要
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 動的パラメーターを使用して、コンピューター上の pwsh.exe
ファイルが July 13, 2009
.
NewerThan パラメーターは、ファイル システム ドライブでのみ機能します。
Test-Path $pshome\pwsh.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
. これは Windows PowerShell 5.1 からの変更です。 空の文字列が指定されると、 Test-Path
エラーが返されます。
次の例は、空白と空の文字列を示しています。
Test-Path ' '
Test-Path ''
False
False
例 9: 無効なドライブがある可能性があるパスをテストする
ドライブ仕様を含むパスをテストすると、ドライブが存在しない場合、パスの有効性のテストは失敗します。 この問題を回避するには、ドライブの前にプロバイダー名を付けることができます。
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
パラメーター
-Credential
Note
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、Invoke-Command を使用 します。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
このコマンドレットが省略する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例 *.txt
: . ワイルドカード文字を使用できます。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
プロバイダーの形式または言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 ワイルド文字カード文字の使用を含むフィルターの構文は、プロバイダーによって異なります。 フィルターは他のパラメーターよりも効率的です。プロバイダーは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、オブジェクトを取得するときにフィルターを適用するためです。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
このコマンドレットがテストするパスを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例 *.txt
: . ワイルドカード文字を使用できます。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
このコマンドレットは、パスの要素が存在するかどうかに関係なく、パスの構文をテストすることを示します。 このコマンドレットは、 $true
パス構文が有効かどうか、 $false
有効でない場合に返します。 テスト対象のパスにドライブ仕様が含まれている場合、コマンドレットはドライブが存在しない場合に false を返します。 テストするドライブ プロバイダーがわからないため、PowerShell は false を返します。
Note
Path API の破壊的変更が .NET 2.1 で導入されました。 これらのメソッドは、無効なパス文字に対してチェックされなくなりました。 この変更により、PowerShell で IsValid チェックが無効な文字をテストしなくなったという回帰が発生しました。 回帰は、将来のリリースで対処される予定です。 詳細については、「.NET Core 2.1 での破壊的変更」を参照してください。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
テストするパスを指定します。 Path とは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 PowerShell でエスケープ シーケンスとして解釈できる文字がパスに含まれている場合は、パスを一重引用符で囲んで解釈されないようにする必要があります。
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
これは、FileSystem プロバイダーによって使用できる動的パラメーターです。
DateTime オブジェクトとして時刻を指定します。
PowerShell 7.5 より前のコマンドレットでは、次の処理は無視されます。
- PathType を以外
Any
の値として指定する場合は、このパラメーターを指定します。 - このパラメーターで使用する場合は 、OlderThan パラメーター。
- Path がディレクトリを指す場合のこのパラメーター。
PowerShell 7.5 以降では、このパラメーターを PathType パラメーターの任意の値と共に使用し、OlderThan パラメーターを使用して日付範囲をテストし、ディレクトリの有効期間をテストできます。
詳細については、「about_FileSystem_Provider」を参照してください。
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
これは、FileSystem プロバイダーによって使用できる動的パラメーターです。
DateTime オブジェクトとして時刻を指定します。
PowerShell 7.5 より前のコマンドレットでは、次の処理は無視されます。
- PathType を以外
Any
の値として指定する場合は、このパラメーターを指定します。 - このパラメーターは、NewerThan パラメーターと共に使用します。
- Path がディレクトリを指す場合のこのパラメーター。
PowerShell 7.5 以降では、PathType パラメーターの任意の値でこのパラメーターを使用し、NewerThan パラメーターで日付範囲をテストし、ディレクトリの有効期間をテストできます。
詳細については、「about_FileSystem_Provider」を参照してください。
Type: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
テストするパスを指定します。 ワイルドカード文字を使用できます。 パスにスペースが含まれる場合は、二重引用符で囲みます。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PathType
パス内の最終的な要素の型を指定します。 このコマンドレットは、 $true
要素が指定された型の場合、および $false
指定されていない場合に返します。 このパラメーターの有効値は、次のとおりです。
Container
- ディレクトリやレジストリ キーなど、他の要素を含む要素。Leaf
- ファイルなどの他の要素を含まない要素。Any
- コンテナーまたはリーフ。
パスの最終要素が特定の種類かどうかを示します。
注意事項
PowerShell バージョン 6.1.2 までは、IsValid スイッチと PathType スイッチが一緒に指定されている場合、コマンドレットは PathType スイッチを無視し、Test-Path
パスの種類を検証せずに構文パスのみを検証します。
問題 #8607 によると、この動作の修正は、IsValid スイッチと PathType スイッチが別々のパラメーター セットに属しているため、この混乱を避けるために一緒に使用できない、将来のバージョンで破壊的変更になる可能性があります。
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
リテラル パスではなくパスを含む文字列をこのコマンドレットにパイプできます。
出力
コマンドレットはブール値を返します。
メモ
Path 名詞 (Path コマンドレット) を含むコマンドレットはパスを操作し、すべての PowerShell プロバイダーが解釈できる簡潔な形式で名前を返します。 これらは、パスのすべてまたは一部を特定の形式で表示するプログラムやスクリプトで使用するように設計されています。 Dirname、Normpath、Realpath、Join、またはその他のパス マニピュレータを使用する場合と同様に使用します。
これは Test-Path
、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「.」と入力します Get-PSProvider
。 詳細については、「about_Providers」を参照してください。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示