2017-05-29 37 views
0

这个社区是新增功能,Powerhell是新增功能。 我的任务是整理来自我们每台文件服务器的文件。使用多台服务器的PowerShell远程文件复制并重新命名为

我需要复制这个文件,然后重命名为它来自的服务器的名称。

我已经想通了;

$ListOfServers = Get-Content "C:\Temp\TEST.txt" 
Copy-Item "\\$ListOfServers\c$\utils\TSM\baclient\dsmsched.log" -Destination "C:\temp\Testtest.txt" 
在我的test.txt文件

我有服务器的列表复制从该文件,但,当我把在多台服务器的名称不复制从他们的文件,当我走TEST.TXT将文件复制到一台服务器上,然后复制。我也想重新命名我提取到它来自的服务器的名称的日志文件。

这里的任何帮助将不胜感激。

在此先感谢。 MV

回答

0

当您在该文件中放入多个服务器名称时,$ListOfServers是一个名称(真正的文件行)的数组。

当您使用"$a"语法在字符串中放入数组时,内容会与它们之间的空格串在一起,因此您的副本将变为"\\server1 server2 server3\c$\utils\.."并且不起作用。

您需要使用循环,例如

Get-Content "C:\Temp\TEST.txt" | ForEach-Object { 

    Copy-Item "\\$_\c$\utils\TSM\baclient\dsmsched.log" -Destination "C:\temp\Testtest-$_.txt" 

} 

循环变量$_是线/服务器的名字,我的目标文件名也把服务器名也。

0

很难理解你想描述的内容。我个人通常把这样的东西放在for循环中,但我不完全确定它是必要的。如果你想从每台服务器上保存一个文件,你肯定需要一个独特的目的地,而你并没有这样做。您可以处理目标中的重命名。 尝试将设置目标设置为c:\ temp \ $ serverfromforloop-testtest.txt

相关问题