0

私が作成したのは、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(不正なファイルモード)。

みんなありがとう!

4

1 に答える 1

1

あなたの

set tsUsers = goFS.OpenTextFile("\\xxx\Gathering\DataLog.txt", 2, True)

ForWritingファイルを開きます。

Cf. 同じ先週

于 2012-06-27T19:59:14.357 に答える