2012-03-15 12 views
7

Estoy recibiendo el siguiente problema de compilación en Powershell.¿Cómo verificar snapin antes de agregar?

Add-PSSnapin : Cannot add Windows PowerShell snap-in VMware.VimAutomation.Core because it is already added. Verify the name of the snap-in and try again.

El error indica claramente que necesito verificar el nombre del complemento. Se agregó con éxito cuando ejecuto la primera vez.

¿Cómo verificar el complemento existe, si no, luego agregar?

+0

posible duplicado de [Cómo comprobar si el complemento de PowerShell ya está cargado antes de llamar a Add-PSSnapin] (http://stackoverflow.com/questions/1477994/how-to-check-if-powershell-snap-in -is-already-loaded-before-calling-add-pssnapin) – JohnC

Respuesta

11

Puede cargarlo si no está ya cargado:

if(-not (Get-PSSnapin VMware.VimAutomation.Core)) 
{ 
    Add-PSSnapin VMware.VimAutomation.Core 
} 

También podría cargar todos modos e ignorar el error:

Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue 
0

que estaba recibiendo los siguientes errores y pensó que era porque el complemento ya estaba cargado, pero no parece ser el caso.

ERROR: The specified mount name 'vmstores' is already in use. 
ERROR: The specified mount name 'vis' is already in use. 

La solución proporcionada anteriormente es sin duda mucho más simplista que lo que comencé a escribir a continuación.

Supongo que el único factor que contribuirá a esto es ver si el snapin está registrado primero.

$snaps1 = Get-PSSnapin -Registered 
$snaps2 = Get-PSSnapin *VMWare -ErrorAction SilentlyContinue 

$vmsnap = 0 

foreach ($snap1 in $snaps1) { 
    if ($snap1.name -eq "VMware.VimAutomation.Core") { 
     Write-Host "VM Snapin Registered..." 
     $vmsnap = 1 
     } 
    } 

if ($vmsnap -eq 0) { 
    Write-Host "VMWare Snapin NOT Registered. Ensure the CLI is installed and available on machine." 
} 

if ($vmsnap -eq 1) { 
    foreach ($snap2 in $snaps2) { 
     if($snap2.name -eq "VMware.VIMAutomation.Core") { 
      Write-Host "VMware Snapin Already Loaded..." 
      $vmsnap = 2 
      } 
     } 
    } 

if ($vmsnap -ne 2) { 
    Write-Host "Loading VMware Snapin..." 
Add-PSSnapin VMware.VimAutomation.Core 
} 

concedido todavía estoy muy muy muy nuevo a la sintaxis PS.

Cuestiones relacionadas