vbscript, проверьте компьютеры в сети для конкретного приложения - PullRequest
0 голосов
/ 02 августа 2011

Я пытаюсь проверить, установлен ли iTunes на компьютерах в моей сети.Я использую vbscript, чтобы сделать это, но я не получаю никаких результатов.Я знаю, что скрипт сканирует ПК, потому что для его завершения требуется пара минут.Я также знаю, что на нескольких компьютерах установлен iTunes.Вот что я кодировал.

Dim inputFile
Dim objFSO
Dim fil
Dim line
Dim logFile


Set shl = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Set inputFile = objFSO.OpenTextFile("pcList.txt", ForReading)


WScript.Echo "Computers will be checked for iTunes.exe.  Check log file for resuluts."

' If log file exists, append to it and do not over write.
if(objFSO.FileExists("LogFiles\iTunesCheck.txt")) Then
    Const ForAppending = 8
    set logFile = objFSO.OpenTextFile("LogFiles\iTunesCheck.txt", ForAppending)
Else
    ' If log file does not exist, create one.
    Const ForWriting = 8
    set logFile = objFSO.CreateTextFile("LogFiles\iTunesCheck.txt", True)
End If

logFile.WriteLine "Scan date and time: " & Now
logFile.WriteLine "Scan has detected iTunes in the PCs listed below."

While Not inputFile.AtEndOfStream
    line = inputFile.ReadLine
    Set objWMIService = GetObject("winmgmts:\\" &  line & "\root\cimv2")
    On Error Resume Next
    Set colItems = objWMIService.ExecQuery("Select * from  Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    For Each objItem in colItems
        If objFSO.FileExists(line & "\C$\Program Files\iTunes\iTunes.exe") Then
            logFile.WriteLine line
        End If
    Next
Wend

logFile.WriteLine
logFile.WriteLine
logFile.Close
Wscript.Echo "All done."

Ответы [ 2 ]

1 голос
/ 03 августа 2011

@ Несмотря на возражения Хелен (поскольку у вас может быть все 32-битное окружение только с дисками C и вы являетесь администратором домена) ...

Это выглядит из этой строки

Set objWMIService = GetObject("winmgmts:\\" &  line & "\root\cimv2")  

что ваш текстовый файл содержит только имена ПК, по одному на строку. Я вижу, вы добавляете "\\" самостоятельно. В этом случае я бы посоветовал вам включить "\\" в строку UNC, как показано здесь:

If objFSO.FileExists("\\" & line & "\C$\Program Files\iTunes\iTunes.exe") Then

Я также не уверен, почему вы перечисляете сетевые карты. Это должно изящно работать ноль раз, если целевой компьютер выключен?

1 голос
/ 02 августа 2011

Поиск C:\Program Files\iTunes\iTunes.exe - плохая идея: системный диск

  • может отличаться от C:,
  • в 64-разрядных версиях Windows, iTunes, вероятно, установлен наProgram Files (x86) вместо Program Files,
  • сценарию, вероятно, требуются определенные разрешения для доступа к общим ресурсам администратора (C$),
  • и т. Д.,

Вместо этого запустите запрос Select * From Win32_Product Where Name='iTunes' для каждого компьютера и посмотрите, пуст ли набор результатов или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...