Skip to content

Get-GithubRepository doesn't appear to honor ErrorAction inside a a try/catch #428

Description

I write my code inside try/catch blocks and set ErrorActionPrefernce = "Stop" and clear the error stack. When I know something will fail and I want to handle it outside the try/catch then I will pass -ErrorAction SilentlyContinue and capture the result. In the situation described in the title, I have a pipeline in Azure Devops that I use to create a repo, but I need to test if it exists first, then create it if it doesn't. I do this because New-GithubRepository fails when you attempt to create a repo. Part of the pipeline passes the reposoity object onto the pipeline so tasks further down the flow can work properly.

I know at one point this worked as my code (similar to below) is well over a year old. I can confirm the issue exists in v16 and the current v17.

Issue Details

When passing -ErrorAction SilentlyContinue into cmdlet, it should be honored and not throw an error.

Steps to reproduce the issue

# JeffreyPatton@FSTNQL1 | 13:50:25 | 12-18-2023 | [88.78GB] D:\CODE\projects\mod-posh\powershell\production $ [master ≡]$SecureString='SecretToken'|ConvertTo-SecureString-AsPlainText -Force
$Credential=New-Object System.Management.Automation.PSCredential 'ignoreme',$SecurestringSet-GitHubConfiguration-SuppressTelemetryReminder
Set-GitHubAuthentication-Credential $Credential;
$ErrorActionPreferenceContinue# JeffreyPatton@FSTNQL1 | 13:50:25 | 12-18-2023 | [88.78GB] D:\CODE\projects\mod-posh\powershell\production $ [master ≡]$ErrorActionPreference='Stop'; try { $Result=Get-GitHubRepository-OwnerName 'valid-organization'-RepositoryName 'non-existent-repo'-ErrorAction SilentlyContinue; if ($Result-eq$null) {return$true} } catch {throw$_}
Invoke-WebRequest: E:\Documents\PowerShell\Modules\PowerShellForGitHub\0.17.0\GitHubCore.ps1:320
Line |320|$result=Invoke-WebRequest@params| ~~~~~~~~~~~~~~~~~~~~~~~~~
| { "message": "Not Found","documentation_url": "https://docs.github.com/rest/repos/repos#get-a-repository" }
# JeffreyPatton@FSTNQL1 | 13:50:31 | 12-18-2023 | [88.78GB] D:\CODE\projects\mod-posh\powershell\production $ [master ≡]

Verbose logs showing the problem

VERBOSE: [0.17.0] Executing: Get-GitHubRepository -OwnerName "valid-org" -RepositoryName "non-existent-repo" -ErrorAction 0
VERBOSE: Getting valid-org/non-existent-repo
VERBOSE: Accessing [Get] https://api.github.com/repos/valid-orgc/non-existent-repo? [Timeout = 0)]
VERBOSE: Requested HTTP/1.1 GET with 0-byte payload
VERBOSE: Received HTTP/1.1 response of content type application/json of unknown size
VERBOSE: [0.17.0] Executing: Set-TelemetryException -ErrorBucket "Get-GitHubRepository"
VERBOSE: Sending telemetry event data to https://dc.services.visualstudio.com/v2/track [Timeout = 0)]
VERBOSE: Requested HTTP/1.1 POST with 1462-byte payload
VERBOSE: Received HTTP/1.1 49-byte response of content type application/json

Suggested solution to the issue

I'm unsure how to resolve this issue

Requested Assignment

Operating System

OsName : Microsoft Windows 10 Enterprise
OsOperatingSystemSKU : EnterpriseEdition
OsArchitecture : 64-bit
WindowsVersion : 2009
WindowsBuildLabEx : 19041.1.amd64fre.vb_release.191206-1406
OsLanguage : en-US
OsMuiLanguages : {en-US}

PowerShell Version

$PSVersionTable
Name Value
---- -----
PSVersion 7.4.0
PSEdition Core
GitCommitId 7.4.0
OS Microsoft Windows 10.0.19045
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

Module Version

Running: 0.17.0
Installed: 0.17.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis relates to a bug in the existing module.triage neededAn issue that needs to be reviewed by a member of the team.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions