Title: [System.Management.Automation.PSCustomObject] weirdness · Issue #2295 · PowerShell/PowerShell · GitHub
Open Graph Title: [System.Management.Automation.PSCustomObject] weirdness · Issue #2295 · PowerShell/PowerShell
X Title: [System.Management.Automation.PSCustomObject] weirdness · Issue #2295 · PowerShell/PowerShell
Description: Steps to reproduce There are few issues with casting to [System.Management.Automation.PSCustomObject]. Note the full name! The short name [PSCustomObject] works just fine, I guess it uses a different (type accelerator) code path. First p...
Open Graph Description: Steps to reproduce There are few issues with casting to [System.Management.Automation.PSCustomObject]. Note the full name! The short name [PSCustomObject] works just fine, I guess it uses a differe...
X Description: Steps to reproduce There are few issues with casting to [System.Management.Automation.PSCustomObject]. Note the full name! The short name [PSCustomObject] works just fine, I guess it uses a differe...
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/2295
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[System.Management.Automation.PSCustomObject] weirdness","articleBody":"## Steps to reproduce\n\nThere are few issues with casting to [System.Management.Automation.PSCustomObject]. Note the full name! The short name [PSCustomObject] works just fine, I guess it uses a different (type accelerator) code path.\n## First part\n\nTry to create a [PSCustomObject] as described in a numerous of blog posts ([example](https://powershell.org/2013/04/24/pscustomobject-save-puppies-and-avoid-dead-ends/))\n\n```\n\u003e $a = [PSCustomObject]@{a = 'a'; b = 'b'} \n\u003e $a \na b \n- - \na b \n\n\u003e $a.GetType().FullName \nSystem.Management.Automation.PSCustomObject \n```\n\nSo far so good.\nNow, try to do it with the full name\n\n```\n\u003e [System.Management.Automation.PSCustomObject]@{a = 'a'; b = 'b'}\nCannot convert the \"System.Collections.Hashtable\" value of type \"System.Collections.Hashtable\" to type \n\"System.Management.Automation.PSCustomObject\".\nAt line:1 char:2\n+ [System.Management.Automation.PSCustomObject]@{a = 'a'; b = 'b'}\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : InvalidArgument: (:) [], RuntimeException\n + FullyQualifiedErrorId : ConvertToFinalInvalidCastException\n```\n## Expected behavior\n\nConversion succeed.\n## Actual behavior\n\n```\n\u003e [System.Management.Automation.PSCustomObject]@{a = 'a'; b = 'b'}\nCannot convert the \"System.Collections.Hashtable\" value of type \"System.Collections.Hashtable\" to type \n\"System.Management.Automation.PSCustomObject\".\nAt line:1 char:2\n+ [System.Management.Automation.PSCustomObject]@{a = 'a'; b = 'b'}\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : InvalidArgument: (:) [], RuntimeException\n + FullyQualifiedErrorId : ConvertToFinalInvalidCastException\n```\n## Second part\n\nNow try to cast the original object `$a`\n\n```\n\u003e [System.Management.Automation.PSCustomObject]$a \nCannot convert the \"@{a=a; b=b}\" value of type \"System.Management.Automation.PSCustomObject\" to type \n\"System.Management.Automation.PSCustomObject\".\nAt line:1 char:2\n+ [System.Management.Automation.PSCustomObject]$a\n+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n + CategoryInfo : InvalidArgument: (:) [], RuntimeException\n + FullyQualifiedErrorId : ConvertToFinalInvalidCastException\n\n```\n\nThe error message is pretty weird, since no actual conversion should be required.\n\n**Note:** this affects UX, because auto-completion on `[pscu` will expend it into `[System.Management.Automation.PSCustomObject` and not `[PSCustomObject`.\nThis is also inconsistent with `[pso` that expends into `[psobject` and not `[System.Management.Automation.PSObject]`\n\nAlso, note that this works fine\n\n```\n\u003e [System.Management.Automation.PSObject]@{a = 'a'; b = 'b'}\n```\n## Environment data\n\n\u003c!-- provide the output of $PSVersionTable --\u003e\n\n``` powershell\n\u003e $PSVersionTable\nName Value \n---- ----- \nPSVersion 6.0.0-alpha \nPSEdition Core \nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} \nBuildVersion 3.0.0.0 \nGitCommitId v6.0.0-alpha.10 \nCLRVersion \nWSManStackVersion 3.0 \nPSRemotingProtocolVersion 2.3 \nSerializationVersion 1.1.0.1 \n```\n\ncc @jpsnover \n","author":{"url":"https://github.com/vors","@type":"Person","name":"vors"},"datePublished":"2016-09-17T21:41:39.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/2295/PowerShell/issues/2295"}
| 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:ad31e5f0-b2b5-cf45-a61f-ad58ab52203a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 8960:1E24E5:13DEB2C:1C8A393:6A5A2903 |
| html-safe-nonce | c8988f8fffe1fd13734dae5e15d864d2067d00769b8b464590a710d856798b8f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4OTYwOjFFMjRFNToxM0RFQjJDOjFDOEEzOTM6NkE1QTI5MDMiLCJ2aXNpdG9yX2lkIjoiNzMwMzkyOTI5MjY3MzEzMjgwMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 45d5b096eef06418f334b2562077bfcf6fddf0eb0a8b6d09b4cd613ea69686d3 |
| hovercard-subject-tag | issue:177611154 |
| 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/2295/issue_layout |
| twitter:image | https://opengraph.githubassets.com/be281bd17da2add89d72363aed155346707df92b8c430ea9e94769a4c52b78fb/PowerShell/PowerShell/issues/2295 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/be281bd17da2add89d72363aed155346707df92b8c430ea9e94769a4c52b78fb/PowerShell/PowerShell/issues/2295 |
| og:image:alt | Steps to reproduce There are few issues with casting to [System.Management.Automation.PSCustomObject]. Note the full name! The short name [PSCustomObject] works just fine, I guess it uses a differe... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | vors |
| hostname | github.com |
| expected-hostname | github.com |
| None | 19c67ad7579d2401ff06e88a32ef45460fbb40fab3191c7f7582d5e166f326fc |
| 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 | a3dea2706161c733403beb02e41d5765d358d44e |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width