Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Определение версий Microsoft Office и IE (http://forum.oszone.net/showthread.php?t=267463)

Crush45 04-09-2013 13:33 2212571

Определение версий Microsoft Office и IE
 
Доброго времени суток. Возникла такая необходимость на предприятии - проверить какая же версия office и ie установлена на компьютерах в домене. Вопросы типа "А нафига собственно... ?" - ответ: "Так надо".
Я представляю себе это примерно так:
1. Создаем GPO cо скриптом на вход (logon-скрипт), распространяем политику на весь домен;
2. Пользователю при входе в домен применяется новая политика и отрабатывает скрипт;
3. Во время работы скрипта создается файл в каком-либо месте (много или один),
с примерно таким содержанием
%computername%
%username%
%officeversion%
%ieversion%

4. Я достаю эт(от/и) файл(ы) и отдаю лицу, запросившему информацию.
5. Все счастливы, все довольны.

По реализации, у меня пока только лишь идея поиска инфы по реестру, допустим смотрим в реестр на соответствие каким-либо ключам и в соответствии им делаем вывод в файл.

Пишите свои идеи, будем реализовывать и смотреть как это все работает.

Iska 04-09-2013 15:53 2212659

WSH:
Код:

Option Explicit

Dim objWord

With WScript.CreateObject("WScript.Network")
        WScript.Echo "Computer name: " & .ComputerName
        WScript.Echo "User name: "    & .UserDomain & "\" & .UserName
End With

On Error Resume Next
Set objWord = WScript.CreateObject("Word.Application")

If Err.Number = 0 Then
        On Error Goto 0
        WScript.Echo "Microsoft Office version: " & objWord.Build
        objWord.Quit
       
        Set objWord = Nothing
Else
        Err.Clear
        On Error Goto 0
        WScript.Echo "Microsoft Office version: Not found"
End If

With WScript.CreateObject("InternetExplorer.Application")
        WScript.Echo "Internet Explorer version: " & WScript.CreateObject("Scripting.FileSystemObject").GetFileVersion(.FullName)
        .Quit
End With

WScript.Quit 0

Это не единственный способ.

Crush45 05-09-2013 09:32 2213005

Спасибо, но я ничего тут не понимаю) Мне bat-синтаксис роднее.

Iska 05-09-2013 11:11 2213045

Crush45, укажите путь, куда делать вывод в файл — я приведу детали «как».

Crush45 05-09-2013 12:07 2213083

Ну пусть будет D:\Microversion\*.log - путь я заменю. Ваяю пока на батнике свою версию с распарсиванием реестра. Геморно конечно, но по другому пока не умею.
Вопрос таков, а можно ли это все сгрузить в какую-либо SQL-базу?

Допустим пусть база будет с одной таблицей - в ней столбцы: номер записи, имя компа, пользователь, версия ie, office + по возможности Windows?

sunnykey 05-09-2013 14:12 2213154

Код:

#Powershell script.
#Don't forget unlock script executing by
#using command "Set-ExecutionPolicy RemoteSigned" or "Set-ExecutionPolicy Unrestricted"
#Save this file with ".ps1" extension
$log="d:\ie_office.log"
$str=$env:COMPUTERNAME+"`t"
Get-WmiObject -Query "SELECT * FROM Win32_Product WHERE Name LIKE 'Microsoft Office%'" | `
    Select-Object -First 1 | % {$str+=$_.Name+"`t"}
$str+="IE Ver"+[System.Diagnostics.FileVersionInfo]::GetVersionInfo(
    "C:\Program Files\Internet Explorer\iexplore.exe").ProductVersion.ToString()
$str | Out-File -FilePath $log -Append
"`n"+"----------------------------------------------------------------------" | Out-File -FilePath $log -Append

Предлагаю свой вариант.
Цитата:

Цитата Crush45
Вопрос таков, а можно ли это все сгрузить в какую-либо SQL-базу? »

Можно, но нужно читать мануалы

Iska 05-09-2013 15:00 2213183

Цитата:

Цитата Crush45
Вопрос таков, а можно ли это все сгрузить в какую-либо SQL-базу? »

Это самое правильное решение.

Вот примерная болванка:
читать дальше »
Код:

Option Explicit

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = 1

Dim objDictionary

