Question
Copie d'un fichier et \"renommage\" du dossier !
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 4 mois #8426
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Copie d'un fichier et \"renommage\" du dossier !
Bien, alors ça devrait être tout bon. 
Pour ce qui est des explications...
Sur un objet répertoire, la propriété PSIsContainer est à $true, alors qu'elle est à $false pour un fichier. D'où la possibilité de faire un filtre \"where {$_.PSIsContainer} sur les objets retournés par la commande dir pour n'afficher que les répertoires.
La ligne suivante retourne donc les répertoires contenus dans d:/VM sur chaque serveur :
[code:1]
dir \\$serveur\d$\VM | where {$_.PSIsContainer}
[/code:1]
Chaque répertoire retourné par la commande précédente est identifiable par sa propriété Name, qui comme on peut s'y attendre stocke son nom.
La commande suivante crée donc un répertoire dans /VMBackup correspondant à chaque nom retourné par la commande précédente :
[code:1]
foreach
{
md d:\VMBackup\$($_.name)
}
[/code:1]
J'espère que c'est plus clair pour toi.
Pour ce qui est des explications...
Sur un objet répertoire, la propriété PSIsContainer est à $true, alors qu'elle est à $false pour un fichier. D'où la possibilité de faire un filtre \"where {$_.PSIsContainer} sur les objets retournés par la commande dir pour n'afficher que les répertoires.
La ligne suivante retourne donc les répertoires contenus dans d:/VM sur chaque serveur :
[code:1]
dir \\$serveur\d$\VM | where {$_.PSIsContainer}
[/code:1]
Chaque répertoire retourné par la commande précédente est identifiable par sa propriété Name, qui comme on peut s'y attendre stocke son nom.
La commande suivante crée donc un répertoire dans /VMBackup correspondant à chaque nom retourné par la commande précédente :
[code:1]
foreach
{
md d:\VMBackup\$($_.name)
}
[/code:1]
J'espère que c'est plus clair pour toi.
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 4 mois #8427
par Van_De
Réponse de Van_De sur le sujet Re:Copie d'un fichier et \"renommage\" du dossier !
Oui merci beaucoup !! Vraiment c'est tout ce que je cherchais
!!!
Merci.
Je reviendrais embeter si j'ai un autre problème
Merci.
Je reviendrais embeter si j'ai un autre problème
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 4 mois #8428
par Van_De
Réponse de Van_De sur le sujet Re:Copie d'un fichier et \"renommage\" du dossier !
Bon je reviens plus vite que prévu ^^
Alors j'ai effectué des tests. Et juste pour la copie pour le moment et sa ne marche pas entièrement :/
Je mets mon code pour voir mes erreurs :
[code:1]
foreach ($serveur in $serveurs)
{
dir D:\Vm | where {$_.PSIsContainer} | foreach {md \\bxad02\VMBackup\Test\$($_.name)}
}
Copy-Item -Path D:\Vm\$($_.name)\*.txt -Destination \\bxad02\VMBackup\Test\$($_.name)
[/code:1]
Voila, et suite à sa il me crée bien les dossiers mais ne fais aucune copie ... et je n'ai aucun message d'erreur non plus ! Je ne comprends pas !
Alors j'ai effectué des tests. Et juste pour la copie pour le moment et sa ne marche pas entièrement :/
Je mets mon code pour voir mes erreurs :
[code:1]
foreach ($serveur in $serveurs)
{
dir D:\Vm | where {$_.PSIsContainer} | foreach {md \\bxad02\VMBackup\Test\$($_.name)}
}
Copy-Item -Path D:\Vm\$($_.name)\*.txt -Destination \\bxad02\VMBackup\Test\$($_.name)
[/code:1]
Voila, et suite à sa il me crée bien les dossiers mais ne fais aucune copie ... et je n'ai aucun message d'erreur non plus ! Je ne comprends pas !
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 4 mois #8429
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Copie d'un fichier et \"renommage\" du dossier !
A première vue je dirais que tu as deux problèmes :
1. La commande 'dir d:/vm' énumère les répertoires sur le disque D: local. Or, tu lances cette commande dans une boucle qui est censée parcourir l'ensemble des serveurs, et donc le disque D: de chacun de ces serveurs, non ?
2. La commande copy-item n'est pas dans la boucle où tu crées le répertoire, et du coup l'objet $_ ne pointe sur rien, et à fortiori la propriété $_.name est vide.
Je corrigerais donc ton code ainsi :
[code:1]
foreach ($serveur in $serveurs)
{
dir \\$serveur\d$\Vm | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
Copy-Item -Path \\$serveur\d$\Vm\$($_.name)\*.txt -Destination \\bxad02\VMBackup\Test\$($_.name)
}
}
[/code:1]
1. La commande 'dir d:/vm' énumère les répertoires sur le disque D: local. Or, tu lances cette commande dans une boucle qui est censée parcourir l'ensemble des serveurs, et donc le disque D: de chacun de ces serveurs, non ?
2. La commande copy-item n'est pas dans la boucle où tu crées le répertoire, et du coup l'objet $_ ne pointe sur rien, et à fortiori la propriété $_.name est vide.
Je corrigerais donc ton code ainsi :
[code:1]
foreach ($serveur in $serveurs)
{
dir \\$serveur\d$\Vm | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
Copy-Item -Path \\$serveur\d$\Vm\$($_.name)\*.txt -Destination \\bxad02\VMBackup\Test\$($_.name)
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 4 mois #8430
par Van_De
Réponse de Van_De sur le sujet Re:Copie d'un fichier et \"renommage\" du dossier !
D'accord je me doutais bien qu'il y avait un petit problème avec la commande Copy-Item et le $_.name 
D'accord merci beaucoup
D'accord merci beaucoup
Connexion ou Créer un compte pour participer à la conversation.
- Van_De
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 59
- Remerciements reçus 0
il y a 15 ans 4 mois #8431
par Van_De
Réponse de Van_De sur le sujet Re:Copie d'un fichier et "renommage" du dossier !
Aprés avoir fait plusieurs tests je me lance enfin dans la rédaction de mon script \"final\" ! J'arrive pour le moment à quelque chose comme sa :
[code:1]
foreach ($serveur in $serveurs)
{
dir \\$serveur\d$\VM | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
md \\bxad02\VMBackup\Test\$($_.name)\Temp
Copy-Item \\$serveur\d$\VM\$($_.name)\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Temp
Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
if (Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup)
{
Remove-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup -recurse
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
else
{
md \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Copy-Item \\bxad02\VMBackup\Test\$($_.name)\Temp\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item - Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
[/code:1]
Alors à tout cela je voudrais ajouter un envoi de mail qui puisse me dire si la sauvegarde s'est bien passer pour chaque machine (Peut être faire un fichier txt par serveur hôtes qui me listerai les VM qu'il envoie, que dans ce fichier txt il me dise si la copie s'est bien passer, me dire ce qui n'as pas marcher et pourquoi pas me dire le temps que sa prend)!
J'ai regardé et utiliser la commande \"Send-mailmessage\" déja mais je voudrais l'ajouter avec toutes les conditions citées ci-dessus
et la je ne trouve pas ce que je cherche
<br><br>Message édité par: Van_De, à: 27/12/10 10:03
[code:1]
foreach ($serveur in $serveurs)
{
dir \\$serveur\d$\VM | where {$_.PSIsContainer} | foreach {
md \\bxad02\VMBackup\Test\$($_.name)
md \\bxad02\VMBackup\Test\$($_.name)\Temp
Copy-Item \\$serveur\d$\VM\$($_.name)\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Temp
Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
if (Test-Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup)
{
Remove-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup -recurse
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item -Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
else
{
md \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Copy-Item \\bxad02\VMBackup\Test\$($_.name)\Temp\* -Destination \\bxad02\VMBackup\Test\$($_.name)\Ancienbackup
Move-Item - Path \\bxad02\VMBackup\Test\$($_.name)\Temp \\bxad02\VMBackup\Test\$($_.name)\Dernierbackup
}
[/code:1]
Alors à tout cela je voudrais ajouter un envoi de mail qui puisse me dire si la sauvegarde s'est bien passer pour chaque machine (Peut être faire un fichier txt par serveur hôtes qui me listerai les VM qu'il envoie, que dans ce fichier txt il me dise si la copie s'est bien passer, me dire ce qui n'as pas marcher et pourquoi pas me dire le temps que sa prend)!
J'ai regardé et utiliser la commande \"Send-mailmessage\" déja mais je voudrais l'ajouter avec toutes les conditions citées ci-dessus
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Copie d'un fichier et "renommage" du dossier !