我在D:\ temp下有这种格式的.csv(具有两列ID和DisplayName) ID显示名称 约翰·杜伊(John Doe) 史密斯·史密斯(Mark Smith) 利兹·普拉特·普拉特(Lpratt Pratt) .......等等
服务器上有一个文件夹(E:\ data),在该文件夹下已经有带有用户ID的文件夹,其中已经包含一些数据。例如: E:\ data \ jdoe,E:\ data \ msmith等。我想编写一个脚本,将创建一个新文件夹E:\ New_data \ Smith,标记并从E:\ data \ msmith复制数据。
我尝试了以下代码:
$csv = Import-Csv D:\Temp\temp.csv
ForEach ($obj in $csv.ID) {
Foreach ($obj1 in $csv.DisplayName) {
copy-item D:\Data\$obj D:\New_data\$obj1 -Recurse -Force
}
}
但是,这是将旧位置中的所有文件夹复制到要复制到新位置的每个文件夹中。请您让我知道我想念的是什么? 谢谢
答案 0 :(得分:2)
使用Import-Csv
时,每行都将作为pscustomobject
加载,且字段与列标题匹配。在您的情况下,您要遍历每一个(您的双foreach
实际上并没有完成任何事情):
$csv = Import-Csv -Path D:\Temp\temp.csv
foreach ($row in $csv)
{
$source = $row.ID
$dest = $row.DisplayName
Copy-Item -Path "D:\Data\$source" -Destination "D:\New_data\$dest" -Recurse -Force
}