Scriptimiz çalıştırıldığı bilgisayarın envanterini çıkartarak, paylaşıma koyduğumuz mdb dosyası üzerine kayıtı yazıyor. Veritabanına yazdıktan sonra C: dizini altına env.txt isimli dosya oluşturuyor. Aynı bilgisayarda tekrar çalışmaması için ise env.txt dosyasının varlığını kontrol ediyor dosya varsa eğer envanteri çıkartmadan çıkıyor.
Active Directory üzerinden logon script olarak uygulayıp envanter bilgisi toplayabiliriz.
Envanter içeriği,
Network kartları ve ip,dns,gateway,subnetleri.
cdrom, fiziksel disk sürücüler ve partition yapilari, bilgisayara takılı olan ramler vb
'==========================================================================
'
' notsayfam.com
'
'==========================================================================
Option Explicit
dim envanter
envanter = "c:\env.txt"
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Dim iCursorType ' The Cursor Type for the Recordset
Dim iLockType ' The Lock Type for the Recordset
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' c:\env.txt dosyasi mevcut degilse envanter cikarilmasini sagliyoruz
if not fso.FileExists(envanter) then
Dim output
Dim wmiService
Dim bilgiler
Dim hostname
Dim islemci
Dim islemcifiziksel
Dim islemcicekirdek
Dim Bilgisayartipi
Dim nicMAC
Dim ram,ramslotsayisi,rammax,rammhz,ramtipi,ramboyutu,ramslot
Dim hdd,hddboyut,hddtip,hddid
Dim cdromsurucu,cdromtipi,cdromadi
Dim anakart
Dim vga,vgaram
Dim seriportsayisi,lptportsayisi
Dim uretici,model,biosversion,isletimsistemi,serino
Call baglantiac
Dim baglanti
Dim verikaynagi
Sub baglantiac
Set baglanti = CreateObject("ADODB.Connection")
Set verikaynagi = CreateObject("ADODB.Recordset")
iCursorType = 1
iLockType = 3
baglanti.Provider = "Microsoft.Jet.OLEDB.4.0"
'VERi tabani baglanti yolu
baglanti.Properties("Data Source") = "\\192.168.9.50\test\envanter.mdb"
baglanti.Open
End Sub
Set wmiService = GetObject("winmgmts:\\.\root\CIMV2")
hostname = ""
uretici = ""
model = ""
biosversion = ""
isletimsistemi = ""
serino = ""
On Error Resume Next
'BİOS BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Dim objeler
For Each objeler In bilgiler
serino = objeler.serialNumber
biosversion = objeler.SMBIOSBIOSVersion
Next
'GENEL BİLGİLER 2
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
hostname = objeler.Caption
uretici = objeler.Manufacturer
model = objeler.Model
islemcifiziksel = objeler.NumberOfProcessors
islemcicekirdek = objeler.NumberOfLogicalProcessors
bilgisayartipi = objeler.PCSystemType
Next
Select Case bilgisayartipi
Case 1
bilgisayartipi = "Masaüstü"
Case 2
bilgisayartipi = "Laptop"
Case 3
bilgisayartipi = "İş İstasyonu"
Case 4
bilgisayartipi = "Sunucu"
Case Else
bilgisayartipi = "Bulunamadı"
End Select
wscript.exho bilgisayartipi
'İŞLETİM SİSTEMİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
isletimsistemi = objeler.Name
isletimsistemi = Split(isletimsistemi, "|")(0)
Next
'TOPLAM RAM
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
ram = round (objeler.TotalPhysicalMemory / 1047000,0)
Next
'CPU
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
islemci = objeler.Name
Next
'VGA BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_VideoController", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
vga = objeler.Name
vgaram = objeler.AdapterRAM
Next
'SERİ PORT SAYISI
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_SerialPort", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
seriportsayisi=0
For Each objeler In bilgiler
seriportsayisi = seriportsayisi + 1
Next
'PARALEL PORT SAYISI
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_ParallelPort", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
lptportsayisi=0
For Each objeler In bilgiler
lptportsayisi = lptportsayisi + 1
Next
' RAM SLOT VE MAXİMUM
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_PhysicalMemoryArray", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each objeler In bilgiler
ramslotsayisi = objeler.MemoryDevices
rammax = Clng (objeler.MaxCapacity / 1000000)
Next
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "envanter"
verikaynagi.ActiveConnection = baglanti
verikaynagi.Open
verikaynagi.AddNew
verikaynagi("hostname") = hostname
verikaynagi("bilgisayartipi") = bilgisayartipi
verikaynagi("serino")= serino
verikaynagi("uretici")=uretici
verikaynagi("model")=model
verikaynagi("biosversion")= biosversion
verikaynagi("os")= isletimsistemi
verikaynagi("islemci")= islemci
verikaynagi("islemcifiziksel")= islemcifiziksel
verikaynagi("islemcicekirdek")= islemcicekirdek
verikaynagi("ram")= ram
verikaynagi("rammax")= rammax
verikaynagi("ramslot")= ramslot
verikaynagi("seriportsayisi") = seriportsayisi
verikaynagi("lptportsayisi") = lptportsayisi
verikaynagi.Update
verikaynagi.Close
' AĞ BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Dim IPP,subnett,DNSS,gatewayy
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "network"
verikaynagi.ActiveConnection = baglanti
Dim ipler,dnsler,gatewayler,subnetler
verikaynagi.Open
For Each objeler In bilgiler
nicMAC = objeler.MACAddress
' WScript.Echo nicMAC
if nicMAC <> "" then
If nicMAC <> "50:50:54:50:30:30" Then
If objeler.Description <> "Packet Scheduler Miniport" Then
If objeler.Description <> "Paket Zamanlayıcısı Mini Bağlantı Noktası" Then
If objeler.Description <> "WAN Miniport (PPPOE)" Then
If objeler.Description <> "1394 Ağ Bağdaştırıcısı" Then
verikaynagi.AddNew
'WScript.Echo objeler.Description
For Each IPP In objeler.IPAddress
ipler = ipler & IPP & ","
Next
For Each DNSS In objeler.DNSServerSearchOrder
dnsler = dnsler & DNSS & ","
Next
For Each Subnett In objeler.IPSubnet
subnetler=subnetler & Subnett & ","
Next
For Each gatewayy In objeler.DefaultIpGateway
gatewayler = gatewayler & gatewayy & ","
Next
verikaynagi("hostname") = hostname
verikaynagi("adi") = objeler.Description
verikaynagi("mac") = objeler.MACAddress
verikaynagi("dhcp") = objeler.DHCPEnabled
verikaynagi("ip") = ipler
verikaynagi("dns") = dnsler
verikaynagi("subnet") = subnetler
verikaynagi("gateway") = gatewayler
verikaynagi.Update
ipler=""
dnsler=""
subnetler=""
gatewayler=""
End If
End If
End If
End If
End If
end if
Next
verikaynagi.Close
'FİZİKSEL DİSK SÜRÜCÜLER
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_DiskDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "fizikseldisk"
verikaynagi.ActiveConnection = baglanti
verikaynagi.Open
For Each objeler In bilgiler
verikaynagi.AddNew
verikaynagi("hostname") = hostname
verikaynagi("hddid") = objeler.DeviceID
verikaynagi("hddadi") = objeler.Model
verikaynagi("boyut") = round(objeler.Size / 1000000000, 2)
verikaynagi("tipi") = objeler.InterfaceType
verikaynagi.Update
Next
verikaynagi.close
'PARTİTİON BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_DiskPartition", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "partition"
verikaynagi.ActiveConnection = baglanti
verikaynagi.Open
For Each objeler In bilgiler
verikaynagi.AddNew
verikaynagi("hostname") = hostname
verikaynagi("diskpartition") = objeler.DeviceID
verikaynagi("boyut") = round(objeler.Size / 1000000000, 2)
verikaynagi.Update
Next
verikaynagi.close
'CDROM BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_CDROMDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "cdrom"
verikaynagi.ActiveConnection = baglanti
verikaynagi.Open
verikaynagi.AddNew
For Each objeler In bilgiler
verikaynagi("hostname") = hostname
verikaynagi("cdromsurucu") = objeler.Drive
verikaynagi("cdromadi") = objeler.MediaType
verikaynagi("cdrombaglanti") = objeler.Name
verikaynagi.Update
Next
verikaynagi.close
'RAM BİLGİLERİ
Set bilgiler = wmiService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
verikaynagi.CursorType = iCursorType
verikaynagi.LockType = iLockType
verikaynagi.Source = "ram"
verikaynagi.ActiveConnection = baglanti
verikaynagi.Open
For Each objeler In bilgiler
verikaynagi.AddNew
dim ramm
Select Case objeler.MemoryType
Case 2
ramm = "DRAM"
Case 21
ramm = "DDR2"
Case 20
ramm = "DDR"
Case 17
ramm = "SDRAM"
End Select
verikaynagi("hostname") = hostname
verikaynagi("slot") = objeler.DeviceLocator
verikaynagi("boyut") = Int(objeler.Capacity / 1047000)
verikaynagi("tip") = objeler.MemoryType
verikaynagi("tipdetay") = ramm
verikaynagi("mhz") = objeler.Speed
verikaynagi.update
Next
verikaynagi.close
Set output = fso.CreateTextFile("c:\env.txt", True)
output.WriteLine "Hostname:" & hostname
output.WriteLine "Bilgisayar Tipi:" & bilgisayartipi
output.WriteLine "Seri No:" & serino
output.WriteLine "Üretici:" & uretici
output.WriteLine "Model:" & model
output.WriteLine "Bios: " & biosversion
output.WriteLine "Isletim Sistemi:" & isletimsistemi
output.WriteLine "Islemci:" & islemci
output.WriteLine "Fiziksel Islemci:" & islemcifiziksel
output.WriteLine "Mantiksal Islemci:" & islemcicekirdek
output.WriteLine "Bellek: " & ramboyutcevir (ram)
output.WriteLine "Sabit Disk:" & hdd
output.WriteLine "Sabit Disk Boyutu:" & hddboyut
output.WriteLine "Sabit Disk Tipi:" & hddtip
output.WriteLine "Sabit Disk ID:" & hddid
output.WriteLine "Anakart " & anakart
output.WriteLine "Ekran Karti: " & vga
output.WriteLine "Ekran Karti Ram:" & ramboyutcevir(vgaram)
output.WriteLine ""
output.WriteLine "Cdrom Sürücü:" & cdromsurucu
output.WriteLine "Cdrom Türü:" & cdromtipi
output.WriteLine "Cdrom Adi:" & cdromadi
output.WriteLine ""
output.WriteLine "Seri Port Sayisi:" & seriportsayisi
output.WriteLine "Paralel Port Sayisi:" & lptportsayisi
output.WriteLine ""
output.WriteLine "Ram Slot Sayisi:" & ramslotsayisi
output.WriteLine "Maksimum Ram Destegi(GB): " & rammax
output.WriteLine "Takili oldugu slot:" & ramslot
output.WriteLine "Bellek Tipi" & ramtipi
output.WriteLine "Bellek Hizi:" & rammhz
output.WriteLine "Bellek Boyutu:" & ramboyutu
output.WriteLine ""
output.WriteLine "Ethernet:" & strNic
output.Close
Set wmiService = Nothing
Set bilgiler = Nothing
set verikaynagi = nothing
set baglanti = nothing
else
' wscript.echo "zaten envanter alınmış"
End IF