Public/Set/Set-ChocoApiKey.ps1
Function Set-ChocoApiKey { <# .SYNOPSIS Sets an api key for a particular source so it doesn't need to be specified every time. .DESCRIPTION Sets an api key for a particular source so it doesn't need to be specified every time. .PARAMETER Source The source to retrieve, save or delete the API key for .EXAMPLE Set-ChocoApiKey -Source https://chocolatey.org -ApiKey 1234 Source Status ApiKey ------ ------ ------ https://google.com Updated API key ***************** .OUTPUTS PSCustomObject #> [CmdletBinding(SupportsShouldProcess)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $true, Position = 0)] [String] $Source, [Parameter(Mandatory = $true, Position = 1)] [String] $ApiKey ) if ((Test-ChocoInstalled) -And (Confirm-IsAdmin)) { Try { if ($PSCmdlet.ShouldProcess($Source)) { $CommandResult = Invoke-ChocoCommand -Arguments "apikey", "-s=$Source", "-k=$ApiKey" if ($CommandResult.Status -ne "Success") { Write-Error "Error during processing the request. See the chocolatey log for details." Exit 1 } if ($CommandResult.RawOutput -like "Nothing to change*") { Write-Verbose "Nothing to change" $Status = "Nothing to change" } elseif ($CommandResult.RawOutput -like "Updated API key*") { Write-Verbose "Updated API key" $Status = "Updated API key" } elseif ($CommandResult.RawOutput -like "Added API key*") { Write-Verbose "Added API key" $Status = "Added API key" } $Response = [PSCustomObject]@{ Source = $Source Status = $Status } } } Catch { $Response = [PSCustomObject]@{ Source = $Source Status = "Error. Cannot process the request." } } Return $Response } } |