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
определяет, существуют ли все элементы пути.
Он возвращает $True
, если все элементы существуют и $False
, если отсутствуют.
Он также может определить, является ли синтаксис пути допустимым, а путь приводит к контейнеру или конечному элементу.
Если Path
является пробелом, возвращается $False
.
Если Path
является пустой строкой, $null
массив $null
или пустой массив, возвращается несрочная ошибка.
Примеры
Пример 1. Проверка пути
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Эта команда проверяет, существуют ли все элементы пути, то есть каталог C, каталог Documents и 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, чтобы указать путь. Так как путь содержит пробел, путь заключен в кавычки. Звездочка в конце пути указывает содержимое каталога коммерческого здания. С длинными путями, такими как этот, введите первые несколько букв пути, а затем используйте клавишу 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" на компьютере более новым, чем "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
, он возвращает значение 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 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Exclude
Указывает элементы, которые этот командлет пропускает. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например "*.txt". Разрешены подстановочные знаки.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Filter
Задает фильтр в формате или языке поставщика. Значение этого параметра квалифифициирует параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как поставщик применяет их при извлечении объектов вместо фильтрации объектов После их получения.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-Include
Указывает пути, которые тестирует этот командлет. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например "*.txt". Разрешены подстановочные знаки.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-IsValid
Указывает, что этот командлет проверяет синтаксис пути независимо от того, существуют ли элементы пути.
Этот командлет возвращает $True
, если синтаксис пути действителен и $False
, если он отсутствует.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-LiteralPath
Указывает путь для тестирования. В отличие от пути, значение параметра LiteralPath используется точно так же, как он типизированный. Символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки говорят PowerShell не интерпретировать какие-либо символы как escape-последовательности.
Тип: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-NewerThan
Укажите время в качестве объекта DateTime.
Тип: | DateTime |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OlderThan
Укажите время в качестве объекта DateTime.
Тип: | DateTime |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Path
Указывает путь для тестирования. Разрешены подстановочные знаки. Если путь содержит пробелы, заключите его в кавычки.
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-PathType
Указывает тип конечного элемента в пути.
Этот командлет возвращает $True
, если элемент имеет указанный тип и $False
, если он отсутствует.
Допустимые значения для этого параметра:
- Контейнер. Элемент, содержащий другие элементы, такие как каталог или раздел реестра.
- Лист. Элемент, который не содержит другие элементы, например файл.
- Любой. Контейнер или лист.
Указывает, имеет ли конечный элемент в пути определенный тип.
Осторожность
До PowerShell версии 6.1.2, когда IsValid и параметры PathType указываются вместе, командлет Test-Path
игнорирует параметр PathType и проверяет только синтаксический путь без проверки типа пути.
Согласно проблеме No 8607, исправление этого поведения может быть критическим изменением в будущей версии, где IsValid и PathType коммутаторы принадлежат отдельным наборам параметров, и поэтому их нельзя использовать вместе, чтобы избежать этой путаницы.
Тип: | TestPathType |
Aliases: | Type |
Допустимые значения: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр действителен только в том случае, если выполняется транзакция. Дополнительные сведения см. в about_Transactions
Тип: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Можно передать строку, содержащую путь, но не литеральный путь к этому командлету.
Выходные данные
Командлет возвращает логическое значение .
Примечания
Командлеты, содержащие путь существительное (командлеты пути), работают с именами путей и возвращают имена в кратком формате, который могут интерпретировать все поставщики PowerShell. Они предназначены для использования в программах и сценариях, где необходимо отобразить все или часть имени пути в определенном формате. Используйте их так, как вы будете использовать Dirname, Нормпат, Realpath, Joinили другие манипуляторы пути.
Test-Path
предназначен для работы с данными, предоставляемыми любым поставщиком.
Чтобы вывести список поставщиков, доступных в сеансе, введите Get-PSProvider
.
Дополнительные сведения см. в разделе about_Providers.