Dim objWord
Dim objSWbemObjectEx


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With WScript.CreateObject("WScript.Network")
        objDictionary.Add "Computer name", .ComputerName
        objDictionary.Add "User name", .UserDomain & "\" & .UserName
End With

On Error Resume Next
Set objWord = WScript.CreateObject("Word.Application")

If Err.Number = 0 Then
        On Error Goto 0
        objDictionary.Add "Microsoft Office version", objWord.Build
        objWord.Quit
       
        Set objWord = Nothing
Else
        Err.Clear
        On Error Goto 0
        objDictionary.Add "Microsoft Office version", vbNull
End If

With WScript.CreateObject("InternetExplorer.Application")
        objDictionary.Add "Internet Explorer version", WScript.CreateObject("Scripting.FileSystemObject").GetFileVersion(.FullName)
        .Quit
End With

For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT Version FROM Win32_OperatingSystem WHERE Primary='True'")
        objDictionary.Add "OS version", objSWbemObjectEx.Version
Next

WScript.CreateObject("ADODB.Recordset").Open _
        "INSERT INTO [Sample table] (" & _
                "[DateTime], [Computer name], [User name], [OS version], [Microsoft Office version], [Internet Explorer version]" & _
        ") VALUES (" & _
                "GETDATE(), " & _
                "'" & objDictionary.Item("Computer name") & "', " & _
                "'" & objDictionary.Item("User name") & "', " & _
                "'" & objDictionary.Item("OS version") & "', " & _
                "'" & objDictionary.Item("Microsoft Office version") & "', " & _
                "'" & objDictionary.Item("Internet Explorer version") & "'" & _
        ")", "Provider=sqloledb;Data Source=SQL;Initial Catalog=SampleDatabase;Integrated Security=SSPI;", adOpenStatic, adLockOptimistic, adCmdText

objDictionary.RemoveAll
Set objDictionary = Nothing

WScript.Quit 0


где, «SQL» — имя SQL сервера, «SampleDatabase» — имя базы данных, «Sample table» — имя таблицы в указанной базе данных, «[DateTime], [Computer name], [User name], [OS version], [Microsoft Office version], [Internet Explorer version]» — поля указанной таблицы базы данных (я добавил кроме перечисленных Вами ещё и поле «DateTime» — дату и время внесения изменений).

Crush45 06-09-2013 06:08 2213531

Цитата:

Цитата Iska
"INSERT INTO [Sample table] (" & _ »

Я так понимаю в данном случае нужно указать в какую таблицу базы писать?

Iska 06-09-2013 06:57 2213536

Цитата:

Цитата Crush45
Я так понимаю в данном случае нужно указать в какую таблицу базы писать? »

Да. Я так и думал, что что-то пропустил в описании. Добавил в предыдущий пост.

Vadikan 06-09-2013 09:43 2213592

Crush45,
http://www.microsoft.com/sam/en/ca/msia.aspx
http://www.microsoft.com/sam/en/us/map.aspx

Crush45 06-09-2013 09:51 2213599

Iska, спасибо огромное, все работает. Спасибо Вам большое еще раз!

Ваял бы до сих пор на своем bat.

Vadikan, у программы, если я не ошибаюсь ограничение на опрос до 250 компьютеров.
Цитата:

The MSIA will work with networks that have 250 or fewer computers.
У меня порядка 1200 )

На следующий год планируется большая штука под название SCCM 2012. Вот там все, что хотим и даже больше. Спасибо Всем.

Vadikan 08-09-2013 08:42 2214464

Цитата:

Цитата Crush45
у программы, если я не ошибаюсь ограничение на опрос до 250 компьютеров. »

Цитата:

Цитата Crush45
У меня порядка 1200 ) »

Извините, мои телепатические способности все еще недостаточно развиты, поэтому я на всякий случай дал две ссылки.

Crush45 09-09-2013 07:06 2214850

Цитата:

Цитата Vadikan
Извините, мои телепатические способности все еще недостаточно развиты, поэтому я на всякий случай дал две ссылки »

Про Ваши телепатические возможности я и не спрашивал. Я просил помочь со скриптом, мне помогли, и ставить программы, будь то MAP toolkit либо MSIA я не собираюсь, по причине внедрения другого продукта. Еще раз спасибо.


Время: 04:33.

Время: 04:33.
© OSzone.net 2001-