René's URL Explorer Experiment


Title: Modules containing colliding names causes side-effects that are visible in other modules · Issue #12036 · PowerShell/PowerShell · GitHub

Open Graph Title: Modules containing colliding names causes side-effects that are visible in other modules · Issue #12036 · PowerShell/PowerShell

X Title: Modules containing colliding names causes side-effects that are visible in other modules · Issue #12036 · PowerShell/PowerShell

Description: The way that PowerShell resolves commands with colliding names seems to have changed sometime between PowerShell 5.1 and 7. The new behavior is problematic because it introduces the possibility of the following happening: Invoking a comm...

Open Graph Description: The way that PowerShell resolves commands with colliding names seems to have changed sometime between PowerShell 5.1 and 7. The new behavior is problematic because it introduces the possibility of ...

X Description: The way that PowerShell resolves commands with colliding names seems to have changed sometime between PowerShell 5.1 and 7. The new behavior is problematic because it introduces the possibility of ...

Opengraph URL: https://github.com/PowerShell/PowerShell/issues/12036

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Modules containing colliding names causes side-effects that are visible in other modules","articleBody":"The way that PowerShell resolves commands with colliding names seems to have changed sometime between PowerShell 5.1 and 7.  The new behavior is problematic because it introduces the possibility of the following happening:\r\n\r\nInvoking a command in one module can have the side effect that changes the command to which a different name in an unrelated module resolves.\r\n\r\nIn other words, (at least by default in PowerShell 7, it seems) one can never be sure that code invoked in a different module will not inadvertently change the command to which a name in your module will resolve.\r\n\r\nThis seems like something I need to take into careful account when designing modules.  Accordingly, I'm hoping to find answers to the following questions:\r\n\r\n1. Is this the design intent of PowerShell?  If so, how should modules be designed to prevent other modules from inadvertently changing the commands to which names resolve?\r\n2. Is there some way to override this behavior so that a module imported in one module doesn't appear in another?\r\n\r\n---\r\n\r\nOther notes:\r\n\r\n* this emerged from #12014 \r\n\r\n# Steps to reproduce\r\n\r\nCreate the following well-defined module `q`  in `$Env:PSModulePath`:\r\n```PowerShell\r\n# q.psd1\r\n@{\r\n    ModuleVersion     = '0.1.0'\r\n    RootModule        = 'q.psm1'\r\n    FunctionsToExport = 'Get-FileHash','q1'\r\n}\r\n```\r\n```PowerShell\r\n# q.psm1\r\nfunction Get-FileHash {}\r\nfunction q1 {}\r\n```\r\n\r\nInvoke the following:\r\n\r\n```powershell\r\nNew-Module m {\r\n    function m1 {\r\n        [pscustomobject]@{\r\n            Call        = $MyInvocation.MyCommand.Name\r\n            CommandType = Get-Command Get-FileHash | % CommandType\r\n            Module      = Get-Command Get-FileHash | % Module | % {[System.IO.FileInfo]::new($_.Path).Name}\r\n        }\r\n    }\r\n    function m2 {q1} # this call should not alter the Get-FileHash that is visible in module p\r\n} | Import-Module\r\nNew-Module p {\r\n    function p1 {\r\n        [pscustomobject]@{\r\n            Call        = $MyInvocation.MyCommand.Name\r\n            CommandType = Get-Command Get-FileHash | % CommandType\r\n            Module      = Get-Command Get-FileHash | % Module | % {[System.IO.FileInfo]::new($_.Path).Name}\r\n        }\r\n    }\r\n} | Import-Module\r\n\r\nm1\r\np1\r\nm2\r\nm1\r\np1\r\n```\r\n\r\n# Expected behavior\r\n\r\nEither this behavior (which is how PowerShell 5.1 behaves)\r\n\r\n```none\r\nCall CommandType Module\r\n---- ----------- ------\r\nm1      Function q.psm1\r\np1      Function q.psm1\r\nm1      Function q.psm1\r\np1      Function q.psm1\r\n```\r\n\r\nor this behavior\r\n\r\n```none\r\nCall CommandType Module\r\n---- ----------- ------\r\nm1        Cmdlet Microsoft.PowerShell.Utility.psd1\r\np1        Cmdlet Microsoft.PowerShell.Utility.psd1\r\nm1      Function q.psm1\r\np1        Cmdlet Microsoft.PowerShell.Utility.psd1\r\n```\r\n\r\n# Actual behavior\r\n\r\n```none\r\nCall CommandType Module\r\n---- ----------- ------\r\nm1        Cmdlet Microsoft.PowerShell.Utility.psd1\r\np1        Cmdlet Microsoft.PowerShell.Utility.psd1\r\nm1      Function q.psm1\r\np1      Function q.psm1\r\n```\r\n\r\n# Environment data\r\n\r\n\u003c!-- provide the output of $PSVersionTable --\u003e\r\n\r\n```none\r\n\r\nName                           Value\r\n----                           -----\r\nPSVersion                      7.0.0\r\nPSEdition                      Core\r\nGitCommitId                    7.0.0\r\nOS                             Microsoft Windows 6.3.9600\r\nPlatform                       Win32NT\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","author":{"url":"https://github.com/alx9r","@type":"Person","name":"alx9r"},"datePublished":"2020-03-05T17:53:11.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/12036/PowerShell/issues/12036"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:43a19df1-236f-7dec-1ffe-e9128805f80a
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idDB0C:1FB764:ED3C95:140EA57:6A570855
html-safe-nonce91884474d94a7f85ebc33f8a4cbc9d8d7ff03e3e7b1d07292b5a63abd0fb6e26
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQjBDOjFGQjc2NDpFRDNDOTU6MTQwRUE1Nzo2QTU3MDg1NSIsInZpc2l0b3JfaWQiOiI4Nzg4NTc0MTU5NzU0NDMwNTQ5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac53eb8fbaf6ec2380825a9cde08c153a44260302a4798159659ba1cb45be988e0
hovercard-subject-tagissue:576430137
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/12036/issue_layout
twitter:imagehttps://opengraph.githubassets.com/236d8375953a31246095adc5b8c9a813bedb31d95c70159bb325c0d3b176ad75/PowerShell/PowerShell/issues/12036
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/236d8375953a31246095adc5b8c9a813bedb31d95c70159bb325c0d3b176ad75/PowerShell/PowerShell/issues/12036
og:image:altThe way that PowerShell resolves commands with colliding names seems to have changed sometime between PowerShell 5.1 and 7. The new behavior is problematic because it introduces the possibility of ...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamealx9r
hostnamegithub.com
expected-hostnamegithub.com
None4eb29e5f807bd95e41196adfbc6d28f9af12d89830d8b684f3e871774ddff2fc
turbo-cache-controlno-preview
go-importgithub.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git
octolytics-dimension-user_id11524380
octolytics-dimension-user_loginPowerShell
octolytics-dimension-repository_id49609581
octolytics-dimension-repository_nwoPowerShell/PowerShell
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id49609581
octolytics-dimension-repository_network_root_nwoPowerShell/PowerShell
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
releaseb056788a129fb0194b61f2ebb4c43f6a9f4dfd27
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/PowerShell/PowerShell/issues/12036#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F12036
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FPowerShell%2FPowerShell%2Fissues%2F12036
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=PowerShell%2FPowerShell
Reloadhttps://github.com/PowerShell/PowerShell/issues/12036
Reloadhttps://github.com/PowerShell/PowerShell/issues/12036
Reloadhttps://github.com/PowerShell/PowerShell/issues/12036
Please reload this pagehttps://github.com/PowerShell/PowerShell/issues/12036
PowerShell https://github.com/PowerShell
PowerShellhttps://github.com/PowerShell/PowerShell
Notifications https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Fork 8.4k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Star 54.4k https://github.com/login?return_to=%2FPowerShell%2FPowerShell
Code https://github.com/PowerShell/PowerShell
Issues 1.2k https://github.com/PowerShell/PowerShell/issues
Pull requests 288 https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality 3 https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
Code https://github.com/PowerShell/PowerShell
Issues https://github.com/PowerShell/PowerShell/issues
Pull requests https://github.com/PowerShell/PowerShell/pulls
Discussions https://github.com/PowerShell/PowerShell/discussions
Actions https://github.com/PowerShell/PowerShell/actions
Projects https://github.com/PowerShell/PowerShell/projects
Security and quality https://github.com/PowerShell/PowerShell/security
Insights https://github.com/PowerShell/PowerShell/pulse
Modules containing colliding names causes side-effects that are visible in other moduleshttps://github.com/PowerShell/PowerShell/issues/12036#top
Issue-Questionideally support can be provided via other mechanisms, but sometimes folks do open an issue to get ahttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Question%22
Resolution-By DesignThe reported behavior is by design.https://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-By%20Design%22
WG-Enginecore PowerShell engine, interpreter, and runtimehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Engine%22
https://github.com/alx9r
alx9rhttps://github.com/alx9r
on Mar 5, 2020https://github.com/PowerShell/PowerShell/issues/12036#issue-576430137
Get-Item for files outputs PSObject instead of FileSystemInfo after Get-WmiObject #12014https://github.com/PowerShell/PowerShell/issues/12014
Issue-Questionideally support can be provided via other mechanisms, but sometimes folks do open an issue to get ahttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Issue-Question%22
Resolution-By DesignThe reported behavior is by design.https://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22Resolution-By%20Design%22
WG-Enginecore PowerShell engine, interpreter, and runtimehttps://github.com/PowerShell/PowerShell/issues?q=state%3Aopen%20label%3A%22WG-Engine%22
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.