2017-05-29 3 views
0

nouveau dans cette communauté et nouveau dans powershell. J'ai été chargé de rassembler un fichier de chacun de nos serveurs de fichiers.Copie de fichier à distance avec powershell à partir de plusieurs serveurs et renommer

J'ai besoin de copier ce fichier, puis le renommer avec le nom du serveur d'origine.

Je l'ai compris jusqu'à présent;

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

dans mon fichier test.txt j'ai une liste de serveurs pour copier le fichier à partir, mais quand je mets dans plus d'un nom de serveur, il ne copie pas le fichier d'eux, quand je prends le TEST.TXT fichier à un serveur, il copie bien. aussi je voudrais renommer le fichier LOG que je suis en train d'extraire au nom du serveur d'où il vient.

Toute aide ici serait plus qu'appréciée.

Merci d'avance. MV

Répondre

0

Lorsque vous placez plus d'un nom de serveur dans le fichier, $ListOfServers est un tableau de noms (lignes du fichier, en fait). Lorsque vous placez un tableau dans une chaîne avec la syntaxe "$a", le contenu est entouré d'un espace entre eux, de sorte que votre copie devient "\\server1 server2 server3\c$\utils\.." et ne fonctionne pas.

Vous devez utiliser une boucle, par ex.

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

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

} 

La variable de boucle $_ est le nom d'une ligne/serveur, et j'ai aussi mis le nom du serveur dans le nom du fichier de destination aussi.

0

Il est difficile de comprendre ce que vous essayez de décrire. Personnellement, je mets habituellement quelque chose comme ça dans une boucle for, mais je ne suis pas entièrement sûr que c'est nécessaire. Vous avez certainement besoin d'une destination unique si vous voulez conserver un fichier de chaque serveur, et vous ne le faites pas. Vous pouvez gérer le renommer dans votre destination. Essayez de définir -destination sur c: \ temp \ $ serverfromforloop-testtest.txt