Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2840 connectés 

  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  defrag auto presque la solution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

defrag auto presque la solution

n°1836440
evangelion​1ooo
Posté le 07-12-2004 à 15:11:52  profilanswer
 

Salut,
 
j'essaie de trouver une solution pour pouvoir defragmenter mes w2k clients automatiquement et sans droits administrateurs.
 
J'ai trouvé un premier script xrunas.vbs, ce script permet de lancer ma console de defragmentation
 
xrunas /profile /user:domaine\administateur /pwd:****** "mmc %windir%\system32\dfrg.msc"
 
mais ce script ne lance pas automatiquement la defragmentation du c:.
 
j'ai egalement trouvé un petit log qui s'appelle autoit, lui il permet de lancer une defragmentation automatique du c: sans aucune intervention mais par contre on doit etre logger en admin(marche bien sur les serveurs).
 
Donc j'aimerais faire en gros une soupe de ces deux scripts avec les avantages de chacun d'eux a savoir:
1-lancer la console de defrag sans droits admin automatiquement
2-lancer la degragmentation du c: automatiquement
 
 
 
voici le script de xrunas:
' ---------------------------------------------------------------------
' Script de lancement d'application avec RUNAS
' Syntaxe identique à RUNAS mais avec en plus passage du mot de passe  
'
' Syntaxe:
' XRUNAS [/profile] [/env] [/netonly] /user:<NomUtilisateur> /pwd:<password> programme
'   /profile        si le profil de l'utilisateur doit être chargé
'   /env            pour utiliser l'environnement en cours à la place de
'                   celui de l'utilisateur.
'   /netonly        à utiliser si les informations d'identification spécifiées
'                   sont pour l'accès à distance seulement.
'   /user           <NomUtilisateur> sous la forme UTILISATEUR@DOMAINE
'                   ou DOMAINE\UTILISATEUR
' /pwd   <password> : le mot de passe
'   programme       ligne de commande pour EXE.  
'
 
' ---------------------------------------------------------------------
Const SW_HIDE=0
Const SW_SHOWNORMAL=1  
 
Dim shell, args, fso, erreur
Set net   = Wscript.CreateObject("WScript.Network" )
Set shell = WScript.CreateObject("WScript.Shell" )
Set fso   = WScript.CreateObject("Scripting.FileSystemObject" )
Set args  = Wscript.Arguments
nbargs=args.count
 
Title=shell.ExpandEnvironmentStrings("%systemroot%" ) & "\system32\runas.exe"
If not fso.FileExists(Title) Then  
 msg="Commande " & Title & " non trouvée" & VBCRLF
 msg=msg & "Ce script ne fonctionne que sous Windows 2000 et au delà" & VBCRLF
 wscript.echo msg
 wscript.quit
 End If
 
If nbargs=0 or testarg("?" ) or testarg("h" ) Then Syntaxe ""
defmoteur="cscript"
TestHost true
 
erreur=false
profile=""
env=""
netonly=""
If testarg("profile" ) Then profile="/profile "
If testarg("env" ) Then env="/env "
If testarg("netonly" ) Then netonly="/netonly "
If testarg("user:" ) Then user=getarg("user:" ) else MsgErr("Utilisateur absent" )
If testarg("pwd:" ) Then pwd=getarg("pwd:" ) else MsgErr("Mot de passe absent" )
testprog=false
For i = 0 To nbargs-1
 curarg=args(i)
 If left(curarg,1)<>"/" and left(curarg,1)<>"-" Then  
  programme=curarg
  testprog=true
  exit for
  End If
 Next
If not testprog then MsgErr("Programme absent" )
If erreur Then Syntaxe "erreur"
 
