Поделиться через


Test-Path

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

Синтаксис

Path (Default) - FileSystem provider

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

LiteralPath - FileSystem provider

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

Path (Default) - All providers

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

LiteralPath - All providers

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

Описание

Командлет Test-Path определяет, существуют ли все элементы пути. Он возвращает $true, если все элементы существуют и $false, если отсутствуют. Он также может определить, является ли синтаксис пути допустимым, а путь приводит к контейнеру, или к терминалу, или к конечному элементу. Если путь является пробелом или пустым элементом, командлет возвращает $false. Если пути , массив или пустой массив, командлет возвращает ошибку без конца.

Примеры

Пример 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.

Свойства параметров

Тип:PSCredential
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Exclude

Указывает элементы, которые этот командлет исключает. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использование подстановочных символов.

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Filter

Задает фильтр в формате или языке поставщика. Значение этого параметра квалифифициирует параметр Path. Синтаксис фильтра, включая использование подстановочных знаков, зависит от поставщика. Фильтры более эффективны, чем другие параметры, так как провайдер применяет их во время извлечения объектов, а не фильтрует объекты уже после их получения.

Свойства параметров

Тип:String
Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Include

Этот командлет проверяет указанные пути. Значение этого параметра квалифифициирует параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использование подстановочных символов.

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-IsValid

Указывает, что этот командлет проверяет синтаксис пути независимо от того, существуют ли элементы пути. Этот командлет возвращает $true, если синтаксис пути правильный, и $false, если он неправильный. Если тестируемый путь содержит спецификацию диска, командлет возвращает значение false, если диск не существует. PowerShell возвращает значение false, так как он не знает, какой поставщик дисков необходимо протестировать.

Свойства параметров

Тип:SwitchParameter
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-LiteralPath

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

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:PSPath

Наборы параметров

LiteralPath
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-NewerThan

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

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

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

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

Начиная с PowerShell 7.5, этот параметр можно использовать с любым значением параметра PathType, для тестирования диапазона дат с помощью параметра OlderThan, а также для тестирования возраста каталогов.

Дополнительные сведения см. в about_FileSystem_Provider.

Свойства параметров

Тип:

Nullable<T>[[DateTime]]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-OlderThan

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

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

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

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

Начиная с PowerShell 7.5 этот параметр можно использовать с любым значением для параметра PathType, для тестирования диапазона дат с помощью параметра NewerThan и тестирования возраста каталогов.

Дополнительные сведения см. в about_FileSystem_Provider.

Свойства параметров

Тип:

Nullable<T>[[DateTime]]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Path

Указывает путь для тестирования. Разрешено использование подстановочных символов. Если путь содержит пробелы, заключите его в кавычки.

Свойства параметров

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

Path
Position:0
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-PathType

Указывает тип конечного элемента в пути. Этот командлет возвращает $true, если элемент имеет указанный тип и $false, если это не так. Допустимые значения для этого параметра:

  • Container — элемент, содержащий другие элементы, такие как каталог или раздел реестра.
  • Leaf — элемент, который не содержит другие элементы, например файл.
  • Any — контейнер или лист.

Указывает, имеет ли конечный элемент в пути определенный тип.

Осторожность

До версии PowerShell 6.1.2, когда указываются вместе переключатели IsValid и PathType, командлет Test-Path игнорирует переключатель PathType и проверяет только синтаксический путь без подтверждения типа пути.

В соответствии с этой проблемой (, #8607), исправление этого поведения может привести к критическому изменению в будущей версии, где переключатели IsValid и PathType принадлежат отдельным наборам параметров, поэтому их нельзя использовать вместе, чтобы избежать путаницы.

Свойства параметров

Тип:TestPathType
Default value:None
Допустимые значения:Any, Container, Leaf
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:Тип

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-UseTransaction

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

Свойства параметров

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:usetx

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

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

String

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

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

Boolean

Командлет возвращает значение типа Boolean: .

Примечания

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

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