2012-03-15 30 views
7

Tôi đang gặp vấn đề biên dịch sau trong Powershell.Cách xác minh snapin trước khi thêm?

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.

Lỗi rõ ràng đề cập đến rằng tôi cần phải xác minh tên của snap-in. Nó đã được thêm thành công khi tôi thực hiện lần đầu tiên.

Làm cách nào để xác minh phần đính kèm tồn tại, nếu không thì hãy thêm?

+0

bản sao có thể có của [Cách kiểm tra xem snap-in PowerShell đã được tải chưa trước khi gọi Add-PSSnapin] (http://stackoverflow.com/questions/1477994/how-to-check-if-powershell-snap-in -is-already-loaded-before-calling-add-pssnapin) – JohnC

Trả lời

11

Bạn có thể tải nó nếu nó không được tải đã:

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

Bạn cũng có thể tải nó anyway và bỏ qua những lỗi:

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

tôi đã nhận được các lỗi sau đây và nghĩ đó là vì snapin đã được tải nhưng nó không có vẻ như vậy.

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

Giải pháp được cung cấp ở trên chắc chắn đơn giản hơn nhiều so với những gì tôi bắt đầu viết bên dưới.

Tôi cho rằng yếu tố đóng góp sẽ là tôi xem xét liệu snapin có được đăng ký trước không.

$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 
} 

đã cấp Tôi vẫn rất rất mới với cú pháp PS.

Các vấn đề liên quan