读取文本文件并为文本文件中的每一行运行复制命令

时间:2014-03-31 21:33:21

标签: powershell

我正在尝试编写一个Powershell脚本来读取桌面上填充了用户名的文本文件,然后转到我们网络共享上的指定文件夹,让我们说u:\data并复制内容从该文件夹到另一个网络共享,对文本文件中的每个用户说y:\information

这怎么写?

我已经尝试了几种方法来阅读文本文件,然后尝试复制和粘贴几个命令,但它们都失败了。

更新:

以下是我到目前为止所做的事情:

$user = Get-Content "test.txt"

$path = "\\abnas2\abusers\users"

$path2 = "\\abnas2\abdept\dept\testcopy"

$Copy = Copy-Item -path $path\$user\ * -Destination $path2\$user

我在test.txt文件中有一个名为user1的用户名,它提取了名称,并完美复制。

现在,如果我在test.txt文件中添加多个名称并运行上面的命令,则会出错。它返回的错误使它看起来像列表中的3个用户名是一个用户名。

我需要做的是为列表中的每个名称运行命令。我以为我可以使用foreach命令但不知道怎么做。

更新 - 04 \ 09 \ 2014: 我尝试了以下内容并收到错误:     $ user = Get-Content" test.txt"     $ path =" \ abnas2 \ abusers \ users"     $ path2 =" \ abnas2 \ abdept \ dept \ testcopy"     $ Copy = Copy-Item -path $ path \ $ user * -Destination $ path2 \ $ user     foreach($ user中的$ username){        Copy-Item -path $ path \ $ username * -Destination $ path2 \ $ username \     }

当我运行它时,我收到以下错误: Copy-Item:指定路径上的对象\\ abnas2 \ abusers \ users \ user1 user2 user3不存在。

这些是我的test.txt文件中的名称,是否有办法让它一次读取一行并执行复制,完成后转到列表中的下一个名称并执行相同的操作?我不确定如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用foreach

在这种情况下:

foreach($username in $user) {
   Copy-Item -path $path\$username\* -Destination $path2\$username\
}

会将$user$path下每个指定文件夹的内容复制到$path2中的相应文件夹。