Powershell condition if
Fermé
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
-
23 janv. 2014 à 13:43
blux Messages postés 26733 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 mars 2025 - 28 janv. 2014 à 11:34
blux Messages postés 26733 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 mars 2025 - 28 janv. 2014 à 11:34
A voir également:
- If powershell
- Virus powershell - Guide
- | Barre verticale powershell - Forum Windows
- Powershell s'ouvre et se ferme ✓ - Forum Virus
- Le signe " | " dans excel - Forum Excel
- Bat powershell ✓ - Forum PowerShell
4 réponses
blux
Messages postés
26733
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 mars 2025
3 332
23 janv. 2014 à 13:59
23 janv. 2014 à 13:59
Salut,
pourquoi tu n'utilises pas la fonction 'copy-item' ?
pourquoi tu n'utilises pas la fonction 'copy-item' ?
Copy-Item -Path $rep_src -Destination $rep_dst -recurse -force if ($?) { # Si ok } else { # Si pas ok }
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
23 janv. 2014 à 14:08
23 janv. 2014 à 14:08
Bonjour,
Je n'ai pas utilisé cette fonction car je ne la connaissais pas.
Du coup les options sont-elles les même ? Je veux faire une sauvegarde incrémentale qui récupère tous les dossiers même vides, les fichiers cachés etc...
En tout cas, ça semble plus complet que la commande "xcopy", plus destinée à des .bat.
Je vais essayer merci !
Je n'ai pas utilisé cette fonction car je ne la connaissais pas.
Du coup les options sont-elles les même ? Je veux faire une sauvegarde incrémentale qui récupère tous les dossiers même vides, les fichiers cachés etc...
En tout cas, ça semble plus complet que la commande "xcopy", plus destinée à des .bat.
Je vais essayer merci !
blux
Messages postés
26733
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 mars 2025
3 332
23 janv. 2014 à 14:25
23 janv. 2014 à 14:25
Pas d'incrémental...
Mais tu peux parfaitement faire un parcours de ton arborescence et boucler sur les fichiers à copier...
Ou regarder du côté de start-process si tu veux conserver ta commande avec le /d
Je jette un oeil pour voir comment on peut s'en sortir et je reviens dès que j'ai quelque chose.
Mais tu peux parfaitement faire un parcours de ton arborescence et boucler sur les fichiers à copier...
Ou regarder du côté de start-process si tu veux conserver ta commande avec le /d
Je jette un oeil pour voir comment on peut s'en sortir et je reviens dès que j'ai quelque chose.
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
23 janv. 2014 à 14:34
23 janv. 2014 à 14:34
c'est super sympa merci.
En fait quand je faisais mon xcopy, je générais un fichier log :
xcopy .... .... >> log.log
Puis-je faire la même chose ici ? (Je vais rechercher de la documentation dessus mais si tu es au courant, ce serait super.)
Mais pour résumé, ce script devra a terme, proposer une sauvegarde, générer un fichier log, si il y a une erreur, il doit envoyer un mail.
Jusqu'à la j'ai pu y arriver, mais c'est la condition qui me pose problème.
En tout cas, merci beaucoup pour l'aide que tu m'apportes.
En fait quand je faisais mon xcopy, je générais un fichier log :
xcopy .... .... >> log.log
Puis-je faire la même chose ici ? (Je vais rechercher de la documentation dessus mais si tu es au courant, ce serait super.)
Mais pour résumé, ce script devra a terme, proposer une sauvegarde, générer un fichier log, si il y a une erreur, il doit envoyer un mail.
Jusqu'à la j'ai pu y arriver, mais c'est la condition qui me pose problème.
En tout cas, merci beaucoup pour l'aide que tu m'apportes.
kelux
Messages postés
3074
Date d'inscription
vendredi 18 juin 2004
Statut
Contributeur
Dernière intervention
20 janvier 2023
432
23 janv. 2014 à 14:41
23 janv. 2014 à 14:41
Salut,
Xcopy doit avoir des retours d'erreur qui lui sont propres... (derniere section dans le lien, ex avec robocopy ; mais ça ne t'empeche pas de tout lire ;) )
https://docs.microsoft.com/en-us/archive/blogs/
Tu peux donc utiliser la méthode try-catch ; avec plusieurs blocs catch en fonction des erreurs que tu veux "attraper".
Regarde la section ExitCode :
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491035(v=technet.10)?redirectedfrom=MSDN
Xcopy doit avoir des retours d'erreur qui lui sont propres... (derniere section dans le lien, ex avec robocopy ; mais ça ne t'empeche pas de tout lire ;) )
https://docs.microsoft.com/en-us/archive/blogs/
Tu peux donc utiliser la méthode try-catch ; avec plusieurs blocs catch en fonction des erreurs que tu veux "attraper".
Regarde la section ExitCode :
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb491035(v=technet.10)?redirectedfrom=MSDN
kelux
Messages postés
3074
Date d'inscription
vendredi 18 juin 2004
Statut
Contributeur
Dernière intervention
20 janvier 2023
432
23 janv. 2014 à 14:42
23 janv. 2014 à 14:42
Et effectivement Xcopy n'est pas du powershell ;)
blux
Messages postés
26733
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 mars 2025
3 332
23 janv. 2014 à 15:01
23 janv. 2014 à 15:01
Je viens de regarder, on peut lancer xcopy avec un start-process, mais le problème est que l'erreur que l'on peut intercepter n'est valable que si le xcopy n'a pas pu être lancé.
On peut cependant créer des fichiers log en sortie où l'on trouvera les erreurs le cas échéant...
On peut cependant créer des fichiers log en sortie où l'on trouvera les erreurs le cas échéant...
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
24 janv. 2014 à 14:38
24 janv. 2014 à 14:38
Merci c'est ce que j'ai fais.
J'ai encore un problème, le dernier j'espère.
Alors, j'ai fais un jeu d'essai, et le fait que le disque destinataire n'a pas l'espace suffisant, n'est pas reconnu comme problème.
J'aimerai donc comparer les chaines de caractères du fichier Testsort2.txt (le fichier sortant) celui qui me prévient que l'espace n'est pas suffisant et si les chaines correspondent, alors j'execute l'instruction.
J'ai trouvé quelque bout de code, qui ne fonctionne pas :
Si tu as une idée ?
Bonne journée.
J'ai encore un problème, le dernier j'espère.
Alors, j'ai fais un jeu d'essai, et le fait que le disque destinataire n'a pas l'espace suffisant, n'est pas reconnu comme problème.
J'aimerai donc comparer les chaines de caractères du fichier Testsort2.txt (le fichier sortant) celui qui me prévient que l'espace n'est pas suffisant et si les chaines correspondent, alors j'execute l'instruction.
J'ai trouvé quelque bout de code, qui ne fonctionne pas :
$a = Get-Content "C:\test\Testsort2.txt"
$a | foreach {
if ($a -eq "disque insuffisant") {write-host = "ok"}
else {write-host = "Nok"}
}
Si tu as une idée ?
Bonne journée.
blux
Messages postés
26733
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 mars 2025
3 332
24 janv. 2014 à 14:55
24 janv. 2014 à 14:55
Quelle est l'erreur ?
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
24 janv. 2014 à 15:12
24 janv. 2014 à 15:12
j'ai le droit à un truc comme ça :
nok
nok
...
Il me renvoi qu'a "else" alors que normalement il devrait trouvé ma condition, je pense que mon code n'est pas bon du tout . :/
nok
nok
...
Il me renvoi qu'a "else" alors que normalement il devrait trouvé ma condition, je pense que mon code n'est pas bon du tout . :/
kelux
Messages postés
3074
Date d'inscription
vendredi 18 juin 2004
Statut
Contributeur
Dernière intervention
20 janvier 2023
432
24 janv. 2014 à 15:17
24 janv. 2014 à 15:17
http://technet.microsoft.com/en-us/library/hh847759.aspx
Utilise -contains pour voir ...
Utilise -contains pour voir ...
kelux
Messages postés
3074
Date d'inscription
vendredi 18 juin 2004
Statut
Contributeur
Dernière intervention
20 janvier 2023
432
Modifié par kelux le 24/01/2014 à 15:19
Modifié par kelux le 24/01/2014 à 15:19
Ou -like
D'ailleurs la boucle for n'est pas nécessaire, tu pipes $a dans ton test.
D'ailleurs la boucle for n'est pas nécessaire, tu pipes $a dans ton test.
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
24 janv. 2014 à 15:28
24 janv. 2014 à 15:28
toujours le même problème avec ou sans le for, et avec les autres opérateurs.
Pas évident le powershell :/
Merci pour votre aide les gars
Pas évident le powershell :/
Merci pour votre aide les gars
chiwawa38
Messages postés
49
Date d'inscription
lundi 1 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2014
27 janv. 2014 à 10:40
27 janv. 2014 à 10:40
Bonjour à tous, j'en profite pour dire qu'il y a eu du progrès, mais comme d'habitude, une solution est toujours accompagné d'un problême :
Mon problême ici, c'est que la fenetre xcopy ne se ferme pas automatiquement lorsque ça marque "Espace disque insuffisant" du coup mon script ne peut pas continuer.
Le problême reste le même si j'enlève le -wait.
Voila, merci les solutions que vous pourrez m'apporter.
$a = Get-Content $Logtest Start-Process "c:\windows\system32\xcopy.exe" -argumentlist $xcopy -RedirectStandardOutput $Logtest -RedirectStandardError $LogErreur -wait if ($a -match "disque insuffisant") { Stop-Process -name xcopy Get-Content $Logtest >> $LogErreurTmp }
Mon problême ici, c'est que la fenetre xcopy ne se ferme pas automatiquement lorsque ça marque "Espace disque insuffisant" du coup mon script ne peut pas continuer.
Le problême reste le même si j'enlève le -wait.
Voila, merci les solutions que vous pourrez m'apporter.
blux
Messages postés
26733
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 mars 2025
3 332
28 janv. 2014 à 11:34
28 janv. 2014 à 11:34
je vais faire un test, en attendant tu mettras ton get-content APRES l'exécution de la commande...