Vbs

Messages postés
12
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
24 janvier 2013
- - Dernière réponse : chriskalo1
Messages postés
10
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
5 septembre 2012
- 23 mai 2012 à 22:09
Bonjour,
Voilà, Je ne connais rien en vbs. j'ai réuperé un script en vbs qui marche bien. quelqu'un pourrai me corriger svp ?
Le script m'indique simplement la taille de disque, l'espace libre et la taille en pourcentage. C'est déjà bien. mais je voudrai que le script m'indique aussi l'espace utilisé en Mo ou Go etc...aussi dans le fichier rapport.

En vous remerciant
voici le script :

'----------------------------------------------------------
' Script de description des Hdd dans une page web
' ----------------------------------------------------------
Dim cnt
dim Aff()
dim Aff0()
dim Aff1()
dim Aff2()
dim Aff3()

cnt = 0
Redim Aff(cnt)
Redim Aff0(cnt)
Redim Aff1(cnt)
Redim Aff2(cnt)
Redim Aff3(cnt)

Select Case WScript.Arguments.Count
Case 0
' Default if none specified is local computer (".")
Set objWMIService = GetObject( "winmgmts://./root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputer = objItem.Name
Next
Case 1
' Command line parameter can either be a computer name
' or "/?" to request online help
strComputer = Wscript.Arguments(0)
if InStr( strComputer, "?" ) > 0 Then Syntax
Case Else
' Maximum is 1 command line parameter
Syntax
End Select

Display( strComputer )

Function Display( strComputer )
On Error Resume Next
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
If Err.Number Then
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _
" " & Err.Description
Err.Clear
Syntax
End If
On Error GoTo 0
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48)
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48)
For Each objItem in colItems
Aff(cnt) = strComputer
Aff0(cnt) = objItem.Name & vbTab
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) )
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) )
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _
vbCrLf
cnt = cnt + 1
Redim Preserve Aff(cnt)
Redim Preserve Aff0(cnt)
Redim Preserve Aff1(cnt)
Redim Preserve Aff2(cnt)
Redim Preserve Aff3(cnt)
Next
End Function

' ----------------------------------------------------------
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
DestHTML = "hd.HTML"
CreateHTML DestHTML

Sub CreateHTML(filename)
dim ts
set ts=fso.CreateTextFile(filename,true)
ts.writeline "<HTML>"
ts.WriteLine ""
ts.WriteLine " <CENTER>Affiche les informations des HDD
"
ts.writeline "\"
ts.writeline \"----
\"
ts.writeline \""
ts.writeline "Name, \"
ts.writeline \""
ts.writeline "Drive, \"
ts.writeline \""
ts.writeline "Size, \"
ts.writeline \""
ts.writeline "Free, \"
ts.writeline \""
ts.writeline "% Free, \"
ts.writeline \"\"
ts.writeline \"----
\"
for i = 0 to cnt
ts.writeline \"" & Aff(i) & ", \"
ts.writeline \"" & Aff0(i) & ", \"
ts.writeline \"" & Aff1(i) & ", \"
ts.writeline \"" & Aff2(i) & ", \"
ts.writeline \"" & Aff3(i) & ", \"
ts.writeline \"\"
next

ts.writeline "
"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "

"
ts.writeline "Fait le 10 Mai 2011 par Pierre NAJAFI
"
ts.WriteLine "</CENTER>"
ts.WriteLine "</HTML>"
ts.close
End Sub
Afficher la suite 

5 réponses

Messages postés
47
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
22 mai 2012
1
0
Merci
Bonjour.

Tu dois :
- faire une soustraction Aff1 - Aff2...
- Mettre le résultat dans Aff4
- Afficher Aff4

'---------------------------------------------------------- 
' Script de description des Hdd dans une page web 
' ---------------------------------------------------------- 
Dim cnt 
dim Aff() 
dim Aff0() 
dim Aff1() 
dim Aff2() 
dim Aff3() 
dim Aff4() 

cnt =  0 
Redim Aff(cnt) 
Redim Aff0(cnt) 
Redim Aff1(cnt) 
Redim Aff2(cnt) 
Redim Aff3(cnt) 
Redim Aff4(cnt) 

Select Case WScript.Arguments.Count 
Case 0 
' Default if none specified is local computer (".") 
Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) 
Set colItems = objWMIService.ExecQuery( "Select * from Win32_ComputerSystem", , 48 ) 
For Each objItem in colItems 
strComputer = objItem.Name 
Next 
Case 1 
' Command line parameter can either be a computer name 
' or "/?" to request online help 
strComputer = Wscript.Arguments(0) 
if InStr( strComputer, "?" ) > 0 Then Syntax 
Case Else 
' Maximum is 1 command line parameter 
Syntax 
End Select 

Display( strComputer ) 

Function Display( strComputer ) 
On Error Resume Next 
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" ) 
If Err.Number Then 
WScript.Echo vbCrLf & "Error # " & CStr( Err.Number ) & _ 
" " & Err.Description 
Err.Clear 
Syntax 
End If 
On Error GoTo 0 
' Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where MediaType=12",,48) 
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DriveType=3",,48) 
For Each objItem in colItems 
Aff(cnt) = strComputer 
Aff0(cnt) = objItem.Name & vbTab 
Aff1(cnt) = CStr( Int( 0.5 + ( objItem.Size / 1073741824 ) ) ) 
Aff2(cnt) = CStr( Int( 0.5 + ( objItem.FreeSpace / 1073741824 ) ) ) 
Aff4(cnt) = Aff1(cnt) - Aff2(cnt)
Aff3(cnt) = CStr( Int( 0.5 + ( 100 * objItem.FreeSpace / objItem.Size) ) ) & _ 
vbCrLf 
cnt = cnt + 1 
Redim Preserve Aff(cnt) 
Redim Preserve Aff0(cnt) 
Redim Preserve Aff1(cnt) 
Redim Preserve Aff2(cnt) 
Redim Preserve Aff3(cnt) 
Redim Preserve Aff4(cnt) 
Next 
End Function 

