|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Bonjour,
J'ai un souci incompréhensible ... Mon script test l'existence d'un répertoire et le supprime. Pourtant j'arrive à avoir une erreur lors de la tentative de suppression : Code :
Citation:
Comment ce répertoire peut-il exister et ne pas exister ?
|
|||
|
|
00
|
|
|
#2 |
![]() ![]() |
Salut
Code :
If oFSO.FolderExists(RepPath) = True Then oFSO.DeleteFolder(RepPath), True
__________________
ProgElecT A LIRE AVANT DE POSTER. F2 L'explorateur d'objets, F1 avec MSDN VB6 FR TUTO VB6/VBA/VBScript, Rechercher dans ce forum Et ces petits bouts de codes dans ma page de contribution sur DVP Soyez sympa, Pensez au tag
|
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Salut ProgElecT !
C'était une bonne idée, mais non, désolé, j'obtiens la même erreur ... |
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Manu Inscription : avril 2007 Messages : 233 ![]() |
Salut,
Tout d'abord, ta boucle serait plus simple comme cela (sans les 4 tests) : Code :
As-tu essayé en mettant des guillemets autour de ta chaine? Ou de mettre un antislash à la fin de la chaine? Bonne continuation. |
||
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Salut pitchalov !
D'abord merci de ta réponse. Je vais tester dès que possible, mais pour l'instant je redescends une image sur mon pc de test ... (bon j'avoue je le malmène ... mais il est là pour ça !)J'ai l'impression que c'est le système qui plante, plus que mon code vbs en fait. Je vous tiens au courant ! En tous cas : Code :
RepPath = RepName & "a" & Right("0000" & i, 5) C'est bien plus joli et beaucoup plus efficace. ![]() (Moi j'en suis encore au stade "Si ça marche, c'est déjà pas mal !" |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : février 2006 Messages : 787 ![]() |
il ne faut pas toujours prendre à la lettre le param Caract. n dans le message d'erreur renvoyé par wsh
comme la ligne 15 teste à la fois l'existence du fichier et cherche à le supprimer, je décomposerais cette ligne pour lever le doute, folderexist n'est pas toujours robuste ... ![]() et quel est ton os ? il est possible qu'ils soient protégés à partir de vista ou wk2003
__________________
nomen omen, nemo non omen le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón) pas de questions techniques par mp |
|
|
00
|
|
|
#7 | |||
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Merci également de ton intervention Omen999.
Bien j'ai tout essayé ... . Les guillemets -> pareil . Ajouter un slash -> pareil . Dissocier tests d'existence et suppression -> pareil Code :
Citation:
J'ai pourtant bien les droits nécessaire dans la session que j'utilise ... Je vais tester en mappant un lecteur ... demain ... Encore merci de m'avoir lu ! Bonne soirée à tous ! |
|||
|
|
00
|
|
|
#8 | ||||
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Bonjour à tous !
Bien après quelques tests supplémentaires, il semble en effet que j'aie un souci de droits ... Je n'ai pas géré la question des droits dans mon script puisque la session que j'utilise pour le lancer fait partie d'un groupe qui est administrateur local de tous les postes de travail. Etat des lieux : En ligne de commande, j'ai bien les droits : Code :
C:\>RD "\\PC_DISTANT\c$\Documents and Settings\Profil" /s /q Avec un mapping réseau préalable, ça fonctionne aussi : Code :
Mais en tentant une suppression directe du répertoire, ça ne fonctionne pas : Code :
Pourquoi ? Le souci est que le mapping d'un lecteur ne convient pas pour ce que je cherche à faire. Je ne peux pas me permettre d'attendre qu'un poste soit nettoyé pour passer au suivant ... Je dois pouvoir nettoyer plusieurs postes en même temps et donc appeler le .vbs de nettoyage depuis un script .vbs principal. Je n'arrive pas à trouver de solution, ni même une bidouille pour me sortir de cette impasse ... Auriez-vous une idée ? |
||||
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Manu Inscription : avril 2007 Messages : 233 ![]() |
Salut,
Ton problème me fait penser à un blocage de l'UAC (User account control). C'est une sécurité en place par défaut sur les OS Vista et Seven. Si c'est ton cas, vérifie que le problème vient de là en désactivant l'UAC sur un poste et en refaisant tes tests, pour voir. Sinon, au vu de ton problème de droits, peut-être que tu peux essayer de lancer tes scripts à distance sur les postes, avec psExec par example (outil des PsTools de la SysInternal suite). Bonne continuation. |
|
|
10
|
|
|
#10 |
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Hé hé
Non, config entreprise 'standard' : WinXP_Sp3 sur postes utilisateurs (ainsi que le poste de test que j'utilise) et Win2003_Server sur la plupart des serveurs. Concernant les PsTools, j'aimerais bien ne pas avoir à installer de logiciels tiers et surtout le but (final) de mon p'tit programme est de pouvoir être activé pendant la nuit par une tâche programmée et qu'il tourne tout seul comme un grand. Pour tout t'avouer, ce genre d'outil existe déjà (delprof par ex.), mais c'est justement pour éviter d'avoir à l'utiliser que je me suis lancé dans cette galère ! |
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Manu Inscription : avril 2007 Messages : 233 ![]() |
A toi de voir.
Mais je ne vois pas d'autre alternative à ton problème, si tes droits ne te permettent pas de faire ces suppressions. Par contre contrairement à ce que tu crois, psExec est un utilitaire portable et gratuit. Il n'a pas à être déployé sur les postes clients : tu lance la commande psExec sur ton poste avec les droits qui vont bien vers des postes distants et le code s'exécute à distance. Ton objectif de lancement par tâche planifiée la nuit peut donc sans problème se faire avec cet outil. Bonne continuation. |
|
|
00
|
|
|
#12 | |
![]() ![]() Inscription : février 2006 Messages : 787 ![]() |
Citation:
__________________
nomen omen, nemo non omen le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón) pas de questions techniques par mp |
|
|
|
00
|
|
|
#13 |
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Bien bien bien ... c'est vrai que les pstools semblent être une bonne idée, mais malheureusement ils apportent une autre problématique à ma situation.
En effet, au début de mon code de nettoyage, il y a un reboot du poste distant : Code :
WSHShell.Run ("C:\WINDOWS\system32\shutdown.exe -m \\" & StrComputer & " -r -f -t 0") Je suis contraint de redémarrer le poste pour libérer les ruches HKU du registre. Sinon j'ai toujours des fichiers NTUSER.DAT en cours d'utilisation qui ne peuvent être supprimés. (utilisateurs multiples et postes rarement redémarrés, simples fermetures de session en général) Et vu mon niveau en VBS, je vais éviter de jouer avec la base de registre. Bien c'est ce que l'on appelle tomber de Charybde en Scylla, je crois ... Je pense donc que je vais me contenter de la solution "mapping d'un lecteur" et nettoyage séquentiel ... Il faut juste que j'estime correctement combien de postes je peux programmer par nuit. Merci en tous cas de vous être creusé les méninges pour moi. ![]() A une prochaine ! ++ |
|
|
00
|
|
|
#14 | ||||
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Bonjour,
Je prends le temps aujourd'hui de clore ce sujet. Je voulais d'abord adresser un grand MERCI à tous les contributeurs, votre aide a été déterminante ! Principe de fonctionnement du script : 1. Une tâche planifiée lance le script principal 2. Le script principal lance le reboot des machine du parc. 3. Il attend le redémarrage des machine 4. Il lance le script secondaire de nettoyage sur les machine distance via PSEXEC. L'énorme avantage de cette méthode est que chaque poste s'auto-nettoye et utilise ses propres ressources. Du coup je peux nettoyer l'ensemble du parc en même temps ! Voici la commande PSEXEC utilisée dans le script principal : Code :
WSHShell.Run ("psexec \\" & nom_pc(i) & " -d -u domaine\administrateur -p mdpadmin -e c:\windows\system32\wscript " & Rep_du_Script & "\cleaner.vbs") Code :
Code :
Aujourd'hui j'ai un outil qui fonctionne et j'ai fait plein de progrès ! Merci une fois encore d'avoir pris le temps de répondre à mes questions ! ![]() ++ |
||||
|
|
00
|
|
|
#15 | ||
|
Membre confirmé
![]() Manu Inscription : avril 2007 Messages : 233 ![]() |
Bonjour,
Ravi que tu sois arrivé à tes fins sur ce sujet. A moins que cela correspondent à des besoins particuliers, je ne pense pas que 2 scripts soient nécessaires pour faire cette opération. Je te propose donc ,au cas où tu sois intéressé, une petite évol de ton script cleaner.vbs, qui fait exactement les mêmes actions que tes 2 scripts (en un seul cette fois), et d'une écriture un peu remaniée (à mon goût plus lisible, après faut voir pour toi) : Code :
|
||
|
|
10
|
|
|
#16 |
|
Membre régulier
![]() Administrateur systèmes et réseaux Inscription : novembre 2011 Messages : 64 ![]() |
Bien sûr que je suis intéressé !
J'aime beaucoup ton approche, plus efficace et bien plus agréable. C'est toujours un plaisir de lire ton code ! (bah ça si c'est pas une phrase de geek ... )Je me rends bien compte que j'ai encore des progrès à faire avant de pouvoir prétendre à coder en finesse, comme toi ! Merci encore ![]() ++ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com