function-Get-ChocoInfo.ps1

<#
    .SYNOPSIS
    Get-Choco queries the Chocolatey Package Repository for a given PackageName.
    .DESCRIPTION
    Get-Choco queries the Chocolatey Package Repository for a given PackageName and returns a custom object containing the name, the author and a path to a temporarily downloaded image.
    .EXAMPLE

    PS> Get-ChocoInfo -PackageName GoogleChrome

    Returns Package Data Object for GoogleChrome

    .EXAMPLE

    PS> Get-ChocoInfo -PackageName GoogleChrome -OutputPath "$Env:temp\ChocoApp"

    Returns Package Data for Google Chrome as JSON File in $env:temp\ChocoApp
#>

function Get-ChocoInfo {
    [Cmdletbinding(DefaultParameterSetName="Default")]
    param (
        [Parameter(Mandatory,ValueFromPipeline,Position=0)]
        [String[]]$PackageName,

        [Parameter(Mandatory,ParameterSetName="WithJson")]
        [ValidateScript({Test-Path $_})]
        [String]$OutputPath
    )

    begin {
        <#
        try {
            $chocoExe = (Get-Command "choco.exe" -ErrorAction Stop | Where-Object {$_.CommandType -eq "Application"}).Source
            Write-Verbose "Detected Chocolatey executable in: $chocoExe"
        }
        catch [System.Management.Automation.CommandNotFoundException] {
            Write-Error -Message "Could not find Chocolatey Executable."
        }
        #>

    }
    process {
        $rtnObj = @()
        foreach ($package in $PackageName) {
            if (test-chocopackage -PackageName $package) {
                Write-Verbose "Fetching Data for package: $package"
                $cmd = $chocoExe + " info " + $package
                Write-Verbose "Native command is: $cmd"
                $cmdRtn = Invoke-Expression $cmd
                Write-Verbose "Chocolatey return was: $cmdRtn"
                $chocoObj = Get-ChocoApiData -PackageName $package
                # $webData = Get-ChocoWebData -PackageName $package
                # $chocoObj = $chocoObj | Select-Object -Property *,@{Name = "ImageUrl";Expression = {$webData.ImageUrl}},@{Name = "Author";Expression = {$webData.Author}}
                $rtnObj += $chocoObj
            }
            else {
                Write-Verbose "No such package: $package"
            }
        }
    }

    end {
        if ($OutputPath) {
            foreach ($pkgObj in $rtnObj) {
                Write-Verbose "JSON export has been selected."
                $jsonPath = Join-Path $OutputPath -ChildPath ($pkgObj.PackageName + ".json")
                Write-Verbose "Output Path will be: $jsonPath"
                try {

                    $pkgObj | ConvertTo-Json | Out-File $jsonPath -ErrorAction Stop -Force
                    Write-Verbose "Successfully saved JSON File"
                    return $jsonPath
                }
                catch [System.Management.Automation.ActionPreferenceStopException] {
                    Write-Warning "Could not save JSON file: $jsonPath"
                }
            }
        }
        else {
            return $rtnObj
        }
    }
}