私が作成したのは、コンピュータから Dell サービス コード、ユーザー名、およびコンピュータ名を取得し、その情報を .csv ファイルにコンパイルするスクリプトです。このスクリプトは Active Directory ログイン スクリプトを介して実装されるため、エンド ユーザーは何もする必要はありません。
私が抱えている問題は、人がログオンするたびに情報を収集し、リストに追加することです。つまり、自分のコンピュータに何度もログオンする 2 人だけでリストがいっぱいになる可能性があります。
私が望んでいるのは、スクリプトが収集された特定のデータを .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
どんな助けでも大歓迎です!ありがとう!