PowerCLI function: Remove-Vib

By | 2014-09-10

powercli-logoA PowerCLI function to remove Vibs installed on a VMware host.
Expects a VMHost object, and a list og vib names.
You must use the -Remove switch to actually remove vibs, otherwise it will just list the installed vibs matching the provided list of vib names.
If you add the -Restart switch the VMware host will be restarted after removing the vibs

function Remove-Vib
{
    [CmdletBinding(SupportsShouldProcess=$True)]
    Param(
        [Parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true)]
        [VMware.VimAutomation.ViCore.Impl.V1.Inventory.VMHostImpl[]]
        $VMHosts,
        [Parameter(Mandatory=$true,Position=1)]
        [string[]]
        $VibNames,
        [switch]
        $Remove=$false,
        [switch]
        $Restart=$false
    )
    Begin {}
    Process {
        foreach ($VMHost in $VMHosts) {
#            Write-Output "Searching for vibs on VMHost: $($VMHost.Name)"
            $esxcli = $VMHost | Get-EsxCli
            $vibs = $esxcli.software.vib.list() | Where { $VibNames -contains $_.Name }
            if ($vibs) {
#                Write-Output "Vibs found:"
                $vibs | Select @{l='VMHost';e={$VMHost.Name}}, Name, ReleaseDate, Version
                if ($Remove -eq $true) {
                    foreach ($vib in $vibs) {
                        Write-Output "Removing vib: $($vib.Name)"
                        $esxcli.software.vib.remove($null, $true, $false, $true, $vib.Name)
                    }
                    if ($Restart -eq $true) {
                        Write-Output "Restarting VMHost: $($VMHost.Name)"
                        Restart-VMHost -VMHost $VMHost -Confirm:$false
                    }
                }

            }
            else {
                Write-Output "$($VMHost.Name): No vibs found"
            }
        }
    }
    End {}
}

Leave a Reply

Your email address will not be published. Required fields are marked *