Powershell 筛选获取CSV内容的子项

Powershell 筛选获取CSV内容的子项,powershell,csv,get-childitem,copy-item,Powershell,Csv,Get Childitem,Copy Item,我正在尝试筛选包含CSV内容的Get-Childitemcmdlet CSV内容: Files ------ B000000001 B000000002 实际文件名: B000000001.PT01.jpg B000000002.PT03.jpg 这就是我所拥有的: $ASINs = Import-Csv "C:\share_test.csv" foreach($ASIN in $ASINs){ echo $ASIN Get-ChildItem -Path "C:\test1"

我正在尝试筛选包含CSV内容的
Get-Childitem
cmdlet

CSV内容:

Files
------
B000000001
B000000002
实际文件名:

B000000001.PT01.jpg
B000000002.PT03.jpg
这就是我所拥有的:

$ASINs = Import-Csv "C:\share_test.csv"
foreach($ASIN in $ASINs){
   echo $ASIN
   Get-ChildItem -Path "C:\test1" -Filter "*$ASIN*" | Copy-Item -Destination "C:\test2"
}
相似的项没有复制,但响应
Get-Childitem
cmdlet也没有拾取文件。有人能指出我代码中的错误吗


谢谢

使用
导入CSV
时,每列的标题将成为属性名称。因此,csv的每一行都是一个具有名称属性的对象,而不是像您从
get Content
中获得的字符串数组

您可以使用子表达式操作符
$()
在过滤器内插入
$ASIN.Files

$ASINs = Import-Csv "C:\share_test.csv"
foreach ($ASIN in $ASINs) {
    Get-ChildItem -Path "C:\test1" -Filter "*$($ASIN.Files)*" | Copy-Item -Destination 
    "C:\test2"
}

可能是因为您必须在echo
$ASIN.Files
中这样调用文件名,因此应该显示文件名,并在过滤器中使用它,例如
“*$($ASIN.Files)*”
完美!感谢您提供更多信息。如果有人想了解这个答案的更多信息,请检查:经过进一步测试,提供的代码将移动所有文件,而不是将副本限制为CSV中的项目。有什么想法吗?@Garrett我已经测试过这个对我有用了。您确定CSV的标题匹配并且CSV中没有空白值吗?Ben,您再次正确了!标题已更改,因此使用“$($ASIN.Newheader)”可以获得所需的结果。非常感谢。