将重定向的用户文档移动到不同文件夹级别的新文件夹位置

时间:2013-08-02 22:20:00

标签: powershell robocopy

我们公司正处于服务器转型的中间。我遇到一些问题需要一些帮助。

首先关闭。或者现有域使用文件夹重定向作为其“我的文档”等。原始设置已完成到用户主文件夹。 (例如\ server1 \ users \%username%*。*)

我们正在将所有内容迁移到一个全新的域。使用帐户是从sratch而不是迁移创建的。我们确实需要将所有用户文档移动到关联的文件夹中。用户名相同但位置不同(例如\ server2 \ users \%username%\ My Documents *。*)基本上我们在其主文件夹中创建了一个文件夹来存放他们的文档。这主要是因为使用Windows 7显示的整个“我的文档”标签以及在Mac系统上区分文件夹的简便方法。

所以我开始使用RichCopy手动推送文件,输入每个用户的源和目标,因为它们不匹配。有没有人有办法让它有一个特定的变量来解释。

理论上: \ server1的\用户\%USERNAME%\ 转移到 \ server2 \ users \%username%\ My Documents \

该变量将搜索用户名,匹配它们,并自动推送\ users \

中的每个文件夹

任何类型的GUI界面程序,甚至是我可以操作一点的powershell脚本都会非常有用。我不能为每个用户手动执行此操作,我们有大约1000个用户。

我非常感谢您提前帮助!

到目前为止,我一直在与Powershell合作运行Robocopy来执行此操作。 我试图让powershell从csv中提取用户名并将其输入到robocopy字符串中。这是我的代码:

    $usernames = import-csv c:\scripts\usernames.csv


 foreach($user in $username)

   {

    $field1 = $user.username


   Echo "$field1"

   }

$source = "\\server03\Staff-MyDocs\$user"
$destination = "\\server3\users$\Staff\$user\My Documents\"

robocopy $source $destination /S /E /COPY:DATSOU /R:1 /W:5 >C:\scripts\HomeDir_robocopy.log

任何更好的想法让这个工作?

1 个答案:

答案 0 :(得分:1)

根据你的描述,这应该有效:

$csv = 'C:\scripts\usernames.csv'
$log = 'C:\scripts\HomeDir_robocopy.log'

Import-Csv $csv | % { $_.username } | % {
  $src = "\\server1\Users\$_"
  $dst = "\\server2\Users\$_\My Documents\"

  robocopy "$src" "$dst" /e /copyall /r:1 /w:5 /log+:"$log"
}