因此,我可能会手动完成这项工作,因为它只有 44 个文件。但是,如果将来出现类似情况,我希望知道如何更轻松地完成这项工作。
基本上,DFS-R 从未安装在替换文件服务器上,现在已经一个月了,我需要安装该角色。不过,在执行此操作之前,我需要将位于辅助复制伙伴上的 44 个新文件复制到主复制伙伴,这样它们就不会在初始复制期间丢失。我使用 robocopy 进行了差异比较,因此我拥有具有完整路径的文件名,并且只需将它们复制到主服务器上的完全相同的路径,只是服务器名称不同。所以基本上:“\servername1\share\path1\path2\path3\filename.file”需要转到“\servername2\share\path1\path2\path3\filename.file”
但由于它有 44 个项目(至少这次是,下次可能会更多或更少),我需要一种方法来循环浏览列表,并为列表中的每个项目启动一个副本,只需更改服务器名称即可。
我确信有一种方法可以使用 Powershell 来实现这一点,但是就 PS 或一般脚本而言,我并不是最擅长的。有什么想法吗?
答案1
“我不会组装这个平板包装桌椅。你能帮我组装一下吗,这样下次我组装平板包装衣柜时,就能做得更好了?“
看到这完全行不通了吗?这不会更容易,你会处于与以前完全相同的位置。(等等,你认为你会再次找到缺少 DFS-R 的替代文件服务器吗??先修复该清单/程序)。
将来让事情变得更容易的方法是更好地理解它;通过一点一点地尝试和思考问题,直到它变得有意义,你就能做到这一点。这是一个完美的问题,因为它非常简单 - 单个数据位,每行一行,文本,一次处理一个。
Get-Content ListOfFiles.txt | ForEach-Object {
Move-Item $_ ($_ -replace 'servername1', 'servername2') -WhatIf
}
这有可能奏效 - 除非文件路径""
在文本文件中有引号,否则会失效。删除引号。或者保留引号,但假装它是 CSV,如下所示:
Import-Csv ListOfFiles.txt -Header Path | ForEach {
Move-Item $_.Path ($_.Path -replace 'servername1', 'servername2')
}
或者您可以在 Excel 中执行此操作,方法是打开文件并在向导中选择“文本限定符:无”,然后复制目标列并仅在列内搜索/替换,然后插入新列并写入“移动”并使用向下填充,然后选择全部,复制/粘贴到记事本,保存为批处理文件,运行。
(但@uSlackr 的评论非常好 - robocopy 替换文件树覆盖原始文件树,使其同步更改的文件)