El cmdlet Test-Path
está diseñado específicamente para esto, se determina si existen elementos de un camino. Devuelve un valor booleano y no genera un error.
El cmdlet Get-Item
(y similar) se puede utilizar también, pero no directamente. Una forma ya está propuesta: use -ErrorAction SilentlyContinue
. Puede ser importante saber que de hecho todavía genera un error; simplemente no lo muestra. Compruebe la colección de errores $Error
después del comando, el error está allí.
Una información
Hay una manera divertida para evitar este error (que también funciona con otros cmdlets como Get-Process
que no tienen una alternativa Test-Path
). Supongamos que estamos a punto de verificar la existencia de un elemento "MyApp.exe" (o un proceso "MyProcess"). A continuación, estos comandos no retorno de los objetivos que faltan y, al mismo tiempo que generan ningún error:
Get-Item "[M]yApp.exe"
Get-Process "[M]yProcess"
Estos cmdlets no generan errores para los objetivos de comodín. Y usamos estos divertidos comodines que en realidad coinciden con elementos individuales.
'-ErrorAction SilentlyContinue' se puede acortar a' -ea si', 'dir app_offline.htm -ea si | del' – yzorg
Por razones de legibilidad, no abreviaría en un script (según la pregunta). – Vimes
Estrictamente hablando, esta no es una respuesta a la pregunta, la respuesta de la ruta de prueba a continuación es un cheque real – SteveC