Test-Path (Microsoft.PowerShell.Management)
Test-Path
- Модуль:
- Microsoft.PowerShell.Management
Определяет, существуют ли все элементы пути.
Синтаксис
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, если какие-либо отсутствуют. Он также может определить, действителен ли синтаксис пути и ведет ли путь к контейнеру, терминалу или конечному элементу. Если Путь представляет собой пробел или пустую строку, командлет возвращает $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 для указания пути. Поскольку путь содержит пробел, он заключен в кавычки. Звездочка в конце пути указывает на содержимое каталога коммерческих зданий. Для длинных путей, таких как этот, введите первые несколько букв пути, а затем используйте клавишу TAB, чтобы завершить путь.
В команде указывается параметр Exclude, позволяющий указать файлы, которые следует исключить из оценки.
В этом случае, поскольку каталог содержит только файлы .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, чтобы определить, является ли файл pwsh.exe на компьютере новее, чем 13 июля 2009 г..
Параметр NewerThan работает только на дисках с файловой системой.
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
TrueПример 7. Проверка пути с нулевым значением в качестве значения.
Ошибка, возвращаемая для null, массива null или пустого массива, является непрерывающейся ошибкой. Его можно подавить с помощью -ErrorAction SillyContinue. В следующем примере показаны все случаи, возвращающие ошибку NullPathNotPermited.
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.
- Тип :
PSCredential
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-Exclude
Указывает элементы, которые опускает этот командлет. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Допускаются подстановочные знаки.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-Filter
Указывает фильтр в формате или языке поставщика. Значение этого параметра определяет параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, поскольку поставщик применяет их при получении объектов вместо того, чтобы PowerShell фильтровал объекты после их получения.
- Тип :
String
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-Include
Указывает пути, которые проверяет этот командлет. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Допускаются подстановочные знаки.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-IsValid
Указывает, что этот командлет проверяет синтаксис пути независимо от того, существуют ли элементы пути. Этот командлет возвращает $true, если синтаксис пути верен, и $false, если это не так. Если тестируемый путь включает спецификацию диска, командлет возвращает false, если диск не существует. PowerShell возвращает false, поскольку не знает, какой поставщик дисков следует тестировать.
Примечание
Критическое изменение в API Path было введено в .NET 2.1. Эти методы больше не проверяют недопустимые символы пути. Это изменение вызвало регрессию в PowerShell: проверка IsValid больше не проверяет наличие недопустимых символов. Регрессия будет устранена в будущем выпуске. Дополнительные сведения см. в разделе Критические изменения в .NET Core 2.1.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь для тестирования. В отличие от Path, значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит символы, которые PowerShell может интерпретировать как escape-последовательности, необходимо заключить путь в одинарные кавычки, чтобы они не интерпретировались.
- Тип :
String[]
- Псевдонимы:
PSPath, LP
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-NewerThan
Это динамический параметр, предоставляемый поставщиком FileSystem.
Укажите время как объект DateTime.
До версии PowerShell 7.5 командлет игнорирует:
- Этот параметр используется, если для PathType указано любое значение, кроме
Any. - Параметр OlderThan при использовании с этим параметром.
- Этот параметр используется, когда Путь указывает на каталог.
Начиная с PowerShell 7.5, вы можете использовать этот параметр с любым значением параметра PathType, чтобы проверить диапазон дат с помощью параметра OlderThan и проверить возраст каталогов.
Дополнительные сведения см. в разделе about_FileSystem_Provider.
- Тип :
Nullable
[[DateTime]] - Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-OlderThan
Это динамический параметр, предоставляемый поставщиком FileSystem.
Укажите время как объект DateTime.
До версии PowerShell 7.5 командлет игнорирует:
- Этот параметр используется, если для PathType указано любое значение, кроме
Any. - Этот параметр используется вместе с параметром NewerThan.
- Этот параметр используется, когда Путь указывает на каталог.
Начиная с PowerShell 7.5, вы можете использовать этот параметр с любым значением параметра PathType, чтобы проверить диапазон дат с помощью параметра NewerThan и проверить возраст каталогов.
Дополнительные сведения см. в разделе about_FileSystem_Provider.
- Тип :
Nullable
[[DateTime]] - Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Path
Указывает путь для тестирования. Допускаются подстановочные знаки. Если путь содержит пробелы, заключите его в кавычки.
- Тип :
String[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
True
-PathType
Указывает тип последнего элемента пути. Этот командлет возвращает $true, если элемент имеет указанный тип, и $false, если это не так. Допустимые значения этого параметра:
Контейнер— элемент, содержащий другие элементы, например каталог или раздел реестра.Leaf— элемент, не содержащий других элементов, например файла.Любой— либо контейнер, либо лист.
Сообщает, принадлежит ли последний элемент пути к определенному типу.
Осторожность
До версии PowerShell 6.1.2, когда переключатели IsValid и PathType указаны вместе, командлет Test-Path игнорирует PathType и проверяет только синтаксический путь без проверки типа пути.
Согласно проблеме № 8607, исправление этого поведения может стать критическим изменением в будущей версии, где переключатели IsValid и PathType принадлежат разным наборам параметров и, следовательно, могут их нельзя использовать вместе, чтобы избежать этой путаницы.
- Тип :
ТестПатТип
- Псевдонимы:
Type
- Принятые значения:
Любой, Контейнер, Лист
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
Строка
В этот командлет можно передать строку, содержащую путь, но не буквальный путь.
Выходы
Логическое значение
Командлет возвращает значение Boolean.
Примечания
Командлеты, содержащие существительное Path (командлеты Path), работают с путем и возвращают имена в кратком формате, который могут интерпретировать все поставщики PowerShell. Они предназначены для использования в программах и сценариях, в которых вы хотите отображать весь путь или его часть в определенном формате. Используйте их так же, как Dirname, Normpath, Realpath, Join или другие манипуляторы путей.
Test-Path предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы просмотреть список поставщиков, доступных в вашем сеансе, введите Get-PSProvider. Дополнительные сведения см. в разделе about_Providers.