Public/Add/Add-ChocoSource.ps1
Function Add-ChocoSource { <# .SYNOPSIS Add a new chocolatey source. .DESCRIPTION Add a new chocolatey source. .PARAMETER Name The name of the source. .PARAMETER Uri The Uri of the source. .PARAMETER Credential The credential to use to access the source. .EXAMPLE Add-ChocoSource Name Uri UserName ---- --- -------- chocolatey https://community.chocolatey.org/api/v2/ .OUTPUTS PSCustomObject #> [CmdletBinding(SupportsShouldProcess)] [OutputType([PSCustomObject])] param( [Parameter(Mandatory = $true)] [String] $Name, [Parameter(Mandatory = $true)] [String] $Uri, [PSCredential] $Credential ) begin { if ((Test-ChocoInstalled) -And (Confirm-IsAdmin)) { [String[]]$Arguments = "source", "add", "-s=""$Uri""", "-n=$Name" if ($Credential) { $Arguments += "-u=$($Credential.GetNetworkCredential().UserName)" $Arguments += "-p=$($Credential.GetNetworkCredential().Password)" } } } process { try { if ($PSCmdlet.ShouldProcess($Name, "Add-ChocoSource")) { $CommandOutput = Invoke-ChocoCommand $Arguments if ($CommandOutput.RawOutput -like "Added*") { $Status = "Added" } elseif ($CommandOutput.RawOutput -like "Updated*") { $Status = "Updated" } elseif ($CommandOutput.RawOutput -like "Nothing to change*") { $Status = "Nothing to change" } Return [PSCustomObject]@{ Name = $Name Uri = $Uri Status = $Status } } if ($WhatIfPreference) { $CommandOutput = Invoke-ChocoCommand ($Arguments + "--whatif") if ($CommandOutput.RawOutput -like "Would have made a change to the configuration.") { $Status = "Would have made a change to the configuration." } Return [PSCustomObject]@{ Name = $Name Uri = $Uri Status = $Status } } } catch { Write-Error "Cannot add source. Error: $_" } } end { } } |