簡體   English   中英

使用Powershell從多個服務器進行遠程文件復制並重命名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM