我创建的是一个脚本,它从计算机中提取戴尔服务代码、用户名和计算机名,并将该信息编译成 .csv 文件。该脚本将通过 Active Directory 登录脚本实现,因此最终用户无需执行任何操作。
我遇到的问题是,每次有人登录时,它都会收集他们的信息,并将其添加到列表中。这意味着我的名单可能只有两个人一遍又一遍地登录他们的电脑。
我希望脚本在 .csv 文件中搜索收集的特定数据,如果存在此数据,则不要输入它。
我到目前为止的代码是这样的:
dim goFS, tsUsers, bFound
set goFS = createObject("Scripting.FileSystemObject")
set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 2, True)
bFound = False
Do Until tsUsers.AtEndOfStream
If 1 = Instr(tsUsers.ReadLine(), sUser) Then
bFound = True
WScript.Quit (0)
Exit Do
End If
Loop
tsUsers.Close
If Not bFound Then
Set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 8, True)
tsUsers.WriteLine sUser
tsUsers.Close
End If
'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\Gathering\DataLog.csv", 8, True, -2)
path = filesys.GetAbsolutePathName("\\xx\Gathering\DataLog.csv")
getname = filesys.GetFileName(path)
filetxt.WriteLine sUsername & ", " & sComputerName & ", " & ServiceTag
filetxt.Close
我遇到的问题是运行时错误:位置(第 5 行,字符 1)中的 800A0036(错误文件模式)。
多谢你们!