diff --git a/src/dsc/psresourceget.ps1 b/src/dsc/psresourceget.ps1 index f6f9eb50d..8bc880f28 100644 --- a/src/dsc/psresourceget.ps1 +++ b/src/dsc/psresourceget.ps1 @@ -376,6 +376,11 @@ function GetOperation { [string]$ResourceType ) + if ([string]::IsNullOrEmpty($stdinput)) { + Write-Trace -level error -message "Get operation requires --input with the resource properties. No input was provided." + exit [ExitCode]::Error + } + $inputObj = $stdinput | ConvertFrom-Json -ErrorAction Stop Write-Trace -message "Starting Get operation for ResourceType: $ResourceType" -level trace diff --git a/test/DscResource/PSResourceGetDSCResource.Tests.ps1 b/test/DscResource/PSResourceGetDSCResource.Tests.ps1 index ce320dc62..3fd5af70a 100644 --- a/test/DscResource/PSResourceGetDSCResource.Tests.ps1 +++ b/test/DscResource/PSResourceGetDSCResource.Tests.ps1 @@ -142,6 +142,16 @@ Describe 'Repository Resource Tests' -Tags 'CI' { } } + It 'Get operation without --input exits with a non-zero code and does not produce an unhandled exception' { + $output = & $script:dscExe resource get --resource Microsoft.PowerShell.PSResourceGet/Repository -o json 2>&1 + $outputText = $output | Out-String + $LASTEXITCODE | Should -Not -Be 0 + $outputText | Should -Match '--input' + $outputText | Should -Match 'required' + $outputText | Should -Not -Match 'Cannot bind argument to parameter' + $outputText | Should -Not -Match 'Unhandled exception' + } + It 'Can delete a Repository resource instance' { # First, create a repository to delete Register-PSResourceRepository -Name 'TestRepoToDelete' -uri 'https://www.doesnotexist.com' -ErrorAction SilentlyContinue -APIVersion Local