Powershell 3.0: COPY-ITEM Filter or Include options not working
Asked Answered
P

1

19

Does the -Filter or -Include parameter work for anyone when using Powershell 3.0? I've tried both of the following commands:

Copy-Item -Path c:\temp -Include "*.TXT" -Destination C:\temp2

and

Copy-Item -Path c:\temp -Filter "*.TXT" -Destination C:\temp2

Actually, for the -Filter option, an empty "temp" folder gets created in c:\TEMP2. I know that the following command works:

Copy-Item -Path c:\temp\*.TXT -Destination C:\temp2

But just wondering if anyone has come across this issue before?

Penicillate answered 24/12, 2013 at 15:52 Comment(0)
M
39

This is because the item that you are feeding into Copy-Item is the folder, not the files inside the folder.

When you execute:

Copy-Item -Path c:\temp -Include "*.txt" -Destination C:\temp2

You are saying: Copy Item, where the Path is the folder c:\temp. The only item that is selected to copy is the directory c:\temp. Then we say, only -Include items that match "*.txt". Since the only item (the folder "temp") does not match the pattern, we do nothing.

To prove this, let's change the Include filter to "temp", and re-execute it:

Copy-Item -Path c:\temp -Include "temp" -Destination C:\temp2

Voilà! in the destination folder, we have a new empty folder: c:\temp2\temp. (It's empty because the only item we told it to copy was the folder "temp", we did not tell it to copy anything else)

So for part 2, When you execute:

Copy-Item -Path c:\temp\*.txt -Destination C:\temp2

It works because you are saying, with the *.txt, iterate through all items in the directory that match the pattern *.txt, feed those paths to Copy-Item, and copy to the destination.

To prove this, let's change it, and specify an include filter:

Copy-Item -Path c:\temp\* -Include "*.txt" -Destination C:\temp2

We are saying here, get all items in the folder c:\temp (i.e. we are getting all the items inside the folder c:\temp, and not the folder c:\temp), filter them by only including items that match "*.txt", and copy to the destination.

Mean answered 24/12, 2013 at 17:46 Comment(2)
That was easy. Thx for the tip. Merry Christmas!Penicillate
I like this answer. I wish it worked. I'm using -Recursive, which seems to break -Include. Is this a known issue? Is there a workaround? Thanks!Adrianeadrianna

© 2022 - 2024 — McMap. All rights reserved.