Tengo un grupo de scripts de PowerShell que a veces se ejecutan juntos, a veces uno a la vez. Cada uno de los scripts requiere que se cargue un complemento específico.
En este momento, cada script está llamando Add-PSSnapin XYZ
al principio.
Ahora, si ejecuto varios scripts consecutivos, los scripts posteriores arrojan:
No se puede agregar el complemento XYZ de Windows PowerShell porque ya se agregó. Verifique el nombre del complemento y vuelva a intentarlo.
¿Cómo puedo hacer que cada secuencia de comandos verifique si el complemento ya está cargado antes de llamar a Add-PSSnapin?
powershell
Joshuapoehls
fuente
fuente
Scott ya te dio la respuesta. También puede cargarlo de todos modos e ignorar el error si ya está cargado:
fuente
Sorprendentemente, nadie mencionó la forma nativa en que los scripts especifican dependencias: la
#REQUIRES -PSSnapin Microsoft.PowerShell...
directiva de comentario / preprocesador. De todos modos, podría requerir elevación con-RunAsAdministrator
, módulos con-Modules Module1,Module2
y una versión específica de Runspace.Leer más escribiendo
Get-Help about_requires
fuente
Probé la muestra de código de @ ScottSaad pero no funcionó para mí. No he descubierto exactamente por qué, pero la verificación no fue confiable, a veces tuvo éxito y otras no. Descubrí que usar un
Where-Object
filtrado en laName
propiedad funcionaba mejor:Código cortesía de esto .
fuente
Scott Saads funciona, pero esto me parece algo más rápido. No lo he medido pero parece cargarse un poco más rápido ya que nunca produce un mensaje de error.
fuente