我正在尝试编写一个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文件中的名称,是否有办法让它一次读取一行并执行复制,完成后转到列表中的下一个名称并执行相同的操作?我不确定如何做到这一点。
答案 0 :(得分:0)
您可以使用foreach
在这种情况下:
foreach($username in $user) {
Copy-Item -path $path\$username\* -Destination $path2\$username\
}
会将$user
下$path
下每个指定文件夹的内容复制到$path2
中的相应文件夹。