Командлет Test-Path
специально разработан для этого, он определяет, существуют ли элементы пути. Возвращает логическое значение и не генерирует ошибку.
Командлет Get-Item
(и аналогичный) также можно использовать, но не напрямую. Один способ уже предложен: используйте -ErrorAction SilentlyContinue
. Может быть важно знать, что на самом деле это все еще вызывает ошибку; это просто не показывает это. Проверьте набор ошибок $Error
после команды, ошибка есть.
Только для информации
Есть забавный способ избежать этой ошибки (он также работает с некоторыми другими командлетами, такими как Get-Process
, у которых нет альтернативы Test-Path
). Предположим, мы собираемся проверить наличие элемента «MyApp.exe» (или процесса «MyProcess»). Затем эти команды ничего не возвращают для отсутствующих целей и в то же время не генерируют ошибок:
Get-Item "[M]yApp.exe"
Get-Process "[M]yProcess"
Эти командлеты не генерируют ошибки для подстановочных знаков. И мы используем эти забавные символы подстановки, которые на самом деле соответствуют отдельным элементам.