Test-Path

Определяет, все ли элементы пути существуют.

Синтаксис

Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [-UseTransaction]
    [-OlderThan <datetime>]
    [-NewerThan <datetime>]
    [<CommonParameters>]
Test-Path
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [-UseTransaction]
    [-OlderThan <datetime>]
    [-NewerThan <datetime>]
    [<CommonParameters>]
Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [-UseTransaction]
    [<CommonParameters>]
Test-Path
    -LiteralPath <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [-UseTransaction]
    [<CommonParameters>]

Описание

Командлет Test-Path определяет, существуют ли все элементы пути. Возвращается $true , если все элементы существуют и $false отсутствуют. Он также может определить, является ли синтаксис пути допустимым, а путь приводит к контейнеру или конечному элементу. Если путь является пробелом или пустой строкой, командлет возвращается$false. Если путь равен $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.

Первая команда определяет, существуют ли все элементы пути. Вторая команда определяет, правилен ли синтаксис пути. В этом случае путь имеет значение $false, но синтаксис правильный $true. Эти команды используют $profileавтоматическую переменную, указывающую на расположение профиля, даже если профиль не существует.

Дополнительные сведения об автоматических переменных см. в about_Automatic_Variables.

Пример 3. Проверьте наличие файлов, кроме указанного типа

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

False

Эта команда проверка, есть ли файлы в каталоге коммерческих зданий, отличных от .dwg файлов.

Команда использует параметр Path для указания пути. Так как путь содержит пробел, путь заключен в кавычки. Звездочка в конце пути означает содержимое каталога Commercial Building. С длинными путями, такими как этот, введите первые несколько букв пути, а затем используйте клавишу TAB для завершения пути.

Команда указывает параметр "Исключить", чтобы указать файлы, которые будут пропущены из оценки.

В этом случае каталог содержит только .dwg файлы, результатом является $false.

Пример 4. Проверка наличия файла

Test-Path -Path $profile -PathType leaf

True

Эта команда проверка, приводит ли путь, хранящийся в переменной$profile, к файлу. В этом случае, так как профиль PowerShell является файлом .ps1 , командлет возвращает $true.

Пример 5. Проверка путей в реестре

Эти команды используются Test-Path с поставщиком реестра PowerShell.

Первая команда проверяет правильность пути к реестру раздела реестра 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 , чтобы определить, является ли PowerShell.exe файл на компьютере более новым July 13, 2009.

Параметр 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 указана строка пробелов, она возвращается$true. Если указана пустая строка, Test-Path возвращает ошибку. В следующем примере показаны пробелы и пустая строка.

Test-Path ' '
Test-Path ''

True
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

Пример 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. Синтаксис фильтра, включая использование диких символов карта, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их при извлечении объектов вместо фильтрации объектов После их получения.

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, так как он не знает, какой поставщик дисков необходимо протестировать.

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

-LiteralPath

Указывает проверяемый путь. В отличие от Path, значение параметра LiteralPath используется точно так же, как он типизированный. Никакие символы не распознаются как подстановочные знаки. Если путь содержит символы, которые могут интерпретироваться PowerShell как escape-последовательности, необходимо заключить путь в одну кавычку, чтобы они не интерпретировались.

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

-NewerThan

Это динамический параметр, доступный поставщиком FileSystem .

Укажите время в качестве объекта DateTime .

Перед PowerShell 7.5 командлет игнорирует:

  • Этот параметр при указании PathType в качестве любого значения, отличного от Anyзначения.
  • Параметр OlderThan при использовании с этим параметром.
  • Этот параметр, когда Путь указывает на каталог.

Начиная с 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 .
  • Этот параметр, когда Путь указывает на каталог.

Начиная с 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 указаны вместе, Test-Path командлет игнорирует параметр PathType и проверяет только синтаксический путь без проверки типа пути.

Согласно проблеме #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

-UseTransaction

Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_Transactions

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

String

Можно передать строку, содержащую путь, но не литеральный путь к этому командлету.

Выходные данные

Boolean

Командлет возвращает логическое значение.

Примечания

Командлеты, содержащие существительное Path (командлеты Path), работают с путем и возвращают имена в кратком формате, который могут интерпретировать все поставщики PowerShell. Они предназначены для использования в программах и сценариях, где вы хотите отобразить все или часть пути в определенном формате. Используйте их так, как вы будете использовать Dirname, Normpath, Realpath, Join или других манипуляторов пути.

Он Test-Path предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PSProvider. Дополнительные сведения см. в about_Providers.