次の方法で共有


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 、パスのすべての要素が存在するかどうかを決定します。 すべての要素が存在し、$false存在しない場合は が返$trueされます。 また、パス構文が有効かどうか、およびパスがコンテナーまたはターミナル要素またはリーフ要素につながるかどうかも確認できます。 Path が空白または空の文字列の場合、コマンドレットは を返します$falsePath$nullの配列または空の$null配列の場合、コマンドレットは終了しないエラーを返します。

例 1: パスをテストする

Test-Path -Path "C:\Documents and Settings\DavidC"

True

このコマンドは、ディレクトリ、ディレクトリDavidC、ディレクトリなどC:、パス内のすべての要素がDocuments and Settings存在するかどうかを確認します。 存在しない場合、コマンドレットは を返します $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

このコマンドは、commercial Buildings ディレクトリに、.dwg ファイル以外のファイルがあるかどうかを確認します。

コマンドは Path パラメーターを使用してパスを指定します。 パスにはスペースが含まれているため、パスは引用符で囲まれます。 パスの末尾のアスタリスクは、Commercial Building ディレクトリの内容を表します。 このような長いパスでは、パスの最初の数文字を入力し、TAB キーを使用してパスを完了します。

コマンドは 、Exclude パラメーターを指定して、評価から除外するファイルを指定します。

この場合、ディレクトリには.dwgファイルのみが含まれているため、結果は になります $false

例 4: ファイルを確認する

Test-Path -Path $profile -PathType leaf

True

このコマンドは、変数に格納されているパスが $profile ファイルにつながるかどうかを確認します。 この場合、PowerShell プロファイルは ファイルであるため、 コマンドレットは .ps1 を返します $true

例 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

注意

このパラメーターは、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 を返します。

注意

パス 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

入力

String

このコマンドレットには、リテラル パスではなくパスを含む文字列をパイプ処理できます。

出力

Boolean

コマンドレットは ブール 値を返します。

メモ

Path 名詞 (Path コマンドレット) を含むコマンドレットは、パスを操作し、すべての PowerShell プロバイダーが解釈できる簡潔な形式で名前を返します。 これらは、パスの全部または一部を特定の形式で表示するプログラムやスクリプトで使用するように設計されています。 DirnameNormpathRealpathJoin、またはその他のパス マニピュレーターを使用する場合と同様に使用します。

Test-Pathは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用できるプロバイダーを一覧表示するには、「」と入力します Get-PSProvider。 詳細については、「about_Providers」を参照してください。