我創建的是一個腳本,它從計算機中提取戴爾服務代碼,用戶名和計算機名,並將該信息編譯爲.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
任何幫助表示讚賞!謝謝!
有無論如何,你可以幫我編碼嗎?我很誠實,不太擅長VB腳本,並且在上週五剛剛開始寫它。如果沒有,非常感謝您的幫助。 –
至於你最後的問題,我不確定。我甚至沒有想到這一點。你會推薦什麼? –
另外,我在第二行中給出的代碼出錯。錯誤代碼800A0005 –