Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определение версий Microsoft Office и IE

Ответить
Настройки темы
CMD/BAT - [решено] Определение версий Microsoft Office и IE

Аватара для Crush45

Старожил


Сообщения: 498
Благодарности: 39


Конфигурация

Профиль | Отправить PM | Цитировать


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

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

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

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

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 13:33, 04-09-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Это не единственный способ.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:53, 04-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Crush45

Старожил


Сообщения: 498
Благодарности: 39

Профиль | Отправить PM | Цитировать


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

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 09:32, 05-09-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Crush45, укажите путь, куда делать вывод в файл — я приведу детали «как».
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:11, 05-09-2013 | #4


Аватара для Crush45

Старожил


Сообщения: 498
Благодарности: 39

Профиль | Отправить PM | Цитировать


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

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

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 12:07, 05-09-2013 | #5


Аватара для sunnykey

Пользователь


Сообщения: 124
Благодарности: 47

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#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-базу? »
Можно, но нужно читать мануалы

-------
cmd умри, powershell живи=)
Powershel 4.0 microsoft.com/ru-ru/download/details.aspx?id=40855

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:12, 05-09-2013 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата 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» — дату и время внесения изменений).

Последний раз редактировалось Iska, 06-09-2013 в 09:19. Причина: Добавлено пропущенное — описание таблицы «Sample table»,

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:00, 05-09-2013 | #7


Аватара для Crush45

Старожил


Сообщения: 498
Благодарности: 39

Профиль | Отправить PM | Цитировать


Цитата Iska:
"INSERT INTO [Sample table] (" & _ »
Я так понимаю в данном случае нужно указать в какую таблицу базы писать?

-------
МеЧтАтЬ СтАтЬ МоДеРоМ Не ВрЕдНо... ВрЕдНо Не МеЧтАтЬ ВоОбщЕ...


Отправлено: 06:08, 06-09-2013 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 06:57, 06-09-2013 | #9


(*.*)


Сообщения: 36549
Благодарности: 6692

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 09:43, 06-09-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определение версий Microsoft Office и IE

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Как конвертировать базу данных Microsoft Office Acess в Open office Base? tier_skg Хочу все знать 0 08-01-2013 20:36
Microsoft объявляет о доступности бесплатной альтернативы MS Office - Office Web Apps OSZone News Новости и события Microsoft 17 27-06-2010 10:47
2007 - [решено] Office | определение ключей slaine Microsoft Office (Word, Excel, Outlook и т.д.) 3 11-06-2010 17:47
Microsoft анонсирует выпуск бесплатной версии MS Office - Office Starter 2010 OSZone News Новости и события Microsoft 0 10-10-2009 15:30




 
Переход