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', $Securestring
Set-GitHubConfiguration -SuppressTelemetryReminder
Set-GitHubAuthentication -Credential $Credential;
$ErrorActionPreference
Continue
# 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
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
Verbose logs showing the problem
Suggested solution to the issue
I'm unsure how to resolve this issue
Requested Assignment
Operating System
PowerShell Version
Module Version