Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get-ChildItem2 fails if UNC-Path contains .lnk file #46

Open
karlheinz-hildebrandt opened this issue Mar 6, 2019 · 11 comments
Open

Get-ChildItem2 fails if UNC-Path contains .lnk file #46

karlheinz-hildebrandt opened this issue Mar 6, 2019 · 11 comments
Assignees
Labels
Bug Clearly a bug that need to be fixed

Comments

@karlheinz-hildebrandt
Copy link

Using Get-ChildItem2 on a network UNC-Path shows error, if the folder contains a .lnk file. Error is:

Get-ChildItem2 : (3) The target directory is a file, not a directory: [\]
In Zeile:1 Zeichen:1

  • Get-ChildItem2 -Directory -path \
  •   + CategoryInfo          : NotSpecified: (\\<UNC-path>:String) [Get-ChildItem2], DirectoryNotFoundException
      + FullyQualifiedErrorId : DirUnspecifiedError,NTFSSecurity.GetChildItem2
    
    

Using Get-ChildItem runs without problem.

@AspenForester
Copy link
Contributor

I'm seeing the same error on a directory that has no .lnk files in it, but it does have an odd zero-length .xlsx file whose name starts with a $ (dollar sign).

When I change that $ to a ~, the error goes away. So in my case it's looking like a problem handling questionable characters in the filename.

@AspenForester
Copy link
Contributor

I am able to reproduce the error with a directory containing a .lnk file.
Get-ChildItem2 -Path \\myserver\myshare\MyDir -Directory when \myserver\myshare\MyDir contains a file that's a .lnk.

@karlheinz-hildebrandt
Copy link
Author

I can confirm the problem with leading $ in the filename, but only if the file is on a share.
As far as I know the $ is allowed in filenames, especially when Get-ChildItem runs without problem.
Thanks for the warning.

@Sup3rlativ3
Copy link

For what it's worth, I'm unable to reproduce this error with or without the dollarsign on the .lnk file.

PS C:\> Get-ChildItem2 -Path \\MyComputer\RBAC


    Directory: \\MyComputer\RBAC


Mode    Inherits             LastWriteTime         Size(M) Name
----    --------             -------------         ------- ----
-a---       True      09/01/2020   6:54 AM               0 MyLink.lnk
d----       True      08/01/2020  12:08 PM   <DIR>         Folder1
d----       True      27/11/2019  12:10 PM   <DIR>         Folder2
d----       True      27/11/2019  12:04 PM   <DIR>         Folder3


PS C:\> Get-ChildItem2 -Path \\8ZHFWT2\RBAC


    Directory: \\MyComputer\RBAC


Mode    Inherits             LastWriteTime         Size(M) Name
----    --------             -------------         ------- ----
-a---       True      09/01/2020   6:54 AM               0 $MyLink.lnk
d----       True      08/01/2020  12:08 PM   <DIR>         Folder1
d----       True      27/11/2019  12:10 PM   <DIR>         Folder2
d----       True      27/11/2019  12:04 PM   <DIR>         Folder3


I also tested the example that @karlheinz-hildebrandt mentioned in his first post but wasn't able to get the same error. I did change it from '\' to '.\' which I think is required as the latter pulls from the root drive rather than the current folder. I should also mention that both work though.

PS C:\RBAC> Get-ChildItem2 -Path .\


    Directory: C:\RBAC


Mode    Inherits             LastWriteTime         Size(M) Name
----    --------             -------------         ------- ----
-a---       True      09/01/2020   6:54 AM               0 $Banklink.lnk
d----       True      08/01/2020  12:08 PM   <DIR>         Folder1
d----       True      27/11/2019  12:10 PM   <DIR>         Folder2
d----       True      27/11/2019  12:04 PM   <DIR>         Folder3

If I move into a UNC path and then run the command on the current location I get an error though it's not the same one.

PS C:\RBAC> cd \\MyComputer\RBAC

PS Microsoft.PowerShell.Core\FileSystem::\\MyComputer\RBAC> Get-ChildItem2 -Path .\
Get-ChildItem2 : Unable to find the specified file.
At line:1 char:1
+ Get-ChildItem2 -Path .\
+ ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (.\:String) [Get-ChildItem2], FileNotFoundException
    + FullyQualifiedErrorId : FileNotFound,NTFSSecurity.GetChildItem2

I'm unsure if any of this helps but I hope so.

@nashiooka
Copy link

I'm having a similar issue, but I can offer some additional specifics on when it occurs. In my case it doesn't seem to have anything to do with .lnk files. As others have indicated looks like the leading character of the filename matters. So far I've found the problem with the following leading characters -, +, #, {, $ . Without hunting for every possible character I think it's fair to say the issue occurs with any legal, leading non-alphanumeric character.

Note: It's very tough to control file naming in the wild, so all of these are problematic. However, the "$" leads many names in the common $RECYCLE.BIN folder. I presume this would only increase the prevalence of the issue.

