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
определяет, существуют ли все элементы пути. Он возвращает значение $true
, если все элементы существуют, и $false
если они отсутствуют. Он также может определить, является ли синтаксис пути допустимым и ведет ли путь к контейнеру, терминалу или конечному элементу. Если path является пробелом или пустой строкой, командлет возвращает $false
значение . Если параметр Path имеет значение $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 для завершения пути.
Команда задает параметр 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
файл на компьютере новее , чем 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, так как не знает, какой поставщик дисков следует тестировать.
Примечание
В .NET 2.1 появилось критическое изменение в API пути. Эти методы больше не проверка для недопустимых символов пути. Это изменение вызвало регрессию в 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 как escape-последовательности, необходимо заключить путь в одинарные кавычки, чтобы они не интерпретировались.
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 при совместном указании Test-Path
параметров IsValid и PathType командлет игнорирует параметр PathType и проверяет только синтаксический путь без проверки типа пути.
Согласно проблеме No 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 |
Входные данные
Вы можете передать строку, содержащую путь, но не литеральный путь, в этот командлет.
Выходные данные
Командлет возвращает логическое значение.
Примечания
Командлеты, содержащие существительное Path (командлеты Path ), работают с path и возвращают имена в кратком формате, который могут интерпретировать все поставщики PowerShell. Они предназначены для использования в программах и сценариях, где требуется отобразить весь или часть пути в определенном формате. Используйте их так же, как и Dirname, Normpath, Realpath, Join или другие манипуляторы пути.
Test-Path
предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы вывести список поставщиков, доступных в данном сеансе, введите командлет Get-PSProvider
. Дополнительные сведения см. в разделе about_Providers.