这个社区的新手和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文件恢复为一个服务器它确实复制好。我也想将我提取的LOG文件重命名为它来自的服务器的名称。
这里的任何帮助都不仅仅是值得赞赏的。
提前致谢。 MV
答案 0 :(得分: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"
}
循环变量$_
是行/服务器名称,我也将服务器名称也放在目标文件名中。
答案 1 :(得分:0)
很难理解你想要描述的内容。我个人通常会把这样的东西放在for循环中,但我并不完全确定它是必要的。如果您想保留每个服务器的文件,并且您没有这样做,那么您肯定需要一个唯一的目标。您可以在目的地处理重命名。 尝试将-destination设置为c:\ temp \ $ serverfromforloop-testtest.txt