【问题标题】:How to verify snapin before add?添加前如何验证管理单元?
【发布时间】:2013-06-06 06:35:32
【问题描述】:

我在 Powershell 中遇到以下编译问题。

Add-PSSnapin:无法添加 Windows PowerShell 管理单元 VMware.VimAutomation.Core 因为它已经被添加了。验证名称 的管理单元,然后重试。

错误清楚地提到我需要验证管理单元的名称。我第一次自己执行时添加成功。

如何验证管理单元是否存在,如果不存在则添加?

【问题讨论】:

标签: powershell powershell-2.0


【解决方案1】:

如果尚未加载,您可以加载它:

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

你也可以加载它并忽略错误:

Add-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue

【讨论】:

    【解决方案2】:

    我收到以下错误,并认为这是因为 snapin 已加载,但似乎并非如此。

    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 语法还是很陌生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多