Public/Invoke-PowerCLI.ps1

function Invoke-PowerCLI {
    <#
    .SYNOPSIS
        Pass cmdlet to PowerCLI
    .EXAMPLE
        !powercli 'Get-VM'
    #>

    [PoshBot.BotCommand(CommandName = 'powercli', Permissions = 'vmwarepluginadmin')]
    [cmdletbinding()]
    param(
        [PoshBot.FromConfig('VIServerConfigStore')]
        [parameter(Mandatory = $true)]
        [string]$VIServerConfigStore,
        [parameter(Position=0, Mandatory = $false, ValueFromRemainingArguments = $true)]
        [string[]]$Arguments
    )

    Get-VIServerConfig $VIServerConfigStore | ForEach-Object {
        Connect-VIServer $_.VIServer -User $_.CredentialUser -Password $(LoadAndUnencryptKey "$($_.Path)\$($_.VIServer)-$($_.CredentialUser).clixml")
    }

    $cmdlets = $Arguments -join ';'
    $r = &([Scriptblock]::Create($cmdlets))
    Write-Output $r

    Disconnect-VIServer * -Confirm:$false
}