我创建的是一个脚本,它从计算机中提取戴尔服务代码、用户名和计算机名,并将该信息编译成 .csv 文件。该脚本将通过 Active Directory 登录脚本实现,因此最终用户无需执行任何操作。
我遇到的问题是,每次有人登录时,它都会收集他们的信息,并将其添加到列表中。这意味着我的列表可能只有两个反复登录计算机的人。
我希望脚本在 .csv 文件中搜索收集的特定数据,如果该数据存在,则不输入。
我到目前为止的代码是这样的:
'Get Dell Service Tag Info
set ProSet = GetObject("winmgmts:").InstancesOf("Win32_BIOS")
Set ProSet1 = GetObject("winmgmts:").InstancesOf("Win32_SystemEnclosure")
For each Pro in ProSet
For each Pro1 in ProSet1
ServiceTag=Pro.SerialNumber
exit for
Next
exit for
Next
'get username and computername, could also be asked in a batch
Set oShell = WScript.CreateObject("WScript.Shell")
Set oShellEnv = oShell.Environment("Process")
sComputerName = oShellEnv("ComputerName")
sUsername = oShellEnv("username")
dim filesys, filetxt, getname, path
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("\\xx.xx.xx.xx\Gathering\DataLog.csv", 8, True, -2)
path = filesys.GetAbsolutePathName("\\xx.xx.xx.xx\Gathering\DataLog.csv")
getname = filesys.GetFileName(path)
filetxt.WriteLine sUsername & ", " & sComputerName & ", " & ServiceTag
filetxt.Close
这是基本脚本,没有条目检查器。
至于条目检查器,这是我尝试过的,但似乎不起作用:
Set objFSO = CreateObject("Scripting.Dictionary")
Set objFile = objFSO.OpenTextFile ("\\xx.xx.xx.xx\Gathering\Dictionary.txt", 8, True)
' Make comparisons case insensitive.
objList.CompareMode = vbTextCompare
' ... code to read user name and assign to variable strNameOfUser.
If (objList.Exists(strNameOfUser) = False) Then
' Add this user to the dictionary object.
objList(strNameOfUser) = True
' Log this unique user name.
objFile.WriteLine strNameOfuser
End If
任何帮助表示赞赏!谢谢!