Powershell: Get-ChildItem: wildcard matching behavior differs between -Path and -Include parameters when using escape characters

Created on 7 May 2017  路  7Comments  路  Source: PowerShell/PowerShell

Note:

  • Get-Item appears not to be affected, only Get-ChildItem
  • Problem exists on all supported platforms.

Wildcard patterns support ` as the escape character to represent literal ` instances in the filename and to escape the following metacharacters: * ? [ ]

Steps to reproduce

# Create a file that contains a literal backtick and a literal substring that would be a valid
# sub-pattern if interpreted as a wildcard expression.
New-Item -Type File 'a`[b]'

# Match the newly created file using a wildcard expression with suitable escaping.
# The following 2 command should be equivalent, but currently aren't.
Get-ChildItem * -Include 'a```[b`]'
Get-ChildItem -Path 'a```[b`]'

Expected behavior

Both Get-ChildItem commands should match the newly created file and output information about it.

Actual behavior

The 2nd command unexpectedly fails:

Get-ChildItem : Cannot find path '/Users/jdoe/a```[b`]' because it does not exist.
...

Again, note that Get-Item does _not_ exhibit this problem.

Environment data

PowerShell Core v6.0.0-alpha (v6.0.0-alpha.18) on macOS 10.12.4
PowerShell Core v6.0.0-alpha (v6.0.0-alpha.18) on Ubuntu 16.04.1 LTS
PowerShell Core v6.0.0-alpha (v6.0.0-alpha.18) on Microsoft Windows 10 Pro (64-bit; v10.0.14393)
Area-Cmdlets-Management Issue-Bug

Most helpful comment

@mklement0 I do not expect an immediate reaction to pings. I just hope you get some interesting links for thought. Your reviews is always great!

I will add a test for the issue. Thanks!

All 7 comments

Related #3414

Is it only macOS issue?

@iSazonov: No, it affects all supported platforms - I've updated the original post to make that clear.

I don't know what fixed it, but the problem no longer occurs as of PowerShell Core 7.0.0-preview.3

@mklement0 Should we add a test to exclude regression or we already have it?

@iSazonov Providing such tests sounds like a good idea, given that we don't know _why_ the problem went away and given that there'll be a v2 filesystem provider.

I haven't explicitly checked if we already have such tests, but I'd be surprised if we did, given that this problem was seemingly never tackled as such.

On a quick meta note: I know you've pinged me on a few other issues, but the bigger ones I haven't had the time and energy to respond to, but I generally appreciate your systematic efforts to reach out to others (who may care / have something to contribute) in the discussions.

@mklement0 I do not expect an immediate reaction to pings. I just hope you get some interesting links for thought. Your reviews is always great!

I will add a test for the issue. Thanks!

Perhaps @kwkam could reference a PR where the issue was fixed.

Was this page helpful?
0 / 5 - 0 ratings