' ---------------------------------------------------------- 
Dim fso 
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 
DestHTML = "hd.HTML" 
CreateHTML DestHTML 

Sub CreateHTML(filename) 
dim ts 
set ts=fso.CreateTextFile(filename,true) 
ts.writeline "<HTML>" 
ts.WriteLine "" 
ts.WriteLine " <CENTER>Affiche les informations des HDD
 " 
ts.writeline "\"
ts.writeline \"----
\"
ts.writeline \""
ts.writeline "Name, \"
ts.writeline \""
ts.writeline "Drive, \"
ts.writeline \""
ts.writeline "Size, \"
ts.writeline \""
ts.writeline "Free, \"
ts.writeline \""
ts.writeline "Use, \"
ts.writeline \""
ts.writeline "% Free, \"
ts.writeline \"\"
ts.writeline \"----
\"
for i  = 0 to cnt
ts.writeline \"" & Aff(i) & ", \"
ts.writeline \"" & Aff0(i) & ", \"
ts.writeline \"" & Aff1(i) & ", \"
ts.writeline \"" & Aff2(i) & ", \"
ts.writeline \"" & Aff4(i) & ", \"
ts.writeline \"" & Aff3(i) & ", \"
ts.writeline \"\"
next

ts.writeline "
" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline " 

" 
ts.writeline "Fait le " & now & " par Pierre NAJAFI 
" 
ts.WriteLine "</CENTER>" 
ts.WriteLine "</HTML>" 
ts.close 
End Sub


J'espère que ça va t'aider....

A+
Sbt
Commenter la réponse de cs_Sbt
Messages postés
12
Date d'inscription
vendredi 20 août 2010
Statut
Membre
Dernière intervention
24 janvier 2013
0
Merci
SUPER sbt
Un grand merci à toi. ok çà marche.
je voulais avoir ton avis. j'ai mis ce script en tache planifié sur pas mal de serveur et le rapport de ce script est crée sur chaque serveur. jusqu'à là tout va bien.

2 questions stp :
Peut-on modifier ce code pour que les rooports soit envoyer sur une adresse de messagerie?

Sinon peut-on modifier ce code pour lire un fichier par exemple serveur.txt qui comprend les noms de tous mes serveurs dans un domain et envoyer juste un seul rapport ou créer un seul rapport et laisser sur un serveur ou soit m'envoyer par la messagerie à mon adresse ?

cela me permetra de ganier un temps enorme.

Excuse-moi SBT je ne sais pas si je suis clair ?
merci pour ton retour

en te remerciant
jhon
Commenter la réponse de JHON44
Messages postés
10
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
5 septembre 2012
0
Merci
bjr, je fais un stage au bresil en reseau. mn chef ma demander de faire un script qui lit le contenu d un fichier selon l especification genre:
je recheche les mots(nom ,adresse, loca).
quand il trouve un de ces mots sur une ligne il copí toute la ligne et la sauve dans un autre fichier. apres avoir trouver tout les renseignements il imprime sous forme de tableau ou liste!
je suis debutan en vbscript alors je besoins d aide!
Commenter la réponse de chriskalo1
Messages postés
47
Date d'inscription
mardi 29 avril 2003
Statut
Membre
Dernière intervention
22 mai 2012
1
0
Merci
Bonjour Chriskalo1.

Tu devrais faire une recherche sur google.
VBS lire fichier txt
vbs ecrire ficheir txt

Sinon voici un exemple de lecture :

dim fso, text, readfile, ligne
set fso = CreateObject("Scripting.FileSystemObject") 
set readfile = fso.OpenTextFile("c:\tonfichier.txt", 1, false) 
do while readfile.AtEndOfStream=false 
    'le traitement à faire ici 
    
    ' a la fin du traitement de la ligne, on lit la suivante
    contents = readfile.ReadLine 
loop 
readfile.close 


en espérant que cela puisse t'aider un peu...
Je te laisse voir pour l'écriture, et la recherche d'un mot dans une chaine de caractères...
En cherchant sur le net, je sur certain que tu trouveras tous les exemples dont tu as besoin
...

A+

Sbt
Commenter la réponse de cs_Sbt
Messages postés
10
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
5 septembre 2012
0
Merci
Merci beaucoup pr l aide mais jete un oiel sur ce code ici pcq il me marche ps. j ai consulté certain site et j arrive tjrs ps a trouver cmt parcourire le ligne et les copiés pr un autre fichier

'Instruction Option Explicit: Force la déclaration explicite de toutes les variables dans un script

Option 	Explicit

' \\Declaration des variables et des objets

Dim objFSO
Dim sRead
Dim sReadLine
Dim sReadAll
Dim objTextFile


const ForReading = 1
Const ForWriting = 2
const ForAppending = 8


' \\creation de l objet Fso

set objFSO = CreateObject("Scripting.fileSystemObject")

' \\localisation et verification du local du fichier a etre li

set objTextFile = objFSO.OpenTextFile (":\text\text0.txt", ForReading, True)
objFSO.FileExists("E:\text\text0.txt")
While objTextFile.AtEndOfStream <> True

sRead= objTextFile.ReadLine	
Wend
objTextFile.Close 
Commenter la réponse de chriskalo1