【发布时间】:2018-11-29 10:13:07
【问题描述】:
我有两种不同的方式来获取带有通配符模式的文件:
Get-ChildItem "$ActivityLogDirectory/*.csv"
和
Get-ChildItem "$ActivityLogDirectory" -Filter *.csv
我更喜欢使用后者而不是前者,因为前者 (Get-ChildItem "$ActivityLogDirectory/*.csv") 有时会给我一个权限被拒绝错误。
它们似乎都返回相同的结果,但是当我尝试使用此命令压缩生成的文件时:
Compress-Archive -Update -Path $CsvFiles -DestinationPath C:\Users\admin\Downloads\foo.zip
前者成功,后者失败并出现以下错误:
压缩存档:路径“rgb dev 自动化存储 a_1-1_2194_20181120.csv” 要么不存在,要么不是有效的文件系统路径。 在行:1 字符:1 + 压缩存档 - 更新 -Path $CsvFiles -DestinationPath C:\Users\ad ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (rgb dev automat...94_20181120.csv:String) [Compress-Archive], InvalidOperationException + FullyQualifiedErrorId : ArchiveCmdletPathNotFound,Compress-Archive那么这两种使用通配符获取文件列表的方法有什么区别呢?或者换一种方式问,为什么使用-Filter *.csv 会导致Compress-Archive cmdlet 失败?
【问题讨论】:
-
文件名中可能有一个奇怪的字符导致您出现该错误。你试过
-LiteralPath而不是-Path吗? -
@Lee_Dailey 是的,我试过 LiteralPath,结果是一样的
-
嗯,这是一个简单的修复,不是修复。 [sigh ...] ///// 如果你去掉这行中完全不需要的引号会发生什么
Get-ChildItem "$ActivityLogDirectory" -Filter *.csv? -
@Lee_Dailey 我也试过了,没有任何改变
-
哎哟!我没有想法......我会回去潜伏。祝你好运!
标签: powershell powershell-v5.1