我整理了许多脚本来生成PC信息和日志记录工具,以供我对计算机进行映像和部署时使用。作为一点额外的准备,我当时想在屏幕上显示一个弹出框,以防需要任何手写信息,但是我遇到了两个问题:
到目前为止,这是我所拥有的,请记住,我还没有时间从头开始学习VBS,但是我知道如何打破别人的代码来做我想做的事。
Dim csvFilePath, csvColumns, objFSO
Const TristateTrue = -1
Const ForWriting = 2, ForAppending = 8
'------------------------------------------------------------------------
' If computer is on Domain, output to File Server
' If computer is not on domain, output to MDT Server
'------------------------------------------------------------------------
Set objWMISvc = GetObject( "winmgmts:\\.\root\cimv2" )
Set colItems = objWMISvc.ExecQuery( "Select * from Win32_ComputerSystem", , 48 )
For Each objItem in colItems
strComputerDomain = objItem.Domain
If objItem.PartOfDomain Then
csvFilePath = "\\Path\To\Domain\Server\Share\MDT_Completion_Log\MDTCompletion.txt"
Else
csvFilePath = "\\Path\To\Deploy\Server\MDTCompletion.txt"
End If
Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(csvFilePath) Then
Set objCSVFile = objFSO.OpenTextFile(csvFilePath, ForAppending, True, TristateTrue)
'objCSVFile.WriteLine
Else
Wscript.Echo "File does not exist."
Set objCSVFile = objFSO.CreateTextFile(csvFilePath, ForAppending, True)
csvColumns = "Computer Name,Make,Model,BIOS Version,TPM Version,TPM Firmware Version,TPM Enabled,TPM Active,TPM Owned,Time,Date"
objCSVFile.Write csvColumns
objCSVFile.Writeline
End If
'------------------------------------------------------------------------
' Computer Name and Serial #
'------------------------------------------------------------------------
'On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
'Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_BIOS",,48)
'For Each objItem in colItems
'WScript.Echo "Serial Number: " & objItem.SerialNumber
'Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem",,48)
For Each objItem in colItems
compName = objItem.Name
compMake = objItem.Manufacturer
compModel = objItem.Model
WScript.Echo "Computer Name: " & compName
WScript.Echo "Make: " & compMake
WScript.Echo "Model: " & compModel
Next
'------------------------------------------------------------------------
' BIOS Information
'------------------------------------------------------------------------
Set colBIOS = objWMIService.ExecQuery _
("Select * from Win32_BIOS")
For each objBIOS in colBIOS
compSerial = objBIOS.SerialNumber
compBiosName = objBIOS.Name
compBiosRel = objBIOS.ReleaseDate
compBiosVer = objBIOS.Version
Wscript.Echo "BIOS Name: " & compBiosName
Wscript.Echo "Release Date: " & compBiosRel
Wscript.Echo "Version: " & compBiosVer
WScript.Echo "Serial Number: " & compSerial
Next
'------------------------------------------------------------------------
' TPM Get Section
'------------------------------------------------------------------------
Set objshell = CreateObject("wscript.shell")
strComputer = objshell.ExpandEnvironmentStrings("%Computername%")
Dim sConnection ,oTpmWmi, objTpm
sConnection = "winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!root\cimv2\Security\MicrosoftTpm"
Set oTpmWmi = GetObject(sConnection)
Set objTpm = oTpmWmi.Get("Win32_Tpm=@")
tpmManVer = objTpm.ManufacturerVersion
tpmSpecVer = objTpm.SpecVersion
tpmActive = objTpm.IsActivated_InitialValue
tpmEnabled = objTpm.IsEnabled_InitialValue
tpmOwned = objTpm.IsOwned_InitialValue
Wscript.Echo "ManufacturerId : " & objTpm.ManufacturerId
Wscript.Echo "ManufacturerVersion : " & tpmManVer
Wscript.Echo "ManufacturerVersionInfo : " & objTpm.ManufacturerVersionInfo
Wscript.Echo "PhysicalPresenceVersionInfo: " & objTpm.PhysicalPresenceVersionInfo
Wscript.Echo "SpecVersion : " & tpmSpecVer
Wscript.Echo "IsActivated_InitialValue : " & tpmActive
Wscript.Echo "IsEnabled_InitialValue : " & tpmEnabled
Wscript.Echo "IsOwned_InitialValue : " & tpmOwned
If InStr(1, tpmSpecVer, "2.0", vbTextCompare) Then
tpmSpecVer = "2.0"
Else
tpmSpecVer = "Not 2.0"
End If
If tpmActive = "True" Then
tpmActive = "Active"
Else
tpmActive = "Not Active"
End If
If tpmEnabled = "True" Then
tpmEnabled = "Enabled"
Else
tpmEnabled = "Disabled"
End If
If tpmOwned = "True" Then
tpmOwned = "Owned"
Else
tpmOwned = "Not Owned"
End If
'-------------------------------------------------------------------------
' Date and Time
'-------------------------------------------------------------------------
Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime")
For Each objItem in colItems
mdtYear = objItem.Year
mdtMonth = objItem.Month
mdtDay = objItem.Day
If mdtDay < 10 Then
mdtDay = "0" & mdtDay
End If
mdtDate = mdtYear & "/" & mdtMonth & "/" & mdtDay
mdtHour = objItem.Hour
mdtMinute = objItem.Minute
If mdtMinute < 10 Then
mdtMinute = "0" & mdtMinute
End If
mdtTime = mdtHour & ":" & mdtMinute
WScript.Echo "Date: " & mdtDate
Wscript.Echo "Hour: " & mdtTime
Next
'-------------------------------------------------------------------------
' Write to CSV
'-------------------------------------------------------------------------
objCSVFile.Write compName & "," & compMake & "," & compModel & "," & compBiosVer & "," & tpmSpecVer & "," & tpmManVer & "," & tpmEnabled & "," & tpmActive & "," & tpmOwned & "," & mdtDate & "," & mdtTime
objCSVFile.WriteLine
Msgbox "Computer Name: " & compName &VBnewline& "Make: " & compMake &VBnewline& "Model: " & compModel &VBnewline& "TPM Version: " & tpmSpecVer &VBnewline& "TPM Activate Status: " & tpmActive &VBnewline& "TPM Enabled Status: " & tpmEnabled &VBnewline& "TPM Ownership Status: " & tpmOwned &VBnewline& "Date: " & mdtDate &VBnewline& "Hour: " & mdtTime, 64,"Computer Information"
objCSVFile.Close