#114225 - 2004-03-08 05:16 PM
Re: Inventory to DB Script
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
I agree to a point. The point where I am wrestling with this is that the WMIQuery() UDF does not handle wildcards (more than one element at a time for say multiple mapped drives) to extract data needed. Am I missing the point? The DB*() UDFs may cover some simplification of this, we should be able to cover this with say a couple of lines. Anyway, I can ponder this one.
Kent
|
Top
|
|
|
|
#114226 - 2004-03-09 02:32 PM
Re: Inventory to DB Script
|
Andreasfcelie
Fresh Scripter
Registered: 2004-03-08
Posts: 6
|
I have tried both. Ik have created an database on the SQL server which I also prefer, I thin k I have troubles with the WMIQuery. I am using windows XP and have tried to use the script locally on my machine where I installed the personal version of SQL Server 2000. I also tried the Access database but also no luck. And how do I use the UDF's? Where to place them, I am not familiar wth this.
Thanx
|
Top
|
|
|
|
#114227 - 2004-03-09 02:51 PM
Re: Inventory to DB Script
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
First, you want to go to the UDF Forum here on this site and grab the code for WMIQuery and paste it in your script..
BTW, these may come in handy for you..
KiXtart FAQ & How to's
How to use UDFs
Kent
|
Top
|
|
|
|
#114228 - 2004-03-09 03:09 PM
Re: Inventory to DB Script
|
Andreasfcelie
Fresh Scripter
Registered: 2004-03-08
Posts: 6
|
Is there anyone who had a full working script including all of the UDF etc, please.
Thanx
|
Top
|
|
|
|
#114230 - 2004-03-24 10:47 PM
Re: Inventory to DB Script
|
tjcarst
Hey THIS is FUN
Registered: 2003-09-08
Posts: 243
Loc: USA
|
kdyer
I notice you are calling a script called funct.kix. What is this script doing?
Thanks.
tjcarst
|
Top
|
|
|
|
#114232 - 2004-03-25 07:11 AM
Re: Inventory to DB Script
|
Kdyer
KiX Supporter
Registered: 2001-01-03
Posts: 6241
Loc: Tigard, OR
|
Funct.kix is used to store functions like those of say a VB-Include.
WMIQuery() UDF
You should include the DB*() UDFs instead.
While this version works, the DB*() UDFs will clean up this code a bit more.
Kent
|
Top
|
|
|
|
#114233 - 2004-04-08 05:46 PM
Re: Inventory to DB Script
|
tjcarst
Hey THIS is FUN
Registered: 2003-09-08
Posts: 243
Loc: USA
|
sealeopard - I do realize what UDF's are and use them in my scripts. I do not, however, claim to know enough to write them. Searching the boards for my posts will show my lack of inexperience but also my desire to learn. Please be kind enough to teach me a little so I stop pestering so much. A few words of explanation is all it takes to send me in the right direction.
kdyer - Your patience with those of us not expert in kix is appreciated. Thanks for the follow-up explanation.
tjcarst
|
Top
|
|
|
|
#114235 - 2004-04-08 08:23 PM
Re: Inventory to DB Script
|
tjcarst
Hey THIS is FUN
Registered: 2003-09-08
Posts: 243
Loc: USA
|
Thanks for the follow up, sealeopard.
tjcarst
|
Top
|
|
|
|
#114236 - 2004-08-12 09:14 AM
Re: Inventory to DB Script
|
murk
Lurker
Registered: 2004-08-12
Posts: 1
|
Radimus which UDF of WMIQuery did you use for the software inventory to access DB? I get the error message like beneath when i use the WMIQuery that is posted.
ERROR : Error in expression: this type of array not supported in expressions.! Script: Y:\Netlogon\Tools\test.kix Line : 2
|
Top
|
|
|
|
#205985 - 2012-10-11 01:49 PM
Re: Inventory to DB Script
[Re: Sealeopard]
|
GeorgeLittle
Fresh Scripter
Registered: 2011-02-08
Posts: 47
Loc: UK
|
I have just tried the SQL version of the script and I get an error on line 68 unkown command WMIQuery
|
Top
|
|
|
|
#206028 - 2012-10-16 04:59 PM
Re: Inventory to DB Script
[Re: NTDOC]
|
Radimus
Moderator
Registered: 2000-01-06
Posts: 5187
Loc: Tampa, FL
|
This is still in use, run as a service on each domain PC
Break on
$ = SetOption('wrapateol','on')
$ = SetConsole("hide")
$ = RedirectOutput('c:\logfiles\SQLInv.log', 1)
$InvVer = '2012/05/09 - Production Server'
?
? $InvVer
? @DATE + ' '+ @TIME
$start = @ticks
$Make =Trim(Split(WMIQuery("Manufacturer","Win32_ComputerSystem"))[0])
$Model =Trim(WMIQuery("Model","Win32_ComputerSystem"))
$SerNo =WMIQuery("SerialNumber","Win32_BIOS")
If Len($SerNo) < 2
$SerNo=WMIQuery("SerialNumber","Win32_SystemEnclosure")
If InStr($serno,"|")
For Each $Return in Split($serno,"|")
If Len($Return)<10 $serno=$Return EndIf
Next
EndIf
EndIf
$SerNo =Trim(UCase($SerNo))
If $serNo < '1' Quit EndIf
$asset =WMIQuery("SMBIOSAssetTag","Win32_SystemEnclosure")
If InStr($asset,"|")
For Each $return in Split($asset,"|")
If $return $asset=$return EndIf
Next
EndIf
$asset = Join(Split($asset,"|"),'')
$asset = Trim(UCase($asset))
$objWMIService = GetObject("winmgmts:\\.\root\cimv2")
if $objWMIService and not @error
$colOperatingSystems = $objWMIService.ExecQuery("Select * From Win32_PerfFormattedData_PerfOS_System")
if $colOperatingSystems and not @error
For Each $objOS in $colOperatingSystems
$uptime = val($objOS.SystemUpTime) / 60 /60
Next
endif
endif
$CPUsp =WMIQuery("CurrentClockSpeed","Win32_Processor")
Select
Case Left($CPUsp,3) = "339" $CPUsp=3400
Case Left($CPUsp,3) = "319" $CPUsp=3200
Case Left($CPUsp,3) = "299" $CPUsp=3000
Case Left($CPUsp,3) = "279" $CPUsp=2800
Case Left($CPUsp,3) = "269" $CPUsp=2600
Case Left($CPUsp,3) = "239" $CPUsp=2400
Case Left($CPUsp,3) = "229" $CPUsp=2200
Case Left($CPUsp,3) = "220" $CPUsp=2200
Case Left($CPUsp,3) = "199" $CPUsp=2000
Case Left($CPUsp,3) = "186" $CPUsp=1860
Case Left($CPUsp,3) = "182" $CPUsp=1830
Case Left($CPUsp,3) = "179" $CPUsp=1800
Case Left($CPUsp,3) = "169" $CPUsp=1700
Case Left($CPUsp,3) = "159" $CPUsp=1600
Case Left($CPUsp,3) = "139" $CPUsp=1400
Case Left($CPUsp,3) = "106" $CPUsp=1100
Case Left($CPUsp,2) = "99" $CPUsp=1000
Case Left($CPUsp,2) = "90" $CPUsp=900
Case Left($CPUsp,2) = "85" $CPUsp=850
Case Left($CPUsp,2) = "70" $CPUsp=700
Case Left($CPUsp,2) = "66" $CPUsp=667
Case Left($CPUsp,2) = "59" $CPUsp=600
Case Left($CPUsp,2) = "49" $CPUsp=500
Case Left($CPUsp,2) = "39" $CPUsp=400
EndSelect
$dimms =Split(WMIQuery("Capacity","Win32_PhysicalMemory"),"|")
For $a=0 to UBound($dimms)
$=Execute("$$dimm$a=val($$dimms[$a]) / 1048576")
$=Execute("$$memory=val($$Memory)+val($$dimm$a)")
Next
$nic=0
Do
$ip = EnumIPInfo($nic,0)
$snm = EnumIPInfo($nic,1)
$NicDesc= EnumIPInfo($nic,2)
$mygw = EnumIPInfo($nic,3)
$nic=Val($nic)+1
Until InStr($ip,'192.168.') Or InStr($ip,'192.168.24') Or InStr($ip,'192.168.201.') Or Val($nic) > 10
$network = Left($ip,InStrRev($ip,'.'))
$Mac =WMIQuery("MACAddress","Win32_NetworkAdapterConfiguration",,"Description",$NicDesc)
$Mac =Join(Split($mac,':'),'')
$Mac =Join(Split($mac,'|'),'')
If FindProc(@wksta,'MSASCui.exe')
If KeyExists('HKLM\SOFTWARE\Microsoft\Microsoft Forefront\Client Security\1.0\AM\Signature Updates')
$AVProgram = 'Microsoft Forefront Client'
$AVEngine = ReadValue('HKLM\SOFTWARE\Microsoft\Microsoft Forefront\Client Security\1.0\AM\Signature Updates','EngineVersion')
$AVSignature = ReadValue('HKLM\SOFTWARE\Microsoft\Microsoft Forefront\Client Security\1.0\AM\Signature Updates','AVSignatureVersion')
EndIf
EndIf
$MSOdir =ReadValue("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\excel.exe","Path")
$excel =GetFileVersion("$MSOdir\excel.exe")
$MSOVer =Split($excel,'.')[0]
$MSOSPVer = ''
$assigned = ReadValue("HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters","srvcomment")
If Left($assigned,2) = '68'
$assigned = Left(Right(Join(Split(Join(Split($assigned,' '),''),'-'),''),-2),9)
EndIf
$ini = 0
$cnstring = "DRIVER={SQL Server};SERVER=SQLServer;UID=Inventory;PWD=password;DATABASE=InvDB"
$cn = CreateObject("ADODB.Connection")
$cmd= CreateObject("ADODB.Command")
$rs = CreateObject("ADODB.RecordSet")
$cn.connectionstring = $cnstring
$cn.open
$cmd.activeconnection = $cn
$rs.cursortype = 3
$rs.locktype = 3
$rs.activecommand = $cmd
$cmdtxt = "select * from dbo._tbl_Main where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
If $rs.eof = -1 $rs.addnew EndIf
$rs.fields.item("SerialNumber").value = $serNo
$rs.fields.item("ComputerName").value = @wksta
$rs.fields.item("AssignedTo").value = $assigned
$rs.fields.item("NetworkID").value = $network
$rs.fields.item("IPAddress").value = $ip
$rs.fields.item("InvDate").value = @date
$rs.fields.item("Version").value = $InvVer
$rs.fields.item("MacAddr").value = $Mac
$rs.fields.item("Uptime").value = $uptime
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
;if not @error
$nul = WriteValue('HKLM\SOFTWARE\Information Technology\SQLInventory','LastRun',@date,REG_SZ)
;endif
$rs.close
$cmdtxt = "select * from dbo._tbl_OSEnv where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
If $rs.eof = -1 $rs.addnew EndIf
$rs.fields.item("SerialNumber").value = $serNo
$rs.fields.item("OS").value = @ProductType
$rs.fields.item("OSCSD").value = @csd
$rs.fields.item("64bit").value = @OnWoW64
$rs.fields.item("AVProgram").value = $AVProgram
$rs.fields.item("AVEngine").value = $AVEngine
$rs.fields.item("AVSignature").value = $AVSignature
$rs.fields.item("MSO").value = $MSOVer
$rs.fields.item("MSOSP").value = $MSOSPVer
$rs.update ? 'Error = '+@ERROR+' - '+@SERROR
$rs.close
$cmdtxt = "select * from dbo._tbl_OrgCodes where OrgCode = '$Asset'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$code = IIf($rs.eof = -1,1,0)
$rs.close ;? 'Error = '+@ERROR+' - '+@SERROR
$cmdtxt = "select * from dbo._tbl_Computers where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
If $rs.eof = -1
$rs.addnew
$rs.fields.item("SerialNumber").value = $serNo
If $code = 1
$rs.fields.item("Tag").value= $asset
Else
$rs.fields.item("OrgCode").value= $asset
EndIf
$rs.fields.item("Make").value = $Make
$rs.fields.item("Model").value = $Model
$rs.fields.item("CPU").value = $CPUsp
$rs.fields.item("FirstInventory").value = @date
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
;if not @error
$nul = WriteValue('HKLM\SOFTWARE\Information Technology\SQLInventory','FirstRun',@date,REG_SZ)
;endif
Else
If Val($rs.fields.item("Memory").value) <> $memory
$rs.fields.item("Memory").value = Abs(CDbl(Val($memory)))
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
EndIf
If $rs.fields.item("Tag").value < '0' And $code = 1
$rs.fields.item("Tag").value= $asset
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
EndIf
If $rs.fields.item("OrgCode").value < '0' And $code = 0
$rs.fields.item("OrgCode").value= $asset
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
EndIf
If $rs.fields.item("FirstInventory").value < '0'
$rs.fields.item("FirstInventory").value = @date
$rs.update ;? 'Error = '+@ERROR+' - '+@SERROR
EndIf
EndIf
$rs.close
; *********************** Monitor Inventory ***************************************
$cmdtxt = "Delete from dbo._tbl_Monitors where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt ? $cmdtxt
$rs.Open($cmd) ? 'Mon Del-Open: Error = ' + @ERROR + ' - ' + @SERROR
$rs.close ? 'Mon Del-Close: Error = ' + @ERROR + ' - ' + @SERROR
$cmdtxt = "select * from dbo._tbl_Monitors where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$wmiColl = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * FROM Win32_DesktopMonitor Where ScreenWidth>'0'")
For Each $wmiObj in $wmiColl
$pnpid = $wmiObj.PNPDeviceID
If $pnpid > 'a'
If InStr($pnpid,'\')
$monModel = Split($pnpid,'\')[1]
Else
$monModel = 'Unknown'
EndIf
$res = CStr($wmiObj.ScreenWidth) + "x" + CStr($wmiObj.ScreenHeight)
$rs.addnew
$rs.fields.item("SerialNumber").value = $Serno
$rs.fields.item("MonitorModel").value = $MonModel
$rs.fields.item("Resolution").value = $res
$rs.fields.item("InvDate").value = @date
$rs.update ? 'Mon Add-Update: Error = ' + @ERROR + ' - ' + @SERROR
EndIf
Next
$rs.close ? 'Mon Add-Close: Error = ' + @ERROR + ' - ' + @SERROR
$wmiColl=''
; *********************** Memory Inventory ***************************************
; ******** http://msdn.microsoft.com/en-us/library/aa394347(VS.85).aspx ********
$cmdtxt = "Delete from dbo._tbl_Memory where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt ? $cmdtxt
$rs.Open($cmd) ? 'Mem Del-Open: Error = '+@ERROR+' - '+@SERROR
$rs.close ? 'Mem Del-Close: Error = '+@ERROR+' - '+@SERROR
$cmdtxt = "select * from dbo._tbl_Memory where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt ? $cmdtxt
$rs.open ($cmd) ? 'Mem Add-Open: Error = '+@ERROR+' - '+@SERROR
$wmiColl = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * FROM Win32_PhysicalMemory")
For Each $wmiObj in $wmiColl
$rs.addnew
$rs.fields.item("SerialNumber").value = $Serno
$rs.fields.item("DeviceLocator").value = $wmiObj.DeviceLocator
$rs.fields.item("Capacity").value = Abs(CDbl(Val($wmiObj.Capacity))/1024/1024)
$rs.fields.item("Speed").value = $wmiObj.Speed
$rs.fields.item("FormFactor").value = $wmiObj.FormFactor
$rs.fields.item("MemoryType").value = $wmiObj.MemoryType
$rs.fields.item("InvDate").value = @date
$rs.update ? 'Mem Add-Update: Error = ' + @ERROR + ' - ' + @SERROR
Next
$rs.close ? 'Mem Add-Close: Error = '+@ERROR+' - '+@SERROR
$wmiColl=''
; *********************** Disk Drive Inventory ***************************************
; ******** http://msdn.microsoft.com/en-us/library/aa394347(VS.85).aspx ********
$cmdtxt = "Delete from dbo._tbl_DiskDrive where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt ? $cmdtxt
$rs.Open($cmd) ? 'Disk Del-Open: Error = '+@ERROR+' - '+@SERROR
$rs.close ? 'Disk Del-Close: Error = '+@ERROR+' - '+@SERROR
$cmdtxt = "select * from dbo._tbl_DiskDrive where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt ? $cmdtxt
$rs.open ($cmd) ? 'Disk Add-Open: Error = ' + @ERROR + ' - ' + @SERROR
$wmiColl = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * FROM Win32_DiskDrive where MediaLoaded='-1'")
For Each $wmiObj in $wmiColl
$rs.addnew
$rs.fields.item("SerialNumber").value = $Serno
$rs.fields.item("DriveSize").value = Round(CDbl($wmiObj.Size)/1000/1000/1000)
$rs.fields.item("InterfaceType").value = $wmiObj.InterfaceType
$rs.fields.item("Model").value = $wmiObj.Model
$rs.fields.item("Status").value = $wmiObj.Status
$rs.fields.item("InvDate").value = @date
$rs.update ? 'Disk Add-Update: Error = ' + @ERROR + ' - ' + @SERROR
Next
$rs.close ? 'Disk Add-Close: Error = ' + @ERROR + ' - ' + @SERROR
; *********************** Software Inventory ***************************************
$cmdtxt = "Delete from dbo._tbl_Software where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt
$rs.Open($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$rs.close ;? 'Error = '+@ERROR+' - '+@SERROR
$cmdtxt = "select * from dbo._tbl_Software where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open ($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$Index = 0 $err = 0 $key = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
Do
$SubKey = EnumKey($Key, $Index)
If @ERROR = 0
If Not Left($subkey,'2') = 'KB'
$DisplayName = ReadValue($key+$subKey,'DisplayName')
$DisplayVersion = ReadValue($key+$subKey,'DisplayVersion')
$InstallDate = ReadValue($key+$subKey,'InstallDate')
$InstallLocation= ReadValue($key+$subKey,'InstallLocation')
$Publisher = ReadValue($key+$subKey,'Publisher')
If Not $DisplayName + $DisplayVersion + $InstallDate + $InstallLocation + $Publisher < 'a'
$rs.addnew
$rs.fields.item("SerialNumber").value = $Serno
$rs.fields.item("RegKeyName").value = $SubKey
$rs.fields.item("DisplayName").value = $DisplayName
$rs.fields.item("DisplayVersion").value = $DisplayVersion
$rs.fields.item("InstallDate").value = $InstallDate
$rs.fields.item("InstallLocation").value = $InstallLocation
$rs.fields.item("Publisher").value = $Publisher
$rs.fields.item("InvDate").value = @date
$rs.update
EndIf
EndIf
$Index = $Index + 1
Else
$err = 1
EndIf
Until $err
$rs.close
; *********************** MSO Sessions Inventory ***************************************
$cmdtxt = "Delete from dbo._tbl_MSOSessions where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt
$rs.Open($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$rs.close ;? 'Error = '+@ERROR+' - '+@SERROR
$cmdtxt = "select * from dbo._tbl_MSOSessions where SerialNumber = '$serNo'"
$cmd.commandtext = $cmdtxt $rs.open($cmd) ;? 'Error = '+@ERROR+' - '+@SERROR
$getobj = GetObject("winmgmts:{impersonationLevel=impersonate}!//.")
$backup = $getobj.ExecQuery("Select * From Win32_NTLogEvent Where Logfile='osession' and eventcode='7000'") ;and message like 'id: 2%'
For Each $event in $backup
$ec = $event.EventIdentifier
$time = $event.TimeGenerated
$year = SubStr($time, 1, 4) $Hour = SubStr($time, 9, 2)
$month = SubStr($time, 5, 2) $min = SubStr($time, 11, 2)
$day = SubStr($time, 7, 2) $sec = SubStr($time, 13, 2)
$message = $event.message
$user= $event.user
$Msg = Split($message, ",")
$rs.addnew
$rs.fields.item("SerialNumber").value = $Serno
$rs.fields.item("EventID").value = $ec
$rs.fields.item("UserID").value = Join(Split($user,'fdhc\'),'')
$rs.fields.item("Date").value = $year +'/'+ $month +'/'+ $day
$rs.fields.item("Time").value = $hour +':'+ $min +':'+ $sec
$rs.fields.item("ID").value = Trim(Split($msg[0], ':')[1])
$rs.fields.item("AppName").value = Trim(Split($msg[1], ':')[1])
$rs.fields.item("AppVersion").value = Trim(Split($msg[2], ':')[1])
$rs.fields.item("InvDate").value = @date
$rs.update
Next
$rs.close
; *********************** Sprint Card Inventory ***************************************
If Exist('c:\logfiles\sprintcard.txt')
$SprintData = Readfile('c:\logfiles\sprintcard.txt')
For Each $line in $SprintData
Select
Case InStr($line, 'Manufacturer') $man = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Model') $mod = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Revision') $rev = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'ESN') $esn = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Date') $date= Trim(SubStr($line, InStr($line, ':') + 1))
EndSelect
Next
If $esn
$cmdtxt = "select * from dbo._tbl_SprintCards where SerNo = '$SerNo'"
$cmd.commandtext = $cmdtxt
$rs.open($cmd) $err = @serror
If $rs.eof = -1 $rs.addnew EndIf
$rs.fields.item("SerNo").value = $serno
$rs.fields.item("ESN").value = $esn
$rs.fields.item("Manufacturer").value = $man
$rs.fields.item("Model").value = $mod
$rs.fields.item("Revision").value = $rev
$rs.fields.item("InvDate").value = $date
$rs.update $err = @serror
$rs.close
EndIf
EndIf
; *********************** Bitlocker Inventory ***************************************
Shell 'cmd /c echo '+@DATE + '> c:\logfiles\bitlocker.txt'
Shell 'cmd /c manage-bde.exe -status >> c:\logfiles\bitlocker.txt'
Shell 'cmd /c manage-bde.exe -protectors -get c: >> c:\logfiles\bitlocker.txt'
If Exist('c:\logfiles\bitlocker.txt')
$BitData = Readfile('c:\logfiles\bitlocker.txt')
For $count = 0 to UBound($bitdata) - 1
$line = $bitdata[$count]
Select
Case InStr($line, '[OS Volume]') $Vol = Trim(SubStr($bitdata[$count - 1], InStr($bitdata[$count - 1], ':') - 1, 2))
Case InStr($line, 'Bitlocker Version') $Ver = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Conversion Status') $Con = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Encryption Method') $Enc = Trim(SubStr($line, InStr($line, ':') + 1))
Case InStr($line, 'Key Protectors:')
Do
$count = $count +1
If Trim($bitdata[$count]) <> 'Data Recovery Agent (Certificate Based)' And Not InStr($tpm,Trim($bitdata[$count]))
$TPM = $TPM + "," + Trim($bitdata[$count])
EndIf
Until Trim($bitdata[$count + 1]) = ''
$TPM = SubStr($TPM,2)
Case InStr($line, 'External Key file name') $Key = Trim($bitdata[$count + 1])
EndSelect
Next
$data = $vol +', '+$ver + ', ' +$con + ', ' +$enc + ', ' +$tpm + ', ' +$key + ', ' +@DATE
Shell 'cmd /c echo "' + $data + '" >> c:\logfiles\bitlocker.txt'
If $vol
$cmdtxt = "select * from dbo._tbl_bitlocker where SerialNumber = '$SerNo'"
$cmd.commandtext = $cmdtxt
$rs.open($cmd) $err = @serror
Shell 'cmd /c echo open: ' + $err + '>> c:\logfiles\bitlocker.txt'
If $rs.eof = -1 $rs.addnew EndIf
$rs.fields.item("SerialNumber").value = $serno
$rs.fields.item("Volume").value = $vol
$rs.fields.item("Version").value = $ver
$rs.fields.item("Conversion").value = $Con
$rs.fields.item("Encryption").value = $enc
$rs.fields.item("Protection").value = $TPM
$rs.fields.item("Keys").value = $key
$rs.fields.item("InvDate").value = @date
$rs.update $err = @serror
Shell 'cmd /c echo update: ' + $err + '>> c:\logfiles\bitlocker.txt'
$rs.close
EndIf
EndIf
;**************************************************************************************************
Function ReadFile($file)
Dim $lf, $f, $_, $t
$lf = Chr(10)
$f = FreeFileHandle
$_ = Open($f, $file, 2)
If @error Exit 1 EndIf
Do $t = $t + $lf + ReadLine($f) Until @error
$_ = Close($f)
$ReadFile = Split(SubStr($t, 2), $lf)
EndFunction
Function WMIQuery($what,$from,optional $computer,optional $where, optional $x)
Dim $strQuery, $objEnumerator, $value
If Not $computer $computer="@WKSTA" EndIf
$strQuery = "Select $what From $from"
If $where And $x $strQuery = $strQuery + " Where $where = '$x'" EndIf
$SystemSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//$computer")
$objEnumerator = $SystemSet.ExecQuery($strQuery)
For Each $objInstance in $objEnumerator
If @Error = 0 And $objInstance <> ""
$=Execute("$$value = $$objInstance.$what")
$WMIQuery="$value"+"|"+"$WMIQuery"
EndIf
Next
$WMIQuery=Left($WMIQuery,Len($WMIQuery)-1)
Exit @error
EndFunction
Function GroupMembers($target, optional $full)
Dim $group, $member, $name, $temp
$group = GetObject('WinNT://' + $target)
If @error Exit 1 EndIf
For Each $member in $group.members
Select
Case $member.class = "user"
$temp = $temp +Chr(13)+ $member.name
Case $member.class = "group"
If $full
For Each $name in $member.members
$temp = $temp +Chr(13)+ $name.name
Next
Else
$temp = $temp +Chr(13)+ $member.name
EndIf
EndSelect
Next
$GroupMembers = Split(SubStr($temp,2),Chr(13))
EndFunction
Function FilterArray($arr_Source, $arr_Filter)
For $item = 0 to UBound($arr_Source)
If Not AScan($arr_Filter,$arr_Source[$item]) = -1 Or Left($arr_Source[$item],5) = 'S-1-5'
$arr_Source[$item] = ''
Else
$arr_Source[$item] = $arr_Source[$item]+ '||'
EndIf
Next
$filterArray = Split(Join($arr_source,''),'||')
EndFunction
;Function looks for a specific running process and returns the PID of it
Function FindPROC($COMPUTER,$PROC,optional $terminate)
Dim $GetObject, $Select
$GetObject="winmgmts:{impersonationLevel=impersonate}!//$COMPUTER"
$select="select * from Win32_Process where Name='$PROC'"
For Each $Process in GetObject("$GetObject").ExecQuery("$select")
If $terminate $Process.Terminate EndIf
$FindPROC=$Process.ProcessId
Next
EndFunction
|
Top
|
|
|
|
Moderator: Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 429 anonymous users online.
|
|
|