Как проверить оснастку перед добавлением? - PullRequest
7 голосов
/ 15 марта 2012

У меня возникает следующая проблема компиляции в Powershell.

Add-PSSnapin: Не удается добавить оснастку Windows PowerShell VMware.VimAutomation.Core, поскольку она уже добавлена.Проверьте имя оснастки и повторите попытку.

В ошибке четко указано, что мне нужно проверить имя оснастки.Он был успешно добавлен при первом запуске.

Как проверить наличие оснастки, если нет, то добавить?

Ответы [ 2 ]

11 голосов
/ 15 марта 2012

Вы можете загрузить его, если он еще не загружен:

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

Вы также можете загрузить его и проигнорировать ошибку:

Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue
0 голосов
/ 06 июня 2013

Я получил следующие ошибки и подумал, что это потому, что оснастка уже была загружена, но, похоже, это не так.

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

Решение, приведенное выше, безусловно, намного проще, чем то, что я начал писать ниже.

Полагаю, что одним из факторов, способствующих этому, будет поиск первичной регистрации оснастки.

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

предоставлено Я все еще очень, очень, очень плохо знаком с синтаксисом PS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...