-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Closed
Labels
Area-FileSystem-Providerspecific to the FileSystem providerspecific to the FileSystem providerIssue-BugIssue has been identified as a bug in the productIssue has been identified as a bug in the productResolution-No ActivityIssue has had no activity for 6 months or moreIssue has had no activity for 6 months or moreWG-Cmdlets-Managementcmdlets in the Microsoft.PowerShell.Management modulecmdlets in the Microsoft.PowerShell.Management moduleWG-Engine-Providersbuilt-in PowerShell providers such as FileSystem, Certificates, Registry, etc.built-in PowerShell providers such as FileSystem, Certificates, Registry, etc.
Description
PowerShell Core (unlike Windows PowerShell) by default is supposed to not follow symlinks (symbolic links) to directories during recursive traversal with Get-ChildItem -Recurse (you can opt in with -FollowSymlink).
While this generally works, using the -Name or -Include / -Exclude switches unexpectedly causes symlinks to be followed even without the -FollowSymlink switch.
Note: On Windows, the tests currently fail categorically, due to an unrelated bug: #9127
Steps to reproduce (on Unix)
Run the following Pester tests:
Describe "Get-ChildItem: symlink-following tests" {
BeforeAll {
Push-Location TestDrive:/
# Create a directory with 2 files in it.
$null = New-Item -Type Directory someDir
1..2 | % { $_ > "someDir/$_.txt" }
# Create a symlink to that directory, as a sibling.
New-Item -Type SymbolicLink someDirLink -Target someDir
}
AfterAll {
Pop-Location
}
It "Get-ChildItem -Recurse doesn't follow dir. symlinks." {
(Get-ChildItem -File -Recurse).Count | Should -Be 2
}
It "Get-ChildItem -Recurse -Path with a wildcard doesn't follow dir. symlinks." {
(Get-ChildItem -File -Recurse -Path *).Count | Should -Be 2
}
It "Get-ChildItem -Recurse -Name doesn't follow dir. symlinks." {
(Get-ChildItem -File -Recurse -Name).Count | Should -Be 2
}
It "Get-ChildItem -Recurse -Include doesn't follow dir. symlinks." {
(Get-ChildItem -File -Recurse -Include *).Count | Should -Be 2
}
It "Get-ChildItem -Recurse -Exclude doesn't follow dir. symlinks." {
(Get-ChildItem -File -Recurse -Exclude nosuch).Count | Should -Be 2
}
}Expected behavior
All tests should pass.
Actual behavior
The last 3 tests fail.
Environment data
PowerShell Core 6.2.0-rc.1
tuscen
Metadata
Metadata
Assignees
Labels
Area-FileSystem-Providerspecific to the FileSystem providerspecific to the FileSystem providerIssue-BugIssue has been identified as a bug in the productIssue has been identified as a bug in the productResolution-No ActivityIssue has had no activity for 6 months or moreIssue has had no activity for 6 months or moreWG-Cmdlets-Managementcmdlets in the Microsoft.PowerShell.Management modulecmdlets in the Microsoft.PowerShell.Management moduleWG-Engine-Providersbuilt-in PowerShell providers such as FileSystem, Certificates, Registry, etc.built-in PowerShell providers such as FileSystem, Certificates, Registry, etc.