ilpostino Skrevet 11. september 2007 Del Skrevet 11. september 2007 Jeg har tenkt til å lage et VBS-script som sjekker hardware i andre maskiner i nettverket og dumper resultatet i feks en tekstfil. det er primært maskinnavn, ram og CPU jeg er på jakt etter. Scriptet skal lese ip-adresser fra en tekstfil eller finne ut selv hvordan den skanner alle maskinene i et subnet. noen som vet om dette er praktisk mulig? Lenke til kommentar
InsertNumLock Skrevet 11. september 2007 Del Skrevet 11. september 2007 Skal være mulig å gjøre dette i Sisoft Sandra. Men du må ta en og en pc.. Lenke til kommentar
ilpostino Skrevet 11. september 2007 Forfatter Del Skrevet 11. september 2007 (endret) Skal være mulig å gjøre dette i Sisoft Sandra.Men du må ta en og en pc.. med citrka 150 maskinen kan dette ta litt tid.... jeg har funnet et script som lar det gjøre men jeg må endre litt på det slik at det fungerer slik jeg vil. a) det må (helst automatisk) scanne alle maskiner i subnetet b) få det til å gjøre som lokal admin på maskinene. Klikk for å se/fjerne innholdet nedenfor '************************************************* **** ' Script Witten by Larry Heintz ' Jan 2005 www.larryheintz.com ' This script will connect to the computer name you ' enter and query and return the following information ' ' CPU: ' - CPU Speed MHZ ' - CPU Manufacture ' - CPU Type ' - CPU Current Load ' ' Memory ' - Memory Bank ' - Memory Stick Size MB ' - Memory Speed MHZ ' - Memory Type ' ' Hard Drive ' - HD Model ' - HD Size GB ' - HD # of Partions ' - HD Type ' - Drive Letter ' - Used Space ' - Free Space ' - Size of Partion ' - Free Space % ' ' Script Usage: ' cscript hardware.vbs /computer:[Computer Name] '************************************************* **** On Error Resume Next ' Dims stuff Dim objStdOut,args Dim servername ' Set Stuff Set objStdOut = Wscript.stdOut Set args = Wscript.Arguments.Named servername = trim(args.Item("computer")) if wscript.arguments.count = 1 then wscript.echo "CPU,Memory,Hard Drive Information for " & ucase(servername) wscript.echo "" if not (errorChecking (servername)) then '// CPU Info wscript.echo "CPU Information:" wscript.echo "================" For each objCPU in GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_Processor") Select Case objCPU.Family Case 2 cputype = "Unknown" Case 11 cputype = "Pentium brand" Case 12 cputype = "Pentium Pro" Case 13 cputype = "Pentium II" Case 14 cputype = "Pentium processor with MMX technology" Case 15 cputype = "Celeron " Case 16 cputype = "Pentium II Xeon" Case 17 cputype = "Pentium III" Case 28 cputype = "AMD Athlon Processor Family" Case 29 cputype = "AMD Duron Processor" Case 30 cputype = "AMD2900 Family" Case 31 cputype = "K6-2+" Case 130 cputype = "Itanium Processor" Case 176 cputype = "Pentium III Xeon" Case 177 cputype = "Pentium III Processor with Intel SpeedStep Technology" Case 178 cputype = "Pentium 4" Case 179 cputype = "Intel Xeon" Case 181 cputype = "Intel Xeon processor MP" Case 182 cputype = "AMD AthlonXP Family" Case 183 cputype = "AMD AthlonMP Family" Case 184 cputype = "Intel Itanium 2" Case 185 cputype = "AMD Opteron? Family" End Select wscript.echo " CPU MHZ: " & objCPU.CurrentClockSpeed wscript.echo " CPU Manufacture: " & objCPU.Manufacturer wscript.echo " CPU Type: " & cputype wscript.echo " CPU Current Load: " & objCPU.LoadPercentage & "%" next wscript.echo "" set objCPU = nothing '// Memory Info wscript.echo "Memory Information:" wscript.echo "===================" For Each objMem In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_PhysicalMemory") Select Case objMem.MemoryType Case 0 rtype = "Unknown" Case 1 rtype = "Other" Case 2 rtype = "DRAM" Case 3 rtype = "Synchronous DRAM" Case 4 rtype = "Cache DRAM" Case 5 rtype = "EDO" Case 6 rtype = "EDRAM" Case 7 rtype = "VRAM" Case 8 rtype = "SRAM" Case 9 rtype = "RAM" Case 10 rtype = "ROM" Case 11 rtype = "Flash" Case 12 rtype = "EEPROM" Case 13 rtype = "FEPROM" Case 14 rtype = "EPROM" Case 15 rtype = "CDRAM" Case 16 rtype = "3DRAM" Case 17 rtype = "SDRAM" Case 18 rtype = "SGRAM" Case 19 rtype = "RDRAM" Case 20 rtype = "DDR" End Select wscript.echo " Memory Bank: " & objMem.BankLabel wscript.echo " Memory Size: " & objMem.Capacity/1024/1024 & " MB" wscript.echo " Memory Speed: " & objMem.Speed & " MHZ" wscript.echo " Memory Type: " & rtype wscript.echo "" next wscript.echo "" set objMem = nothing '// Hard Drive Info wscript.echo "Hard Drive Information:" wscript.echo "=======================" For Each objHDInfo In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_DiskDrive") wscript.echo " Hard Drive Model: " & objHDInfo.Model wscript.echo " Hard Drive Size: " & clng(objHDInfo.Size/1024/1024/1024) & " GB" wscript.echo " # of Partitions: " & objHDInfo.Partitions wscript.echo " Hard Drive Type: " & objHDInfo.InterfaceType wscript.echo "" Next wscript.echo "" set objHDinfo = nothing For Each objDisk In GetObject("winmgmts:{impersonationLevel=impersonate}\\" & servername & "\root\cimv2").InstancesOf("Win32_LogicalDisk Where DriveType = '3'") freespace = left(objDisk.freespace/1024/1024/1024,4) totalspace = left(objDisk.size/1024/1024/1024,4) usedspace = left(totalspace/freespace,4) freeperct = left(100/usedspace,2) wscript.echo " Drive: " & objDisk.deviceid wscript.echo " Used Space: " & usedspace & " GB" wscript.echo " Free Space: " & freespace & " GB" wscript.echo " Total Space: " & totalspace & " GB" wscript.echo " Free: " & freeperct & "%" wscript.echo "" next set objDisk = nothing end if wscript.echo "------------------------------------------------" else objStdOut.Write "Usage: cscript hardware.vbs /computer:[Computer Name]" objStdOut.close wscript.quit end if ' Error Checking Function Function errorChecking(ComputerName) errorChecking = False if err.number <> 0 then if err.number = "462" then wscript.echo ComputerName & ",Error,Unable to connect" err.Clear () errorChecking = True elseif err.number = "70" then 'General access denied error wscript.echo ComputerName & ",Error,Permission Denied while trying to connect." err.Clear () errorChecking = True elseif err.number = "451" then 'HEX Error is: 1C3 err.Clear () errorChecking = True elseif err.number = "-2147023174" then 'The RPC server is unavailable. wscript.echo ComputerName & ",Error,Unable to connect error number -2147023174." err.Clear () errorChecking = True elseif err.number = "-2147023836" then wscript.echo ComputerName & ",Error,Unable to connect error number --2147023836." err.Clear () errorChecking = True elseif err.number = "-2147022986" then wscript.echo ComputerName & ",Error,Unable to connect error number -2147022986." err.Clear () errorChecking = True else wscript.echo "Error is: " & err.number wscript.echo "HEX Error is: " & hex(err.number) wscript.echo "Desc. is: " & err.Description wscript.echo "Source is: " & err.Source err.Clear () end if end if end Function Endret 11. september 2007 av ilpostino Lenke til kommentar
j000rn Skrevet 11. september 2007 Del Skrevet 11. september 2007 SystemInfo.exe som følger med XP og W2k3 og nyere gjør jobben ganske enkelt. Ellers har du WMI hvis du er litt sado... Lenke til kommentar
ilpostino Skrevet 11. september 2007 Forfatter Del Skrevet 11. september 2007 Ellers har du WMI hvis du er litt sado... er det nå jeg skal prøve å lage de piske-lydene som Chandler (?) prøvde å lage i Friends? Lenke til kommentar
ilpostino Skrevet 11. september 2007 Forfatter Del Skrevet 11. september 2007 (endret) SystemInfo.exe som følger med XP og W2k3 og nyere gjør jobben ganske enkelt. dett evirket som det jeg var ute etter så slipper jeg å knote med scripting. det eneste jeg sliter med er når jeg får feilmelding om brukernavn/passord skal sjekke andre systemer. edit: får også feilmelding om at RCF-serveren ikke er tilgjengelig men jeg sjekket under services og der stod det at den startet automatisk. Endret 11. september 2007 av ilpostino Lenke til kommentar
j000rn Skrevet 11. september 2007 Del Skrevet 11. september 2007 Domenebruker eller lokale? Sjekka firewall? Prøvd uten firewall? Lenke til kommentar
ilpostino Skrevet 11. september 2007 Forfatter Del Skrevet 11. september 2007 Domenebruker eller lokale?Sjekka firewall? Prøvd uten firewall? jeg prøvde først brukernavnet til lokal admin på den eksterne maskinen. jeg fikk da følgende feilmelding: Feil: Påloggingsfeil: ukjent brukernavn eller feil passord. C:\Documents and Settings\ehh\Skrivebord>pause Trykk en tast for å fortsette... da jeg prøvde med brukernavn/passord til domeneadmin fikk jeg feilmelding som følger: Feil: RPC-serveren er ikke tilgjengelig. jeg har ikke prøvd å disable firewall på den eksterne maskinen. får teste det imorgen når han som sitter på den maskinen er her. Lenke til kommentar
j000rn Skrevet 11. september 2007 Del Skrevet 11. september 2007 Tror nok det er ganske vanlig for dårlige klient firewall'er å blocke RPC port ja... Lenke til kommentar
ilpostino Skrevet 11. september 2007 Forfatter Del Skrevet 11. september 2007 eneste firewallen som er på klientmaskinene er den innebygde i Windows. Jeg kan dobbeltsjekke at denne ikke er blokert i group policy men jeg tviler på det. Lenke til kommentar
ilpostino Skrevet 12. september 2007 Forfatter Del Skrevet 12. september 2007 det var den innebygde brannmuren som var problemet. nå har jeg gjort det slik at den kan scanne alle maskiner i et gitt subnett og dumper resultatet inn i en tekstfil. det er en tekstfil hva hver maskin. problemet blir nå å filtrere ut den infoen jeg skal ha fra datastreamen til systeminfo og legge alt inn i en og samme CSV-fil eller lignende. Lenke til kommentar
j000rn Skrevet 12. september 2007 Del Skrevet 12. september 2007 Du vet at SystemInfo.exe støtter å spytte ut CSV? Lenke til kommentar
ilpostino Skrevet 12. september 2007 Forfatter Del Skrevet 12. september 2007 har lest det men jeg vil gjerne ha all info samlet i et dokument. den løsningen jeg har laget per nå lager en fil per maskin. Lenke til kommentar
j000rn Skrevet 12. september 2007 Del Skrevet 12. september 2007 Første maskinen: systeminfo ..maskin... /FO CSV > MinCSV.csv Resten av maskinene: systeminfo ..maskin... /FO /NH CSV >> MinCSV.csv Så har du automatisk alle sammen i en CSV fil Lenke til kommentar
ilpostino Skrevet 12. september 2007 Forfatter Del Skrevet 12. september 2007 (endret) da lærte jeg noe nytt idag også. jeg har hittil brukt > men viste ikke at en kunne bruke >> for å legge til noe i samme fil. edit: dette blir kanskje et teit spm men er det mulig å sjekke datastrømmen fra systsminfo før det blir dumpet ut i tekstfilen i den hensikt å sile ut deler av informasjonen programmet gir? Endret 12. september 2007 av ilpostino Lenke til kommentar
j000rn Skrevet 12. september 2007 Del Skrevet 12. september 2007 da lærte jeg noe nytt idag også. jeg har hittil brukt > men viste ikke at en kunne bruke >> for å legge til noe i samme fil. edit: dette blir kanskje et teit spm men er det mulig å sjekke datastrømmen fra systsminfo før det blir dumpet ut i tekstfilen i den hensikt å sile ut deler av informasjonen programmet gir? 9479437[/snapback] PowerShell! Men siden SystemInfo.exe (sikkert) ikke støtter PowerShell featurene så blir det nok mer jobb enn nytte... Skal du ikke uansett hente ut kun de dataene du trenger med OLEDB ellerno? Eller enda bedre; bare sleng csv filen inn i SQL Server og hent ut det du trenger derfra. Lenke til kommentar
ilpostino Skrevet 13. september 2007 Forfatter Del Skrevet 13. september 2007 da tror jeg at jeg skal la det være slik det har blitt. takk for all hjelp. denne delen av forumet hadde ikke vært det samme uten deg og din ekspertise. her er scriptet jeg endte op med: @echo off ::Dette scriptet er laget av Einar Herstad-Hansen 13.09.07 ::Dette scriptet bruker RCP. Port 469 må derfor være åpen både på udp og tcp ::ip_subnet settes til det subnettet som skal sjekkes. _IKKE_ ta med tallene etter siste punktum ::begynnelse_av_range skal settes til første tall av subnettet som skal sjekkes ::slutt_av_range settes til siste tall i subnettet som skal sjekkes. SET ip_subnet=000.000.000 SET start_på_range=000 SET slutt_av_range=000 ::Dette er løkken som kjører gjennom alle ip_subnet-adressene :start systeminfo /S %ip_subnet%.%start_på_range% /U <brukernavn_på_adminkonto> /P <passord_på_adminkonto> /FO table >> systeminfo.txt IF %start_på_range%==%slutt_av_range% goto slutt SET /A start_på_range=%start_på_range%+1 goto start :slutt ::pause Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå