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>]

说明

cmdlet Test-Path 确定路径的所有元素是否存在。 如果所有元素都存在并且$False缺少任何元素,则返回 $True 。 它还可以判断路径语法是否有效,以及路径是否指向容器、终端或叶元素。 Path如果 为空白字符串,则 $False 返回 。 如果 为 Path$null、数组 $null 或空数组,则返回非终止错误。

示例

示例 1:测试路径

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

True

此命令检查路径中的所有元素是否存在,即 C: 目录、Documents and Settings 目录以及 DavidC 目录。 如果缺少任何内容,则 cmdlet 返回 $False。 否则,它将返回 $True

示例 2:测试配置文件的路径

Test-Path -Path $profile

False

Test-Path -Path $profile -IsValid

True

这些命令测试 PowerShell 配置文件的路径。

第一个命令确定路径中的所有元素是否都存在。 第二个命令确定路径的语法是否正确。 在本例中,路径为 $False,但语法正确 $True。 这些命令使用 $profile,该自动变量指向配置文件的位置,即使配置文件不存在也是如此。

有关自动变量的详细信息,请参阅 about_Automatic_Variables。

示例 3:检查指定类型之外是否有任何文件

Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg

False

此命令检查商业建筑目录中是否有除.dwg文件以外的任何文件。

命令使用 Path 参数指定路径。 由于路径包含空格,因此路径用引号引起来。 该路径末尾的星号指示 Commercial Building 目录的内容。 对于长路径(例如此路径),请键入路径的前几个字母,然后使用 TAB 键完成路径。

命令指定 Exclude 参数以指定将从计算中省略的文件。

在这种情况下,由于目录仅包含.dwg文件,因此结果为 $False

示例 4:检查文件

Test-Path -Path $profile -PathType leaf

True

此命令检查变量中 $profile 存储的路径是否指向文件。 在这种情况下,由于 PowerShell 配置文件是一个 .ps1 文件,因此 cmdlet 返回 $True

示例 5:检查注册表中的路径

这些命令与 PowerShell 注册表提供程序一起使用 Test-Path

第一个命令测试 Microsoft.PowerShell 注册表项的注册表路径在系统上是否正确。 如果 PowerShell 安装正确,则 cmdlet 返回 $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 动态参数来确定计算机上的“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
False

参数

-Credential

注意

随 PowerShell 一起安装的任何提供程序都不支持此参数。 若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

指定此 cmdlet 省略的项。 此参数值使 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

指定此 cmdlet 测试的路径。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如“*.txt”。 允许使用通配符。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-IsValid

指示此 cmdlet 测试路径的语法,而不管路径的元素是否存在。 如果路径语法有效,则此 cmdlet 返回 ;$False如果路径语法无效,则返回 $True

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

将时间指定为 DateTime 对象。

Type:Nullable<T>[DateTime]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OlderThan

将时间指定为 DateTime 对象。

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

指定路径中最终元素的类型。 如果元素属于指定类型,则此 cmdlet 返回 ;$False如果不是,则返回 $True 。 此参数的可接受值为:

  • 容器。 -- 包含其他元素的元素,例如目录或注册表项。
  • 叶。 -- 不包含其他元素的元素,例如文件。
  • 任何。 container 或 leaf。

指示路径中的最后一个元素是否为特定类型。

注意

直到 PowerShell 版本 6.1.2,当 IsValidPathType 开关一起指定时, Test-Path cmdlet 将忽略 PathType 开关,仅验证语法路径而不验证路径类型。

根据 问题 #8607,修复此行为可能是未来版本中的中断性变更,其中 IsValidPathType 开关属于单独的参数集,因此,不能一起使用以避免这种混淆。

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

可以通过管道将包含路径(但不是文本路径)的字符串传递给此 cmdlet。

输出

Boolean

cmdlet 返回 布尔 值。

备注

包含 Path 名词 (Path cmdlet 的 cmdlet) 使用路径名称,并返回所有 PowerShell 提供程序都可以解释的简洁格式的名称。 这些 cmdlet 用于需要在其中以特定格式显示全部或部分路径名称的程序或脚本中。 使用它们,就像使用 DirnameNormpathRealpathJoin 或其他路径操控器一样。

Test-Path旨在处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PSProvider。 有关详细信息,请参阅 about_Providers