Similar to what James pointed out, my reproductions have been a little inconsistent though. When testing locally it seems harder to reproduce, for example in c:\temp. This remains true even when I use the UNC to the local path. I also had some difficulty reproducing it in a purely remote folder when starting the interrogation at that same level, but that's been inconsistent so far.

Also note I discovered the problem in Remove-Item2, but can reproduce and have tested with Get-ChildItem2. I haven't looked at any code so I don't know if one leverages the other.

Sorry if this is coming to the conversation late. I hope it's helpful.

@raandree raandree self-assigned this Apr 20, 2021
@raandree raandree added the Bug Clearly a bug that need to be fixed label Apr 20, 2021
@raandree
Copy link
Owner

Thanks for reporting this issue. Working on it...

@raandree
Copy link
Owner

This is a bug in AlphaFS which I cannot solve quickly. The issue is tracked in alphaleonis/AlphaFS#460.

@nashiooka
Copy link

nashiooka commented Apr 20, 2021

Thanks for all your hard work. I've actually been using the module for years. Don't rush on my account. The permission stuff is working fine I use it all the time. I only encountered the error in a script where I was expecting paths >260 chars. I went back to the core *item cmdlets but using the \\UNC\... syntax.

@rao-source
Copy link

rao-source commented May 10, 2021

Hello Raimund,
Thank you for this module it's excellent. I hit an error similar to previously described but on 7Zip files and on "My Data Sources" directory:

get-childitem2 : (3) The target directory is a file, not a directory: [\\[COMPUTER]\C$\Users\[USER]\AppData\Local\WebEx\wbxcache\mticket_7z] At \\[COMPUTER]\[MYSCRIPT].ps1:48 char:21 ... countPath = get-childitem2 -Path $stPath -Recurse -Hidden -System -fo ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo : NotSpecified: (\\[COMPUTER]\C$\...ache\mticket_7z:String) [Get-ChildItem2], DirectoryNotFoundException FullyQualifiedErrorId : DirUnspecifiedError,NTFSSecurity.GetChildItem2

The full command I'm using to obtain the path items:

$userAccountPath = get-childitem2 -Path "\\[remotecomputer]\C$\Users\[username]" -Recurse -Hidden -System -force -SkipMountPoints -SkipSymbolicLinks

The items in that path WebEx\wbxcache are definitely 7Zip files, but when do basic get-childitem on same path shows as Directories.

Same error in a different location:
Path:
\\[remotecomputer]\[userprofile]\My Documents\My Data Sources
Directory Outline of "My Documents" showing that directory's attributes:

d---s- 2020-02-06 9:40 AM My Data Sources

Hope it helps.

@raoue
Copy link

raoue commented Apr 22, 2022

I'm receiving a similar error:
Commands:
Get-ChildItem2 -Path "\\ServerShare\User Path" -Recurse
Remove-Item2 : (3) The target directory is a file, not a directory

Get-ChildItem2 : (3) The target directory is a file, not a directory: [\\ServerShare\User Path\My Documents\My Pictures]
At line:4428 char:33
+ ... tPath = Get-ChildItem2 -Path "\\ServerShare\User Path" -Recurse
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (\\ServerShare\User Path\...\My Pictures:String) [Get-ChildItem2], 
DirectoryNotFoundException
    + FullyQualifiedErrorId : DirUnspecifiedError,NTFSSecurity.GetChildItem2

This is a repeatable error.
PSVersion: 5.1.19041.1645
NTFSSecurity Version: 4.2.6

When I perform a Get-Item on same path:

PSPath               : Microsoft.PowerShell.Core\FileSystem::\\ServerShare\User Path\My Documents\My Pictures
PSParentPath         : Microsoft.PowerShell.Core\FileSystem::\\ServerShare\User Path\My Documents
PSChildName          : My Pictures
PSProvider           : Microsoft.PowerShell.Core\FileSystem
PSIsContainer        : True
Mode                 : d-r---
BaseName             : My Pictures
Target               :
LinkType             :
Owner                : UNDISCLOSED
IsInheritanceBlocked : False
Name                 : My Pictures
FullName             : \\ServerShare\User Path\My Documents\My Pictures
Parent               : My Documents
Exists               : True
Root                 : \\ServerShare
Extension            :
CreationTime         : 2021-12-02 6:56:05 AM
CreationTimeUtc      : 2021-12-02 1:56:05 PM
LastAccessTime       : 2022-04-22 1:23:53 PM
LastAccessTimeUtc    : 2022-04-22 7:23:53 PM
LastWriteTime        : 2022-04-22 1:23:53 PM
LastWriteTimeUtc     : 2022-04-22 7:23:53 PM
Attributes           : ReadOnly, Directory

It has a single file in that path that has a "," comma as the first character in the filename.

Hope this helps.

@Sup3rlativ3
Copy link

Hi @raoue, I believe that the error is outside the control of this project as per raandree's comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Clearly a bug that need to be fixed
Projects
None yet
Development

No branches or pull requests

7 participants