Bat备份脚本

时间:2017-01-04 18:25:15

标签: powershell batch-file

我要做的是将用户配置文件从本地工作站备份到我们的备份服务器,并在完成后向我发送电子邮件。我目前有两个不同的脚本。如果我们可以在一个脚本中做到这一点会很好。如果我需要两个脚本,那不会有问题。

第一个脚本是备份,它一直运行正常。

robocopy C:\Users\TravisWhiteman.ArchwaySys\AppData \\10.1.10.6\WorkstationBackup\Test\AppData /mir /W:3 /R:1 /log:CopylogAppData.txt
robocopy C:\Users\TravisWhiteman.ArchwaySys\Desktop \\10.1.10.6\WorkstationBackup\Test\Desktop /mir /W:3 /R:1 /log:CopylogDesktop.txt
robocopy C:\Users\TravisWhiteman.ArchwaySys\Documents \\10.1.10.6\WorkstationBackup\Test\Documents /mir /W:3 /R:1 /log:CopylogDocuments.txt
robocopy C:\Users\TravisWhiteman.ArchwaySys\Downloads \\10.1.10.6\WorkstationBackup\Test\Downloads /mir /W:3 /R:1 /log:CopylogDownloads.txt

现在我想添加一些功能,我不知道如何。我想将其从手动设置用户配置文件目录更改为系统自动找出用户是谁。我认为它类似于%USERNAME%。目标是让用户输出系统图,这样我就不必为每个工作站更改C:\ Users \ TravisWhiteman.ArchwaySys。我们所有的工作站都会在计划任务备份前10分钟自动打开,以防用户关闭计算机。

1 个答案:

答案 0 :(得分:1)

基本上,您需要的是当前登录用户的配置文件路径,以获取远程计算机列表。

每台计算机的步骤:

  1. 获取当前登录用户的登录名(here是我目前使用的方法)
  2. 获取此用户的SID - 让我们说$userSID(方法描述为here
  3. 在远程计算机上浏览此注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$userSID,并读取值ProfileImagePath,它在此计算机上保存此用户的本地配置文件路径(example远程注册表访问权限)
  4. 将本地路径转换为网络路径(C:\Users\... - > \\computerName\c$\Users
  5. 致电robocopy 并获取一些咖啡(从循环中取出咖啡)
  6. 可以简单地选择\\computer\c$\Users\$userLogin,但正如OP的示例所示,Windows有时会将您的域名附加到您本地个人资料文件夹名称中的用户名,而且不可预测

    Remote Registry服务必须在远程计算机上运行)

    如果工作站已关闭然后唤醒,您我将定位C:\Users中最后修改过的文件夹。