我的剧本面临一个奇怪的问题。
我有2个文件: OBTM_OUTCOME_GFM_20150519164709_1.end 和 OBTM_OUTCOME_GFM_20150818142145_11.end
我想只选择具有最小MinKey的文件,其中MinKey是最后一个下划线后面的数字。 对于第一个文件,MinKey是1, 因为第二个MinKey是11。
S3PathName是S3存储桶,它对于两个文件都是相同的。 InputBaseFileName = OBTM_OUTCOME_GFM, 和MinKey被发现,它是1.
当我设置下面的命令时,我得到了两个文件,而我只对第一个文件感兴趣:
Get-S3Object -BucketName $S3BucketName -KeyPrefix $S3PathName |
Where-Object {$_.Key -Like "$S3PathName/$InputBaseName*$MinKey.*"}.....
星号是否可能无法正常运行? 感谢
答案 0 :(得分:1)
PetSerAl的解决方案是正确的,*允许任意数量的字符(包括0)。
如果你删除了除结尾之外的所有内容:
_1.end _11.end
并应用查询$_ -like *1.end
它将返回两个文件,因为*可以表示“_”和“_1”。
通过将_添加到查询:$_ -like *_1.end
,您确保只检查_之后的全匹配,而不是允许其他字符。
用'$ MinKey替换“1”并添加其余部分:
Where-Object {$_.Key -Like "$S3PathName/$InputBaseName*_$MinKey.*"}