Commande="runas " & profile & env & netonly & "/user:" & user & " """ & programme & """"
 
shell.run Commande,SW_SHOWNORMAL
Title=shell.ExpandEnvironmentStrings("%systemroot%" ) & "\system32\runas.exe"
shell.AppActivate Title
WScript.Sleep 150
shell.SendKeys pwd & "~"
 
Wscript.quit
'--------------------------------------------------------------------
Function testarg(param)
testarg=false
For i = 0 To nbargs-1
 curarg=lcase(args(i))
 If left(curarg,1)="/" or left(curarg,1)="-" Then
  If mid(curarg,2,len(param))=param Then
   testarg=true
   exit function
   End If
  End If
 Next
End Function
'--------------------------------------------------------------------
Function getarg(param)
getarg=""
For i = 0 To nbargs-1
 curarg=lcase(args(i))
 If left(curarg,1)="/" or left(curarg,1)="-" Then
  If mid(curarg,2,len(param))=param Then
   getarg=mid(args(i),2+len(param))
   exit function
   End If
  End If
 Next
End Function
'--------------------------------------------------------------------
Sub MsgErr(msg)
wscript.echo "Erreur : " & msg
erreur=true
End Sub
'--------------------------------------------------------------------
' Sous programme de test du moteur
Sub TestHost(force)
dim rep
strappli=lcase(Wscript.ScriptFullName)
strFullName =lcase(WScript.FullName)
i=InStr(1,strFullName,".exe",1)
j=InStrRev(strFullName,"\",i,1)
strCommand=Mid(strFullName,j+1,i-j-1)
if strCommand<>"cscript" then
 If force then  
  Init="Ce script doit être lancé avec CSCRIPT"
 Else
  Init="Il est préférable de lancer ce script avec CSCRIPT"
  End If
 rep=MsgBox(Init & VBCRLF & _
 "Cela peut être rendu permanent avec la commande" & VBCRLF & _
 "cscript //H:CScript //S /Nologo" & VBCRLF & _
 "Voulez-vous que ce soit fait automatiquement?", _
 vbYesNo + vbQuestion,strappli)
 if rep=vbYes  then  
  nomcmd="setscript.bat"
  Set ficcmd = fso.CreateTextFile(nomcmd)
  ficcmd.writeline "@echo off"
  ficcmd.writeline "cscript //H:CScript //S /Nologo"
  ficcmd.writeline "pause"
  params=""
  For i = 0 To nbargs-1  
   params=params & " " & args(i)
   next
  ficcmd.writeline chr(34) & strappli & chr(34) & params
  ficcmd.writeline "pause"
  ficcmd.close
  shell.Run nomcmd, SW_SHOWNORMAL,true
  force=true
  end if
    If force then WScript.Quit
 end if
end sub
'--------------------------------------------------------------------
Sub Syntaxe(info)
If info="" Then
 msg=      "Script VBS de lancement d'application avec RUNAS" & VBCRLF
 msg=msg & "avec passage en paramètre du mot de passe" & VBCRLF & VBCRLF
 msg=msg & "JC BELLAMY © 2002" & VBCRLF  
 End If
msg=msg & "------------------------------------------" & VBCRLF
msg=msg & "Syntaxe : " & VBCRLF
msg=msg & " XRUNAS [/profile] [/env] [/netonly] /user:<compte> /pwd:<password> commande" & VBCRLF
msg=msg & "Paramètres :" & VBCRLF  
msg=msg & " /profile   si le profil de l'utilisateur doit être chargé" & VBCRLF
msg=msg & " /env       pour utiliser l'environnement en cours à la place de" & VBCRLF
msg=msg & "            celui de l'utilisateur." & VBCRLF
msg=msg & " /netonly   à utiliser si les informations d'identification spécifiées" & VBCRLF
msg=msg & "            sont pour l'accès à distance seulement." & VBCRLF
msg=msg & " /user      <compte> sous la forme UTILISATEUR@DOMAINE" & VBCRLF
msg=msg & "            ou UTILISATEUR ou DOMAINE\UTILISATEUR" & VBCRLF  
msg=msg & " /pwd       <password> : le mot de passe" & VBCRLF  
msg=msg & "            NB : sensible à la casse (minuscules/majuscules)" & VBCRLF
msg=msg & " commande   commande à exécuter" & VBCRLF & VBCRLF  
msg=msg & "Exemples :" & VBCRLF
msg=msg & "> xrunas /profile /user:administrateur /pwd:toto cmd" & VBCRLF
msg=msg & "> xrunas /profile /env /user:MonDomaine\admin /pwd:truc ""mmc %windir%\system32\dsa.msc"" " & VBCRLF
msg=msg & "> xrunas /env /user:utilisateur@domaine.microsoft.com /pwd:bill ""notepad \""Fichier.txt\"" " & VBCRLF & VBCRLF
msg=msg & "NB: vu que le mot de passe est visible, ce script ne doit être utilisé" & VBCRLF
msg=msg & "    qu'en des circonstances bien particulières!" & VBCRLF  
msg=msg & "    USER@DOMAIN n'est pas compatible avec /netonly." & VBCRLF & VBCRLF
wscript.echo msg
wscript.quit
End Sub
' -------------------------------------
 
 
et voici le script de autoit:
 
;
; AutoIt Version: 3.0
; Language:       Français
; Platform:       Win2000
; Function:       Lance le défragmenteur sur C: (modification possible du script pour une autre lettre)
;
 
;
; Configuration
;
 
Dim $dir = IniRead("autodefrag.ini", "Options", "Dir", "C:" )
Dim $defrag_anyway = IniRead("autodefrag.ini", "Options", "Defrag_anyway", 1)
Dim $caption = IniRead("autodefrag.ini", "Config", "Caption", "Défragmenteur de disque" )
Dim $report = IniRead("autodefrag.ini", "Config", "Report", "Défragmentation terminée" )
Dim $alert = IniRead("autodefrag.ini", "Config", "Alert", "Voulez-vous néanmoins exécuter la défragmentation maintenant ?" )
Dim $useless = IniRead("autodefrag.ini", "Config", "Useless", "Il ne vous est pas nécessaire de défragmenter ce volume." )
 
;
; One-Instance (AutoDefrag)
;
 
Dim $Product = "AutoDefrag 1.0"
If WinExists($Product) Then  
    Exit
EndIf
AutoItWinSetTitle($Product)
 
;
; One-Instance (dfrg)
;
 
If WinExists($caption) Then
    MsgBox(0, "Error", "An instance of Win2k dfrg.msc is already running. AutoDefrag will now exit." )
    Exit
EndIf
;
; Run defrag
;
 
Run("mmc.exe " & EnvGet("systemroot" ) & "\\system32\\dfrg.msc " & $dir)
WinWaitActive($caption)
Send("{TAB 3}" )
Send("{SPACE}" )
 
; défragmentation en cours
Dim $end = 0
while Not $end
    If Not WinExists($caption) Then
        MsgBox(0, "Error", "The instance of Win2k dfrg.msc has been unexpectedly killed. AutoDefrag will now exit." )
        Exit
    Endif
    If WinActive($caption,$alert) Or WinActive($caption,$useless) Then
        ; Espace libre insuffisant ou défragmentation inutile
        ; Continuer / Fermer       ou Rapport / Continuer / Fermer
        If WinActive($caption,$useless) Then
            Send("{TAB}" )
        EndIf
        If $defrag_anyway == 0 Then
            Send("{TAB}" )
            $end = 1
        EndIf
        Send("{ENTER}" )
    EndIf
    If WinActive($report) Then
        Send("{ESCAPE}" )
        $end = 1
    EndIf
WEnd
WinClose($caption)
 
 
Il faudrait rajouter :
WinWaitActive($caption)
Send("{TAB 3}" )
Send("{SPACE}" )
 dans le 1er script pour que la defrag se lance auto
mais jy arrive pas mes connaissances etant limité en vbs... :??:


Message édité par evangelion1ooo le 07-12-2004 à 15:22:53
mood
Publicité
Posté le 07-12-2004 à 15:11:52  profilanswer
 

n°1837427
revohsalf
http://revohsalf.com
Posté le 08-12-2004 à 00:37:55  profilanswer
 

  [:kzimir]


---------------
rEvOhSaLf ©
n°1837514
cherchepa
Cherche pas...
Posté le 08-12-2004 à 02:20:29  profilanswer
 

LOL !
good luck !
fait plutot un tour sur le forum de prog. voir codesource....


---------------
bisous a machistador!!!
n°1837515
tomilou
It's not a bug it's a feature
Posté le 08-12-2004 à 02:25:13  profilanswer
 

Je ne sais pas comment son configurées tes machines, mais si elles sont programmées pour se locker automatiquement, tu risques d'avoir des problèmes, AutoIT a besoin du user desktop environement pour tourner convenablement...
 
qu'est-ce que tu veux faire exactement, ta demande n'est pas clair...

n°1837602
evangelion​1ooo
Posté le 08-12-2004 à 09:20:24  profilanswer
 

hé bien,
 
Quand l'utilisateur est connecté,j'aimerais que la defragmentation de son c: se lance automatiquement une fois tous les 15jours..  
 
Quels genres de soucis je peux avoir si les machines se lockent automatiquement?
 
et qu'est ce que user desktop environement?pk autoit en a besoin?(bon je marque ca mais je v faire une recherche ds google de suite ;-))
 
merci pour ses reponses!!!

n°1845867
evangelion​1ooo
Posté le 13-12-2004 à 11:14:27  profilanswer
 

up


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  defrag auto presque la solution

 

Sujets relatifs
Quelle solution pour 2 ordis distants de 50 m ?[Outllok] Envoyer un auto-reply
Réduction auto taille des photos à l'envoidefrag auto sur client sans droit admin
Solution pour mettre en ligne Photos/commentaire suite voyageThunderbird ne fonctionne plus avec wanadoo ? [problème auto-résolu]
Chapeau à celui qui me trouve la solution !evaluation du log auto de hijack this
Solution d'hébergement ? 
Plus de sujets relatifs à : defrag auto presque la solution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR