我正在寻找自动化复印作业,我通常手动。 我从来没有使用过脚本,而且我也没有什么networking知识,所以答案完全可能比我意识到的要简单,但是到目前为止我还没有运气。
细节
我有几台Windows 10的电脑都插在一个房间里的同一台路由器上。 我从未做过任何forms的正式工作组或任何一个之间的联系。 他们都有一个同名的本地pipe理员帐户和一个空白的密码。
我有一个文件夹和文件的树,我想从一个USB驱动器复制到一台计算机,然后,而不是我携带USB驱动器到每台计算机手动复制,我希望该计算机分发它(与此build议的脚本)到房间里的其他电脑。
我所试过的
在花了大约二十分钟的时间,通过一些初步的想法,我决定尝试robocopy。 特别是,我被/ mir选项所吸引,它会将目的地镜像到源,删除不再有效的文件夹和文件。 由于我需要每天执行此任务,并且每次都使用相同的文件夹结构,所以我有意删除不再在源文件中的文件。
数据已经从USB驱动器复制到机器1后,我的第一个命令是这样的:
robocopy E:\Folder1\Folder2 \\machine-2\E:\Folder1\Folder2 /mir /log:"robocopy.log"
我得到一个错误,让我知道robocopy对空白密码不满意。 一些进一步的研究告诉我,这是一个远程Windows的东西,一般来说,当远程访问其他机器时,你不能在Windows上执行空密码。
虽然我明白,给他们所有的密码是最好的安全select,但是我们原来决定把密码留在机器上,因为他们被关在一个只有我们有钥匙的房间里,而且我们更容易如果我们不必每次都input密码(一天几次),就可以访问它们。 这是100%的方便。 所以,如果我们肯定愿意为所有机器添encryption码的话,如果我们现在可以保留它们, 那将是很好的 。 考虑到这一点,我设法find这个较旧的post,它显示了用户如何禁用Windows设置,以限制本地帐户使用空密码login: http : //dandar3.blogspot.com/2008/04/windows -vista-允许远程-desktop.html
在两台机器上禁用了这个设置之后,我试着再次运行同样的命令。 这一次,我得到了两个不同的错误(按此顺序):
ERROR 5 (0x00000005) Getting File System Type of Destination \\machine-2\E:\Folder1\Folder2 Access is denied. ERROR 5 (0x00000005) Creating Destination Directory \\machine-2\E:\Folder1\Folder2 Access is denied.
那么我认为这听起来像一个权限问题。 我试着在目标机器上(在这个例子中,机器2)的Folder1的权限摆弄,并没有得到不同的结果后,我只是给了Windows组Everyone完全控制整个文件夹。 但即使这样也没有改变错误。
之后,我发现另一个论坛post,build议共享文件夹。 所以我右键单击目标机器的E驱动器,并select共享 – >高级共享 – >高级共享,并select共享文件夹,调用它E.结果似乎(对我的业余心灵)像我设置正确: 请参阅屏幕截图
于是我在命令中把E:换成了E$ ,正如论坛上的post所build议的那样:
robocopy E:\Folder1\Folder2 \\machine-2\E$\Folder1\Folder2 /mir /log:"robocopy.log"
但不幸的是,它仍然没有效果。
最后,我遇到了这个堆栈溢出的答案,关于使用robocopy在两个不同的域之间的机器之间复制,使用net use命令。 我想在testing一行之前自行testing,所以我input:
net use \\machine-2\e$ /user:machine-1\myusername ""
而这个命令也回来了System error 5 has occurred. Access is denied. System error 5 has occurred. Access is denied.
但是,当机器2上的E驱动器仍然被共享时,仍然完全控制给每个人。 这也难倒了我。
我已经到了一个地步,我确信我缺乏关于networking设置和robocopy的知识可能会使我find潜在的解决scheme,这些解决scheme要么比他们需要的更复杂,的时尚。 我不只是想find“正确”的答案,但我也想理解它。
有没有更好的方法来自动化我试图自动化的任务? 如果robocopy是最好的方法,那么上述问题的罪魁祸首究竟在哪里呢? 这是我需要build立networking明智的,还是我没有正确使用命令本身? 或者我只是需要一个更好的关键字/search条件来find一个更清晰的答案呢?
非常感谢您的帮助或指导!
老实说,如果你不能添encryption码(并设置自动login),那么你最好的select可能是第三方应用程序,如Windows的Syncthing或rsync(cygwin或Deltacopy)。 Windows通常很不情愿给没有密码的pipe理员共享访问。 公共文件夹也应该在非公共networking上默认共享,或者您可以在networking和共享中心启用它。 它应该允许无密码连接。
电脑被保存在只有你有权访问的房间里。 如果任何人在该房间以外的地方使用networking插孔或无线networking,则他们可以完全访问这些机器。
这就是说,如果你真的想把这些机器视为一次性的,并保留空白的pipe理密码,应该是可以的。 我build议在他们每个人上创build一个“IT”或类似的帐户,然后使用它来为您的脚本进行身份validation。 如果所有机器上都存在匹配的帐户,则应该能够通过pipe理共享或其他方式访问其他机器。
我将把我的插件Powershell将文件复制到其他机器。
$computers = "Machine-1","Machine-2","Machine-3" # Push the array of computers into the loop to process each one $computers | ForEach-Object { # If the folder doesn't exist... If (!Test-Path "\\$_\E$\Folder1\Folder2") { # ...create it New-Item "\\$_\E$\Folder1\Folder2" -ItemType Directory } # Copy to other computer recursively (sub-folders) and forceing overwrite Copy-Item "E:\Folder1\Folder2\" "\\$_\E$\Folder1\Folder2" -Recurse -Force }