Tengo un script de PowerShell que debe ejecutarse en varios hosts (PowerGUI, PowerShell ISE, etc.), pero tengo un problema donde algunas veces no funciona un cmdlet existe bajo uno de los hosts. ¿Hay alguna forma de comprobar si existe un cmdlet para poder ajustar el código en un bloque if y hacer otra cosa cuando no existe?Cómo comprobar si existe un cmdlet en PowerShell en tiempo de ejecución a través del script
Sé que podría usar el $host.name
para seccionar el código que se supone que se ejecutará en cada host, pero preferiría usar Feature Detection en caso de que el cmdlet se agregue alguna vez en el futuro.
También podría usar un bloque try/catch, pero dado que se ejecuta en código administrado, supongo que no es posible detectar si un cmdlet está instalado por código.
No sabía que había un parámetro ErrorAction. Se encontró la lista de todos los parámetros comunes aquí: http://msdn.microsoft.com/en-us/library/dd901844(VS.85).aspx, que es bueno saber. ¡Gracias! –
NOTA: también puede verificar los Módulos usando 'if (get-module | Where-Object {$ _. Name -eq" ServerManager "}) {" Module Exists "}'. Más detalles: http://stackoverflow.com/questions/10027156/how-to-import-system-modules-automatically –
cmdlet puede existir, pero no estará disponible. Buen ejemplo: Get-WinEvent existe en Windows 2003, pero arroja la excepción NotImplemented. ¿Cómo manejarías esta situación? – Neolisk