[英]Remote file copy with powershell from multiple servers and rename
對這個社區來說是新手,對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
當您在文件中放置多個服務器名時, $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"
}
循環變量$_
是行/服務器名稱,我也將服務器名稱也放在目標文件名中。
很難理解您要描述的內容。 我個人通常將這樣的內容放入for循環中,但我不完全確定是否有必要。 如果要保留每個服務器中的文件,則肯定需要一個唯一的目的地,而您並沒有這樣做。 您可以在目的地中處理重命名。 嘗試將-destination設置為c:\\ temp \\ $ serverfromforloop-testtest.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.