1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
   | Option Explicit
 
Dim typeD, net, shell, fso, args, nbargs, domain, ComputerSystem, ComputerItem, oWinnt, oDomainItem, classe, Computer
Dim WMISet, Message, CumulTotal, CumulAvail, Mega, Capa, Desc, Name, Serial, TT, TL, Syst, pc		
Dim l, ch, lmax, k,i,Disk
 
'Affichage des informations : Disques durs.
typeD=Array("Inconnu","Amovible","Fixe","Réseau","CD-ROM","RAM Disk")
 
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
 
If testarg("d") Then
	domain=getarg("d")
	If domain="" Then
		Set ComputerSystem = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_ComputerSystem")
		for each ComputerItem in ComputerSystem
		    domain=ComputerItem.Domain
			next	
		End If
	Wscript.echo "Analyse des disques des ordinateurs du domaine " & Ucase(Domain)
	Wscript.echo "-----------------------------------------------" & string(len(Domain),"-") 
	set oWinnt=GetObject("WinNT://" & domain)
	For each oDomainItem in oWinnt
		classe=oDomainItem.Class
		Computer=oDomainItem.Name
		If classe="Computer" Then InfosDisques Computer 
		Next
else
	If testarg("m") then
		computer=getarg("m")
	else
		computer=net.ComputerName
		End If
	InfosDisques Computer	
	End If
'--------------------------------------------------------------------
Sub InfosDisques(computer)
set WMISet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
	("SELECT * FROM Win32_LogicalDisk")
wscript.echo "Affichage des informations sur les disques durs : "
wscript.echo "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯"
Message=VBCRLF
Message=Message & "   | " & FormatStrL("Nom",11) & " | " & FormatStrL("Type",8) 
Message=Message & " | " & FormatStrL("Système",8) 
Message=Message & " | " & FormatStrL("    Taille (Mo) ",17)
Message=Message & " | " & FormatStrL("  %",3) 
Message=Message & " | " & FormatStrL("N°série",8) 
Message=Message & VBCRLF 
Message=Message & "   | " & FormatStrL("",11) & " | " & FormatStrL("",8) 
Message=Message & " | " & FormatStrL("",8) 
Message=Message & " | " & FormatStrR("Maxi",7) & " | " & FormatStrR("Libre",7) 
Message=Message & " | " & FormatStrL("lib",3)
Message=Message & " | "
Message=Message & VBCRLF 
Message=Message & "---+-------------+----------+----------+---------+---------+-----+---------" 
Message=Message & VBCRLF 
CumulTotal=0
CumulAvail=0
Mega=1048576
For each Disk in WMISet
	Capa=Disk.Size
	Desc=TypeD(Disk.DriveType-1)
	If Capa<>"" Then
		Name=Disk.VolumeName
		Serial=Disk.VolumeSerialNumber
		TT=int(cdbl(Capa)/mega)
		TL=int(cdbl(Disk.FreeSpace)/mega)
		Syst=Disk.FileSystem
		If TT>0 Then
			pc=int(TL*100/TT)
		Else
			pc=""
			End If
		If Disk.DriveType=3 Then
			CumulTotal=CumulTotal+TT
			CumulAvail=CumulAvail+TL
			End If
	Else
		Name=""
		Serial=""
		TT=""
		TL=""
		Syst="non prêt"
		pc=""
		End If
	Message=Message & Disk.Name & " | " & FormatStrL(name,11) & " | " & FormatStrL(Desc,8)
	Message=Message & " | " & FormatStrL(syst,8)
	Message=Message & " | " & FormatStrR(TT,7) & " | " & FormatStrR(TL,7) 
	Message=Message & " | " & FormatStrR(pc,3)& " | " & Serial 
	Message=Message & VBCRLF 
	Next
Message=Message & "---+-------------+----------+----------+---------+---------+-----+---------" 
Message=Message & VBCRLF 
Message=Message & "   | " & FormatStrL("TOTAL fixes",11) & " | " & FormatStrL("",8)
Message=Message & " | " & FormatStrL("",8)
Message=Message & " | " & FormatStrR(CumulTotal,7) & " | " & FormatStrR(CumulAvail,7)
Message=Message & " | " & FormatStrR(int(CumulAvail*100/CumulTotal),3)
Message=Message & " | " & VBCRLF
wscript.echo Message
End Sub
'--------------------------------------------------------------------
Function FormatStrL(ch,lmax)	'Fonction avec l'espace APRÈS.
l=len(ch)
If l<lmax Then 
	For k = l+1 To lmax
		ch=ch & " "
		Next
	End If
FormatStrL=ch
End Function
'--------------------------------------------------------------------
Function FormatStrR(ch,lmax) 	'Fonction avec l'espace AVANT.
l=len(ch)
If l<lmax Then 
	For k = l+1 To lmax
		ch=" " & ch
		Next
	End If
FormatStrR=ch
End Function
'--------------------------------------------------------------------
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
'--------------------------------------------------------------------
 
'saisie pour bloquer la fermeture de la console.
'WScript.StdIn.ReadLine | 
Partager