what started start scripts open how getting activar powershell

started - powershell scripts



Cómo comprobar si el complemento de PowerShell ya está cargado antes de llamar a Add-PSSnapin (5)

Debería poder hacerlo con algo como esto, donde consulta el Snapin pero le dice a PowerShell que no se equivoque si no puede encontrarlo:

if ( (Get-PSSnapin -Name MySnapin -ErrorAction SilentlyContinue) -eq $null ) { Add-PsSnapin MySnapin }

Tengo un grupo de scripts de PowerShell que a veces se ejecutan juntos, a veces de a uno por vez. Cada uno de los scripts requiere que se cargue un cierto complemento.

En este momento, cada script llama a Add-PSSnapin XYZ al principio.

Ahora si ejecuto varias secuencias de comandos consecutivamente, las siguientes secuencias de comandos arrojan:

No se puede agregar el complemento de Windows PowerShell XYZ porque se agrega casi por completo. Verifique el nombre del complemento y vuelva a intentarlo.

¿Cómo puedo hacer que cada script se compruebe para ver si el complemento ya está cargado antes de llamar a Add-PSSnapin?


Intenté la muestra del código de @ScotSaad pero no funcionó para mí. No he descubierto exactamente por qué, pero el cheque no era confiable, a veces tenía éxito y otras no. Descubrí que el uso de un filtro Where-Object en la propiedad Name funcionó mejor:

if ((Get-PSSnapin | ? { $_.Name -eq $SnapinName }) -eq $null) { Add-PSSnapin $SnapinName }

Código cortesía de this .


Scott Saads funciona, pero esto me parece algo más rápido. No lo he medido, pero parece cargarlo un poco más rápido, ya que nunca produce un mensaje de error.

$snapinAdded = Get-PSSnapin | Select-String $snapinName if (!$snapinAdded) { Add-PSSnapin $snapinName }


Scott ya te dio la respuesta. También puede cargarlo de todos modos e ignorar el error si ya está cargado:

Add-PSSnapin -Name <snapin> -ErrorAction SilentlyContinue


Sorprendentemente, nadie mencionó la forma nativa para que los scripts especifiquen las dependencias: la #REQUIRES -PSSnapin Microsoft.PowerShell... comment / preprocessor. De la misma manera, podría requerir elevación con -RunAsAdministrator , módulos con -Modules Module1,Module2 , y una versión específica de Runspace.

Obtenga más información escribiendo Get-Help about_requires