【问题标题】:Bat Backup Script蝙蝠备份脚本
【发布时间】:2017-01-05 05:31:31
【问题描述】:

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

第一个脚本是备份,一直运行良好。

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 分钟自动开启,以防用户关闭计算机。

【问题讨论】:

  • 您好,我认为您应该将其拆分为两个单独的问题。在有关附件的部分中,包括失败的实际代码。关于另一个,定义应该使用哪个用户的配置文件(当前登录?上次登录?)。
  • @sodawillow 根据建议分成两个不同的帖子。
  • 我们所有的员工在一天结束时都保持登录状态。 10 分钟后,计算机锁定并强制他们重新登录。我想我需要的是当前登录的。

标签: powershell batch-file


【解决方案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 喝杯咖啡(从循环中移除咖啡)

人们可以简单地选择\\computer\c$\Users\$userLogin,但正如 OP 的示例所展示的那样,Windows 有时会将您的域名附加到您本地配置文件文件夹名称中的用户名中,这种方式非常不可预测。 p>

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

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

【讨论】:

  • 在我们所有的工作站上启用远程注册表服务后,脚本就可以正常工作了。当您在第 4 步中提到从本地路径更改为网络时,我尝试了一下,发现我可以整合我们的脚本。因此,我将在一台计算机上运行一个脚本,而不是在每台计算机上运行一个脚本。
  • 再次感谢@sodawillow。我比以往任何时候都更快地完成这个项目。 :)
猜你喜欢
  • 2014-03-27
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2017-06-19
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多