Title: 7.4.0 Breaking change: Passing -OutFile $null to Invoke-WebRequest fails · Issue #20744 · PowerShell/PowerShell · GitHub
Open Graph Title: 7.4.0 Breaking change: Passing -OutFile $null to Invoke-WebRequest fails · Issue #20744 · PowerShell/PowerShell
X Title: 7.4.0 Breaking change: Passing -OutFile $null to Invoke-WebRequest fails · Issue #20744 · PowerShell/PowerShell
Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerShell 5.1 and PowerShell. Steps to reprodu...
Open Graph Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
X Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/20744
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"7.4.0 Breaking change: Passing -OutFile $null to Invoke-WebRequest fails","articleBody":"### Prerequisites\r\n\r\n- [X] Write a descriptive title.\r\n- [X] Make sure you are able to repro it on the [latest released version](https://github.com/PowerShell/PowerShell/releases)\r\n- [X] Search the existing issues.\r\n- [X] Refer to the [FAQ](https://github.com/PowerShell/PowerShell/blob/master/docs/FAQ.md).\r\n- [X] Refer to [Differences between Windows PowerShell 5.1 and PowerShell](https://learn.microsoft.com/powershell/scripting/whats-new/differences-from-windows-powershell).\r\n\r\n### Steps to reproduce\r\n\r\nMinimal version\r\n\r\n```\r\nInvoke-WebRequest \"http://www.microsoft.com\" -OutFile $null\r\n```\r\n\r\nVersion that is more closely related to how that sneaks in as a surprise script breaker\r\n\r\n```\r\nfunction DoTheThing($file) {\r\n $Params=@{\r\n Uri=\"http://www.microsoft.com\"\r\n OutFile=$file\r\n }\r\n Invoke-WebRequest @Params\r\n}\r\n\r\nDoTheThing\r\n```\r\n\r\n\r\n### Expected behavior\r\n\r\n```console\r\nShould return the results of the web call to the output stream\r\n```\r\n\r\n\r\n### Actual behavior\r\n\r\n```console\r\nInvoke-WebRequest: Cannot validate argument on parameter 'OutFile'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.\r\n```\r\n\r\n(Works correctly in 7.2.17 and 7.3.3)\r\n```\r\n\r\n\r\n### Error details\r\n\r\n```console\r\nException : \r\n Type : System.Management.Automation.ParameterBindingValidationException\r\n Message : Cannot validate argument on parameter 'OutFile'. The argument is null or empty. Provide an argument that is not null or empty, and then try t\r\nhe command again.\r\n ParameterName : OutFile\r\n ParameterType : string\r\n ErrorId : ParameterArgumentValidationError\r\n Line : 1\r\n Offset : 46\r\n CommandInvocation : \r\n MyCommand : Invoke-WebRequest\r\n ScriptLineNumber : 1\r\n OffsetInLine : 1\r\n HistoryId : 35\r\n Line : Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n Statement : Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n PositionMessage : At line:1 char:1\r\n + Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n InvocationName : Invoke-WebRequest\r\n PipelineLength : 1\r\n PipelinePosition : 1\r\n ErrorRecord : \r\n Exception : \r\n Type : System.Management.Automation.ParentContainsErrorRecordException\r\n Message : Cannot validate argument on parameter 'OutFile'. The argument is null or empty. Provide an argument that is not null or empty, and then try the\r\n command again.\r\n HResult : -2146233087\r\n CategoryInfo : InvalidData: (:) [Invoke-WebRequest], ParentContainsErrorRecordException\r\n FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeWebRequestCommand\r\n InvocationInfo : \r\n MyCommand : Invoke-WebRequest\r\n ScriptLineNumber : 1\r\n OffsetInLine : 46\r\n HistoryId : 35\r\n Line : Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n Statement : @h\r\n PositionMessage : At line:1 char:46\r\n + Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n + ~~\r\n CommandOrigin : Internal\r\n ScriptStackTrace : at \u003cScriptBlock\u003e, \u003cNo file\u003e: line 1\r\n TargetSite : \r\n Name : BindParameter\r\n DeclaringType : System.Management.Automation.ParameterBinderBase, System.Management.Automation, Version=7.4.0.500, Culture=neutral, PublicKeyToken=31bf3856ad\r\n364e35\r\n MemberType : Method\r\n Module : System.Management.Automation.dll\r\n Data : System.Collections.ListDictionaryInternal\r\n InnerException : \r\n Type : System.Management.Automation.ValidationMetadataException\r\n ErrorRecord : \r\n Exception : \r\n Type : System.Management.Automation.ParentContainsErrorRecordException\r\n Message : The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.\r\n HResult : -2146233087\r\n CategoryInfo : MetadataError: (:) [], ParentContainsErrorRecordException\r\n FullyQualifiedErrorId : ArgumentIsNull\r\n TargetSite : \r\n Name : Validate\r\n DeclaringType : System.Management.Automation.ValidateNotNullOrAttributeBase\r\n MemberType : Method\r\n Module : System.Management.Automation.dll\r\n Message : The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.\r\n Source : System.Management.Automation\r\n HResult : -2146233087\r\n StackTrace : \r\n at System.Management.Automation.ValidateNotNullOrAttributeBase.Validate(Object arguments, EngineIntrinsics engineIntrinsics)\r\n at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, ParameterBinding\r\nFlags flags)\r\n Source : System.Management.Automation\r\n HResult : -2146233087\r\n StackTrace : \r\n at System.Management.Automation.ParameterBinderBase.BindParameter(CommandParameterInternal parameter, CompiledCommandParameter parameterMetadata, ParameterBinding\r\nFlags flags)\r\n at System.Management.Automation.CmdletParameterBinderController.BindParameter(CommandParameterInternal argument, MergedCompiledCommandParameter parameter, Paramet\r\nerBindingFlags flags)\r\n at System.Management.Automation.CmdletParameterBinderController.BindParameter(UInt32 parameterSets, CommandParameterInternal argument, MergedCompiledCommandParame\r\nter parameter, ParameterBindingFlags flags)\r\n at System.Management.Automation.CmdletParameterBinderController.BindNamedParameter(UInt32 parameterSets, CommandParameterInternal argument, MergedCompiledCommandP\r\narameter parameter)\r\n at System.Management.Automation.ParameterBinderController.BindNamedParameters(UInt32 parameterSets, Collection`1 arguments)\r\n at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParametersNoValidation(Collection`1 arguments)\r\n at System.Management.Automation.CmdletParameterBinderController.BindCommandLineParameters(Collection`1 arguments)\r\n at System.Management.Automation.CommandProcessor.BindCommandLineParameters()\r\n at System.Management.Automation.CommandProcessor.Prepare(IDictionary psDefaultParameterValues)\r\n at System.Management.Automation.CommandProcessorBase.DoPrepare(IDictionary psDefaultParameterValues)\r\n at System.Management.Automation.Internal.PipelineProcessor.Start(Boolean incomingStream)\r\n at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)\r\n--- End of stack trace from previous location ---\r\n at System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(Object input)\r\n at System.Management.Automation.PipelineOps.InvokePipeline(Object input, Boolean ignoreInput, CommandParameterInternal[][] pipeElements, CommandBaseAst[] pipeElem\r\nentAsts, CommandRedirection[][] commandRedirections, FunctionContext funcContext)\r\n at System.Management.Automation.Interpreter.ActionCallInstruction`6.Run(InterpretedFrame frame)\r\n at System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)\r\nCategoryInfo : InvalidData: (:) [Invoke-WebRequest], ParameterBindingValidationException\r\nFullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.InvokeWebRequestCommand\r\nInvocationInfo : \r\n MyCommand : Invoke-WebRequest\r\n ScriptLineNumber : 1\r\n OffsetInLine : 46\r\n HistoryId : 35\r\n Line : Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n Statement : @h\r\n PositionMessage : At line:1 char:46\r\n + Invoke-WebRequest \"http://www.microsoft.com\" @h\r\n + ~~\r\n CommandOrigin : Internal\r\nScriptStackTrace : at \u003cScriptBlock\u003e, \u003cNo file\u003e: line 1\r\n```\r\n\r\n\r\n### Environment data\r\n\r\n```powershell\r\nName Value\r\n---- -----\r\nPSVersion 7.4.0\r\nPSEdition Core\r\nGitCommitId 7.4.0\r\nOS Red Hat Enterprise Linux 8.8 (Ootpa)\r\nPlatform Unix\r\nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}\r\nPSRemotingProtocolVersion 2.3\r\nSerializationVersion 1.1.0.1\r\nWSManStackVersion 3.0\r\n```\r\n\r\n\r\n### Visuals\r\n\r\nNo really necessary, literally just paste `Invoke-WebRequest \"http://www.microsoft.com\" -OutFile $null` into a shell and watch the error show up","author":{"url":"https://github.com/nowakca","@type":"Person","name":"nowakca"},"datePublished":"2023-11-21T18:16:21.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/20744/PowerShell/issues/20744"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:dbdbf061-b171-c26d-450b-5c6c89d9bb44 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B200:2BB762:25F183A:34CF58E:6A54A39E |
| html-safe-nonce | fbcf70aec16446a8536273cc2eb3ce08087f477afbe1d7d1c07f9abdcb945de8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCMjAwOjJCQjc2MjoyNUYxODNBOjM0Q0Y1OEU6NkE1NEEzOUUiLCJ2aXNpdG9yX2lkIjoiMzc2MTIzMDQ0OTE4OTYyNjc4MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 560202c59f2262d1d769f23b8d52a053689812f74e8d82505c17b2b4da78677b |
| hovercard-subject-tag | issue:2004881163 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/20744/issue_layout |
| twitter:image | https://opengraph.githubassets.com/bef743a61129e98066cc628f28bfedf8ffa28b2bf8a18ee8727af1b09541298a/PowerShell/PowerShell/issues/20744 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/bef743a61129e98066cc628f28bfedf8ffa28b2bf8a18ee8727af1b09541298a/PowerShell/PowerShell/issues/20744 |
| og:image:alt | Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | nowakca |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git |
| octolytics-dimension-user_id | 11524380 |
| octolytics-dimension-user_login | PowerShell |
| octolytics-dimension-repository_id | 49609581 |
| octolytics-dimension-repository_nwo | PowerShell/PowerShell |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 49609581 |
| octolytics-dimension-repository_network_root_nwo | PowerShell/PowerShell |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | f8cfff6384f62259baea531c7f58bc7040f8dd92 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width