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