Como observado nos comentários, esse erro é relatado aqui: link
Eu também posso replicar na PS 4:
$psversiontable
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.18728
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2
New-Item -Name "foo.txt" -ItemType File
New-Item -Name "bar.txt" -ItemType File
Move-Item -Path ".\*" -Destination "move.txt" -Exclude "bar*"
Move-Item : Cannot move item because the item at 'C:\temp\test\bar.txt' does not exist.
At line:1 char:1
+ Move-Item -Path ".\*" -Destination "move.txt" -Exclude "bar*"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand
Como a correção para isso ainda está na versão 6 ( link ), Eu iria reescrever a expressão como: gci $encrypted_folder\*.* -exclude *.gpg | move-item -destination $final_dir
Você também pode criar filtros mais sofisticados usando where-object
e -match/notmatch
, por exemplo, excluir apenas aqueles com 4 ou mais caracteres antes da extensão :
gci |? name -notmatch '^.{4,}\.gpg$' | [rest of processing here]