<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: собираем информацию о компьютерах домена]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=679&amp;type=atom" />
	<updated>2009-03-10T12:01:22Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=679</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=20436#p20436" />
			<content type="html"><![CDATA[<p>Небольшой бесплатный набор компонентов <a href="http://www.netal.com/ssr.htm">System Scripting Runtime</a> предназначен для работы с сетью и локальной системой. Документацию с описанием всех возможностей и дистрибутив (архив порядка 250 Кб) вы найдёте по приведённой ссылке.</p><p>Объект <strong>SScripting.System</strong> позволяет получить некоторую системную информацию, информацию о дисках, а также установить время на компьютере, выключить/перезагрузить компьютер различными способами. Пример использования:<br /></p><div class="codebox"><pre><code>Set oSys = CreateObject(&quot;SScripting.System&quot;)
WScript.Echo oSys.CurrentDirectory &#039; текущий каталог
WScript.Echo oSys.OperatingSystem &#039; версия ОС, Build, Service Pack
WScript.Echo oSys.ProcessorCount &#039; количество процессоров
WScript.Echo oSys.ProcessorDescription &#039; описание процессора, тактовая частота
&#039; тип ОС (-1 - неизвестно, 0 - рабочая станция, 1 - сервер, 2 - контроллер домена):
WScript.Echo oSys.ProductType
WScript.Echo oSys.SystemDirectory &#039; например, C:\WINDOWS\system32
WScript.Echo oSys.TempPath &#039; путь ко временному каталогу пользователя
WScript.Echo oSys.TotalMemory &#039; размер установленной RAM в Мб
WScript.Echo oSys.UserName &#039; текущий пользователь
WScript.Echo oSys.WindowsDirectory &#039; например, C:\WINDOWS
WScript.Echo oSys.GetLocalTime() &#039; местное время
WScript.Echo oSys.GetSystemTime() &#039; время без учёта пояса
&#039; информация о типе указанного диска
&#039; (0 - неизвестно, 1 - не существует, 2 - съёмный, 3 - жёсткий, 4 - сетевой, 5 - CD-ROM, 6 - RAM)
WScript.Echo oSys.GetDriveType(&quot;C:\&quot;)
WScript.Echo oSys.GetFreeDiskSpace(&quot;C:\&quot;) &#039; свободное место, в Кб
WScript.Echo oSys.GetTotalDiskSpace(&quot;C:\&quot;) &#039; общий объём, в Кб
&#039; (можно использовать UNC-пути)</code></pre></div><p>Объект <strong>SScripting.IPNetwork</strong> предназначен для работы с сетью. Пример использования:<br /></p><div class="codebox"><pre><code>Set oSys = CreateObject(&quot;SScripting.IPNetwork&quot;)
WScript.Echo oSys.Hostname &#039; имя компьютера
WScript.Echo oSys.Domain &#039; DNS domain name, если есть
WScript.Echo oSys.DNSLookup(&quot;localhost&quot;) &#039; 127.0.0.1
WScript.Echo oSys.DNSLookup(&quot;127.0.0.1&quot;) &#039; localhost
WScript.Echo oSys.DNSLookup(&quot;script-coding.com&quot;)
For Each elem In oSys.DNSLookupEx(&quot;google.ru&quot;)
    WScript.Echo &quot;google.ru &quot; &amp; elem
Next
&#039; Ping (0 - успешно, 10 - недоступен, 20 - превышено время, 30 - нет ответа (таймаут),
&#039; 100 - неверные параметры, 110 - SocketError, 120 - неверный адрес)
&#039; Есть ряд опциональных параметров (см. документацию)
WScript.Echo oSys.Ping(&quot;127.0.0.1&quot;)</code></pre></div><p>Объект <strong>SScripting.LMNetwork</strong> также предназначен для работы с сетью. Пример использования:<br /></p><div class="codebox"><pre><code>Set oSys = CreateObject(&quot;SScripting.LMNetwork&quot;)
WScript.Echo oSys.ComputerName &#039; NetBIOS имя компьютера
suc = oSys.SendNetMessage(&quot;domain*&quot;, &quot;text of message&quot;) &#039; аналог net send</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-10T12:01:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=20436#p20436</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=20151#p20151" />
			<content type="html"><![CDATA[<p>Пример получения системной информации с помощью компонента <a href="http://forum.script-coding.com/viewtopic.php?pid=20110#p20110">JSSys3.dll</a> (версия ОС, установленная и использованная память, имя пользователя и компьютера, общий и свободный объём локальных дисков, полный путь к исполняемому файлу указанной программы по имени исполняемого файла или ассоциированному расширению, глубина цвета экрана, цветовые настройки элементов интерфейса, установленное разрешение экрана):<br /></p><div class="codebox"><pre><code>Set oSys = CreateObject(&quot;JSSys3.Ops&quot;)
errCode = oSys.GetOpVersion(Arr) &#039; 0 - OK, 1 - failed
WScript.Echo Arr(0) &#039; Platform: 1 - 9x, 2 - NT
WScript.Echo Arr(1) &#039; Major Version
WScript.Echo Arr(2) &#039; Minor Version
WScript.Echo Arr(3) &#039; Build Number
WScript.Echo Arr(4) &#039; Service pack
errCode = oSys.GetMemory(t, u) &#039; 0 - OK, 1 - failed
WScript.Echo &quot;installed RAM in MB: &quot; &amp; t
WScript.Echo &quot;RAM currently used, in MB: &quot; &amp; u
WScript.Echo &quot;current user: &quot; &amp; oSys.GetCurUser()
WScript.Echo &quot;current computer: &quot; &amp; oSys.GetCompName()
WScript.Echo oSys.GetDriveInfo() &#039; fixed drive letters, total size, free space
WScript.Echo &quot;==============================&quot;
&#039; путь к исполняемому файлу программы, ассоциированной с указанным расширением:
WScript.Echo oSys.GetDefaultProgram(&quot;txt&quot;)
&#039; глубина цвета в битах (&quot;Качество цветопередачи&quot;, Свойства Экрана, вкладка &quot;Параметры&quot;):
WScript.Echo oSys.GetColorDepthBPP()
&#039; реальное разрешение (размер) экрана, без панели задач:
errCode = oSys.GetDesktopPixels(w, h)
WScript.Echo w &amp; &quot; х &quot; &amp; h
&#039; разрешение экрана:
errCode = oSys.GetScreenPixels(w, h)
WScript.Echo w &amp; &quot; х &quot; &amp; h
&#039; цвет Рабочего стола (6-символьная строка, hex):
WScript.Echo oSys.GetSystemColor(&quot;Desktop&quot;)
&#039; (возможно получение цвета 16-и различных элементов, см. документацию)
&#039; полный путь к исполняемому файлу указанной программы:
WScript.Echo oSys.GetEXEPath(&quot;winword.exe&quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-01T11:58:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=20151#p20151</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=14179#p14179" />
			<content type="html"><![CDATA[<p>Сбор информации о физической памяти (ОЗУ) текущего компьютера с помощью бесплатной утилиты <a href="http://www.cpuid.com/cpuz.php">http://www.cpuid.com/cpuz.php</a> (предварительной инсталляции не требует, но на запуск, скорее всего, потребуются административные права):<br /></p><div class="codebox"><pre><code>Option Explicit

Const strFileName = &quot;c:\out&quot; &#039; Путь и имя файла без расширения (таковы особенности :) CPU-Z)
                             &#039; А, вообще-то, нужно генерировать Temp-файл (http://forum.script-coding.com/viewtopic.php?pid=9523#p9523).
Const ForReading = 1

Dim objWshShell
Dim objFSO
Dim objTS
Dim objRegExp
Dim collMatches
Dim objMatch
Dim strSubMatchItem

Dim strContent

Set objWshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
Set objFSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)

&#039; Из документации CPU-Z:
&#039;… -txt=filename : Launch CPU-Z in ghost mode (no interface appears) and generates the register dump file (.txt) …
&#039;
&#039; В предположении, что CPU-Z установлен в %ProgramFiles%\CPU-Z\:
objWshShell.Run &quot;&quot;&quot;&quot; &amp; objWshShell.ExpandEnvironmentStrings(&quot;%ProgramFiles%&quot;) &amp; &quot;\CPU-Z\cpuz.exe&quot;&quot; -txt=&quot; &amp; strFileName &amp; &quot;&quot;, 1, True

&#039; Читаем вывод и удаляем файл
If objFSO.FileExists(strFileName &amp; &quot;.txt&quot;) Then
    Set objTS = objFSO.OpenTextFile(strFileName &amp; &quot;.txt&quot;, ForReading)
    
    strContent = objTS.ReadAll()
    objTS.Close
    
    Set objTS = Nothing
    
    objFSO.DeleteFile strFileName &amp; &quot;.txt&quot;
End If

&#039; Ищем нужные данные посредством регулярных выражений
Set objRegExp = New RegExp

With objRegExp
    .Global = False
    .IgnoreCase = True
    
    .Pattern = &quot;.*Memory Type[\s\S]*?Memory Size[\s\S]*?Channels[\s\S]*?Memory Frequency[\s\S]*?.*&quot;
    
    Set collMatches = .Execute(strContent)
    
    WScript.Echo collMatches.Item(0)
    
    Set collMatches = Nothing
End With

&#039; Таким же образом можно получить и данные по характеристикам отдельных модулей памяти
With objRegExp
    .Global = True
    .IgnoreCase = True
    .Pattern = &quot;.*&quot; &amp; _
        &quot;(DIMM #\d)[\s\S]*?&quot; &amp; _
        &quot;(Memory type.*)[\s\S]*?&quot; &amp; _
        &quot;(Manufacturer \(ID\).*)[\s\S]*?&quot; &amp; _
        &quot;(Size.*)[\s\S]*?&quot; &amp; _
        &quot;(Max bandwidth.*)[\s\S]*?&quot; &amp; _
        &quot;(Part number.*)[\s\S]*?&quot; &amp; _
        &quot;(Serial number.*).*&quot;
    
    Set collMatches = .Execute(strContent)
    
    For Each objMatch In collMatches
        WScript.Echo
        
        For Each strSubMatchItem In objMatch.SubMatches
            WScript.Echo strSubMatchItem
        Next
    Next
    
    Set collMatches = Nothing
End With


Set objRegExp = Nothing
Set objFSO = Nothing
Set objWshShell = Nothing

WScript.Quit 0</code></pre></div><p>Автор примера - <strong>alexii</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-09-22T06:37:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=14179#p14179</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=14178#p14178" />
			<content type="html"><![CDATA[<p>Сбор информации о физической памяти (ОЗУ) текущего компьютера с помощью WMI:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strComputer
Dim arrMemoryType
Dim dictTypeDetail

Dim objSWbemServices
Dim collSWbemObjectSet
Dim objSWbemObjectSet

arrMemoryType = Array(&quot;Unknown&quot;, &quot;Other&quot;, &quot;DRAM&quot;, &quot;Synchronous DRAM&quot;, &quot;Cache DRAM&quot;, &quot;EDO&quot;, &quot;EDRAM&quot;, &quot;VRAM&quot;, _
    &quot;SRAM&quot;, &quot;RAM&quot;, &quot;ROM&quot;, &quot;Flash&quot;, &quot;EEPROM&quot;, &quot;FEPROM&quot;, &quot;EPROM&quot;, &quot;CDRAM&quot;, &quot;3DRAM&quot;, &quot;SDRAM&quot;, &quot;SGRAM&quot;, &quot;RDRAM&quot;, &quot;DDR&quot;)
    
Set dictTypeDetail = CreateObject(&quot;Scripting.Dictionary&quot;)

With dictTypeDetail
    .Add &quot;0x1&quot;, &quot;Reserved&quot;
    .Add &quot;0x2&quot;, &quot;Other&quot;
    .Add &quot;0x4&quot;, &quot;Unknown&quot;
    .Add &quot;0x8&quot;, &quot;Fast-paged&quot;
    .Add &quot;0x10&quot;, &quot;Static column&quot;
    .Add &quot;0x20&quot;, &quot;Pseudo-static&quot;
    .Add &quot;0x40&quot;, &quot;RAMBUS&quot;
    .Add &quot;0x80&quot;, &quot;Synchronous&quot;
    .Add &quot;0x100&quot;, &quot;CMOS&quot;
    .Add &quot;0x200&quot;, &quot;EDO&quot;
    .Add &quot;0x400&quot;, &quot;Window DRAM&quot;
    .Add &quot;0x800&quot;, &quot;Cache DRAM&quot;
    .Add &quot;0x1000&quot;, &quot;Non-volatile&quot;
End With

strComputer = &quot;.&quot;


Set objSWbemServices = GetObject(&quot;winmgmts:\\&quot; &amp; strComputer &amp; &quot;\root\CIMV2&quot;)
Set collSWbemObjectSet = objSWbemServices.ExecQuery(&quot;SELECT * FROM Win32_PhysicalMemory&quot;)

For Each objSWbemObjectSet In collSWbemObjectSet
    With objSWbemObjectSet
        Wscript.Echo &quot;-----------------------------------&quot;
        Wscript.Echo &quot;Win32_PhysicalMemory instance&quot;
        Wscript.Echo &quot;-----------------------------------&quot;
        Wscript.Echo &quot;BankLabel: &quot;,            .BankLabel
        Wscript.Echo &quot;Capacity: &quot;,              FormatNumber(.Capacity, 0)
        Wscript.Echo &quot;DataWidth: &quot;,            .DataWidth
        Wscript.Echo &quot;Description: &quot;,          .Description
        Wscript.Echo &quot;DeviceLocator: &quot;,        .DeviceLocator
        Wscript.Echo &quot;FormFactor: &quot;,           .FormFactor
        Wscript.Echo &quot;Manufacturer: &quot;,         .Manufacturer
        Wscript.Echo &quot;MemoryType: &quot;,            arrMemoryType(.MemoryType)
        Wscript.Echo &quot;Model: &quot;,                .Model
        Wscript.Echo &quot;Name: &quot;,                 .Name
        Wscript.Echo &quot;OtherIdentifyingInfo: &quot;, .OtherIdentifyingInfo
        Wscript.Echo &quot;PartNumber: &quot;,           .PartNumber
        Wscript.Echo &quot;SerialNumber: &quot;,         .SerialNumber
        Wscript.Echo &quot;Speed: &quot;,                .Speed
        Wscript.Echo &quot;TotalWidth: &quot;,           .TotalWidth
        Wscript.Echo &quot;TypeDetail: &quot;,           dictTypeDetail.Item(&quot;0x&quot; &amp; Hex(.TypeDetail))
    End With
Next

dictTypeDetail.RemoveAll

Set dictTypeDetail = Nothing
Set collSWbemObjectSet = Nothing
Set objSWbemServices = Nothing

WScript.Quit 0</code></pre></div><p>Примечание: информация о «железе», полученная через WMI, иногда может как просто отсутствовать, так и фактически не соответствовать действительности.<br />Автор примера - <strong>alexii</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-09-22T06:32:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=14178#p14178</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=6784#p6784" />
			<content type="html"><![CDATA[<p>Ещё один пример: сбор информации о процессорах, памяти, дисках, видео и BIOS текущего компьютера. Вывод осуществляется в окно Internet Explorer с помощью объекта &quot;InternetExplorer.Application&quot;.<br /></p><div class="codebox"><pre><code>On Error Resume Next
strComputer =&quot;.&quot;
Set oIE = WScript.CreateObject(&quot;InternetExplorer.Application&quot;)
oIE.Navigate &quot;about:blank&quot;
oIE.Visible = 1
oIE.ToolBar = 0
oIE.StatusBar = 0
oIE.Width = 600
oIE.Height = 500
oIE.StatusBar = 0
oIE.AddressBar = 0

oIE.Document.Write &quot;&lt;html&gt;&lt;title&gt;Hardware&lt;/title&gt;&lt;body bgcolor=#034e85&gt;&lt;font color=White&gt;&quot;

&#039;Опрашиваем системные переменные окружения
set oShell = CreateObject(&quot;WScript.Shell&quot;) 

sCurrUsrPath = oShell.ExpandEnvironmentStrings(&quot;%UserName%&quot;)
oIE.Document.Write &quot;Имя пользователя: &quot;
oIE.Document.Write sCurrUsrPath
oIE.Document.Write &quot;&lt;br&gt;&quot;

sCurrUsrPath = oShell.ExpandEnvironmentStrings(&quot;%COMPUTERNAME%&quot;)
oIE.Document.Write&quot;Имя компютера: &quot;
oIE.Document.Write sCurrUsrPath
oIE.Document.Write &quot;&lt;br&gt;&quot;

&#039;Подлючение к WMI
Set objWMIService = GetObject(&quot;winmgmts://&quot; &amp; strComputer &amp; &quot;/root/cimv2&quot;)

&#039;Выборка информации о процессорах
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_Processor&quot;, , 48)
For Each objItem in colItems
    strMsg = strMsg &amp; objItem.Name &amp; &quot;&lt;br&gt;&quot;
Next

&#039;Выборка информации о памяти
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_LogicalMemoryConfiguration&quot;, , 48)
For Each objItem in colItems
    strMsg2 = strMsg2 &amp; (objItem.TotalPhysicalMemory + 1023) / 1024 &amp; &quot;&lt;br&gt;&quot;
Next

&#039;Выюорка информации о диске
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_DiskDrive&quot;, , 48)
For Each objItem in colItems
    strMsg3 = strMsg3 &amp; ((objItem.Size + 536870912) / 1073741824) &amp; &quot; GB&quot; &amp; &quot;&lt;br&gt;&quot;
Next

&#039;Выборка информации об установленном видео
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_VideoController&quot;, , 48)
For Each objItem in colItems
    strMsg4 = strMsg4 &amp; objItem.Name &amp; &quot;&lt;br&gt;&quot;
Next

&#039;Выборка информации BIOS
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_BIOS where PrimaryBIOS = true&quot;, , 48)
For Each objItem in colItems
    strMsg5 = strMsg5 &amp; objItem.Manufacturer &amp; &quot;-&quot; &amp; objItem.Version &amp; &quot;&lt;br&gt;&quot;
Next

&#039;Вывод
oIE.Document.Write &quot;&lt;br&gt;&quot;
oIE.Document.Write &quot;Процессоры&lt;br&gt;&quot;
oIE.Document.Write strMsg
oIE.Document.Write &quot;&lt;br&gt;&quot;
oIE.Document.Write &quot;Память&lt;br&gt;&quot;
oIE.Document.Write strMsg2
oIE.Document.Write &quot;&lt;br&gt;&quot;
oIE.Document.Write &quot;Диски&lt;br&gt;&quot;
oIE.Document.Write strMsg3
oIE.Document.Write &quot;&lt;br&gt;&quot;
oIE.Document.Write &quot;Видео&lt;br&gt;&quot;
oIE.Document.Write strMsg4
oIE.Document.Write &quot;&lt;br&gt;&quot;
oIE.Document.Write &quot;Биос&lt;br&gt;&quot;
oIE.Document.Write strMsg5

oIE.Document.Write&quot;&lt;/font&gt;&lt;/body&gt;&lt;/html&gt;&quot;</code></pre></div><p>Автор примера - <strong>wictor</strong>.<br />Примечание: при использовании WSH ниже 5.7 может потребоваться явное приведение значений к строкам при выводе, например, &quot;oIE.Document.Write CStr(sCurrUsrPath)&quot; вместо &quot;oIE.Document.Write sCurrUsrPath&quot;.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-12-07T17:02:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=6784#p6784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=5644#p5644" />
			<content type="html"><![CDATA[<p>Объект &quot;Msinfo32.MSInfo&quot; расположен в библиотеке <em>C:\WINDOWS\pchealth\helpctr\binaries\msinfo.dll</em> (WinXP SP2) и позволяет сохранить в файл достаточно обширную информацию, аналогичную той, которую можно видеть в программе &quot;Сведения о системе&quot; (меню &quot;Пуск&quot; - &quot;Программы&quot; - &quot;Стандартные&quot; - &quot;Служебные&quot; - &quot;Сведения о системе&quot;).<br /></p><div class="codebox"><pre><code>Set objMSInfo = CreateObject(&quot;Msinfo32.MSInfo&quot;)
&#039; objMSInfo.UpdateDCOProgress(Null)
objMSInfo.SaveFile &quot;C:\Temp\test.txt&quot;, &quot;ComputerName&quot;, 0 &#039; 0 - кратко, &quot;&quot; - полно</code></pre></div><p>Вместо &quot;ComputerName&quot; можно использовать &quot;.&quot;, что будет означать текущий компьютер. Если недостаточно прав для обращения к удалённому компьютеру, скрипт может приводить к краху Windows Script Host.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-10-24T16:53:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=5644#p5644</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=5594#p5594" />
			<content type="html"><![CDATA[<p>Объект &quot;PCHealth.BugRepSysInfo&quot; расположен в библиотеке <em>C:\WINDOWS\pchealth\helpctr\binaries\brpinfo.dll</em> (WinXP SP2) и позволяет собрать некотоые сведения об операционной системе:<br /></p><div class="codebox"><pre><code>Set objPCHealth = CreateObject(&quot;PCHealth.BugRepSysInfo&quot;)
WScript.Echo objPCHealth.GetLanguageID &#039;язык операционной системы
WScript.Echo objPCHealth.GetOSVersionString &#039;номер версии операционной системы с указанием сервис-пака
WScript.Echo objPCHealth.GetUserDefaultLCID &#039;язык установленной локали
WScript.Echo objPCHealth.GetActiveCP &#039;основная кодовая страница</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-10-23T05:45:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=5594#p5594</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=4954#p4954" />
			<content type="html"><![CDATA[<p>Те же скрипты, но несколько расширенные. Собирается информация:<br />- роль в домене<br />- семейство процессора<br />- частота процессора<br />- размер оперативной памяти<br />- размер жестких диков<br />- модель видео контроллера<br />- текущие IP<br />- MAC адрес<br />- тип памяти<br />- список шар<br />- список установленного софта<br />- информация об операционке<br />- номер сервис-пака<br />- информация об установленных хот-фиксах</p><p>Спасибо <strong>Ganzales</strong>, <strong>MoonRabbit</strong>, <strong>tvm</strong>.</p><p><strong>info.vbs</strong><br /></p><div class="codebox"><pre><code>function Avaible (name) &#039;пингом проверяет доступность компьютера name в сети
    on error resume next
    Set objPing = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}&quot;)._
        ExecQuery(&quot;select * from Win32_PingStatus where address = &#039;&quot;_
            &amp; name &amp; &quot;&#039;&quot;)
    For Each objStatus in objPing
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode&lt;&gt;0 Then 
            Avaible=false
        else
            Avaible=true
        End If
    Next
End Function

&#039;Function IsWinNT(name) &#039;NT ли на компьютере name
&#039;    On Error Resume Next
&#039;    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
&#039;    For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_OperatingSystem&quot;)
&#039;        Exit For
&#039;    Next
&#039;    &#039;16 - WIN95, 17 - WIN98, 18 - WINNT, 19 - WINCE
&#039;    if objOS.OSType=18 Then
&#039;        IsWinNT=True
&#039;    Else
&#039;        IsWinNT=False
&#039;    end If
&#039;End function

function Role (name) &#039; возвращет роль компьютера name в домене
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_ComputerSystem&quot;)
        Select Case objOS.DomainRole
        Case &quot;0&quot; Role=&quot;Standalone Workstation&quot;
        Case &quot;1&quot; Role=&quot;Рабочее место&quot;
        Case &quot;2&quot; Role=&quot;Standalone Server&quot;
        Case &quot;3&quot; Role=&quot;Member Server&quot;
        Case &quot;4&quot; Role=&quot;Сервер&quot;
        Case &quot;5&quot; Role=&quot;Сервер&quot;
        End Select
        Next
    end if    
End function

function ProcessorFamily (name) &#039;возвращает название процессора компьютера name 
    On Error Resume Next
    Set objWMIService = GetObject(&quot;winmgmts:&quot; _
        &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
    Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_Processor&quot;)
    For Each objItem in colItems    
        ProcessorFamily=objItem.Name
    Next
end function

function ProcessorClock (name) &#039;возвращает частоту процессора name 
    On Error Resume Next
    Set objWMIService = GetObject(&quot;winmgmts:&quot; _
        &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
    Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_Processor&quot;)
    For Each objItem in colItems
        ProcessorClock=objItem.CurrentClockSpeed
    Next
end function

function GetMemSize (name) &#039;возвращает размер оперативной памяти комьютера name
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_ComputerSystem&quot;)
        GetMemSize=objOS.TotalPhysicalMemory/1024/1024
        Next
    end if    
End function

function GetDisksSize(name) &#039;возвращает размер НЖМД компьюетра name, если их несолько то все через пробел
    size=&quot;&quot;
    on error resume next
    Set objWMIService = GetObject(&quot;winmgmts:&quot; _
        &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
    Set colDiskDrives = objWMIService.ExecQuery _    
        (&quot;Select * from Win32_DiskDrive&quot;)
    For each objDiskDrive in colDiskDrives       
        size=size&amp;&quot; &quot;&amp;round(objDiskDrive.Size/1024/1024/1024)
    Next
    GetDisksSize=size
end function

&#039;==================================================================================================

function GetVideoProc (name) &#039;возвращает модель видео контроллера
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_VideoController&quot;)
            GetVideoProc=objOS.Description
        Next
    end if    
End Function

function GetCurentIp (name) &#039;возвращает текущие IP машины
    CurentIps = &quot;&quot;
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_NetworkAdapterConfiguration&quot;)
            For Each  IP In objOS.IPAddress
                CurentIps = CurentIps &amp; IP &amp; &quot;; &quot;
            Next
        Next
    end If
    GetCurentIp = Trim(CurentIps)
End Function

function GetCurentMAC (name) &#039;возвращает MAC адрес адаптера
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_NetworkAdapterConfiguration&quot;)
            GetCurentMAC = objOS.MACAddress
        Next
    end if    
End Function

function GetMemoryType (name) &#039;возвращает тип памяти (&lt;533 DDR1 &gt;=533 DDR2)
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_PhysicalMemory&quot;)
            GetMemoryType = objOS.Speed
        Next
    end if    
End Function

&#039;==================================================================================================

function GetShares (name) &#039;возвращает список шар
    Shares = &quot;&quot;
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_Share&quot;)
            Shares = Shares &amp; objOS.Name &amp; &quot; &quot; &amp; objOS.Path &amp; &quot;; &quot;
        Next
    end if    
    GetShares = Trim(Shares)
End Function

&#039;==================================================================================================

function GetSoft (name) &#039;возвращает список установленного софта
    Soft = &quot;&quot;
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_Product&quot;)
            Soft = Soft &amp; objOS.Caption &amp; &quot; &quot; &amp; objOS.Version &amp; &quot; &quot; &amp; objOS.InstallLocation &amp; &quot; &quot; &amp; objOS.PackageCache &amp; &quot;; &quot;
        Next
    end if    
    GetSoft = Trim(Soft)
End Function

function GetOS (name) &#039;возвращает информацию об операционке
    Info = &quot;&quot;
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_OperatingSystem&quot;)
            Info = Info &amp; objOS.Caption &amp; &quot; &quot; &amp; objOS.Version &amp; &quot; &quot; &amp; objOS.CodeSet &amp; &quot; &quot; &amp; objOS.OSLanguage &amp; &quot; &quot; &amp; objOS.SerialNumber &amp; &quot;; &quot;
        Next
    end if    
    GetOS = Trim(Info)
End Function

function GetSP (name) &#039;возвращает номер сервис-пака
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_OperatingSystem&quot;)
            GetSP = objOS.ServicePackMajorVersion &amp; &quot;.&quot; &amp; objOS.ServicePackMinorVersion
        Next
    end if    
End Function

function GetQuickFix (name) &#039;возвращает информацию об установленных хот-фиксах
    Info = &quot;&quot;
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_QuickFixEngineering&quot;)
            Info = Info &amp; objOS.HotFixID &amp; &quot; &quot;
        Next
    end if    
    GetQuickFix = Trim(Info)
End Function</code></pre></div><p><strong>prosto v EXCEL.wsf</strong><br /></p><div class="codebox"><pre><code>    Set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
    Set xlApp = CreateObject(&quot;Excel.Application&quot;) 
    xlApp.Visible = True
    xlApp.Workbooks.Add    
    xlApp.Cells(1, 1).Value = &quot;Domain Computer&quot;
    xlApp.Cells(1, 2).Value = &quot;Domain Role&quot;
    xlApp.Cells(1, 3).value=&quot;ProcessorFamily&quot;
    xlApp.Cells(1, 4).value=&quot;ProcessorClock&quot;
    xlApp.Cells(1, 5).Value =&quot;RAM&quot;
    xlApp.Cells(1, 6).Value = &quot;HDD(s)&quot;
    xlApp.Cells(1, 7).Value = &quot;Video&quot;
    xlApp.Cells(1, 8).Value = &quot;IP(s)&quot;
    xlApp.Cells(1, 9).Value = &quot;MAC&quot;
    xlApp.Cells(1, 10).Value = &quot;Memory&quot;
    xlApp.Cells(1, 11).Value = &quot;Shares&quot;
    xlApp.Cells(1, 12).Value = &quot;Soft&quot;
    xlApp.Cells(1, 13).Value = &quot;OS&quot;
    xlApp.Cells(1, 14).Value = &quot;SP&quot;
    xlApp.Cells(1, 15).Value = &quot;HotFixID(s)&quot;

    Dim Container 
    DomainName=InputBox(&quot;Ваш домен пожалуйста&quot;)
    &#039;DomainName=&quot;ixb&quot;
    Set Container = GetObject(&quot;WinNT://&quot; &amp; DomainName)
    Container.Filter = Array(&quot;Computer&quot;)
    i=2
    For Each Obj In Container
        xlApp.Cells(i, 1).Value = Obj.Name
        if Avaible(Obj.Name) then
            xlApp.Cells(i, 2).Value = Role(Obj.Name)
            xlApp.Cells(i, 3).value = ProcessorFamily(Obj.Name)
            xlApp.Cells(i, 4).value = ProcessorClock(Obj.Name)
            xlApp.Cells(i, 5).Value = GetMemSize(Obj.Name)
            xlApp.Cells(i, 6).Value = GetDisksSize(Obj.Name)
            xlApp.Cells(i, 7).Value = GetVideoProc(Obj.Name)
            xlApp.Cells(i, 8).Value = GetCurentIp(Obj.Name)
            xlApp.Cells(i, 9).Value = GetCurentMAC(Obj.Name)
            xlApp.Cells(i, 10).Value = GetMemoryType(Obj.Name)
            xlApp.Cells(i, 11).Value = GetShares(Obj.Name)
            xlApp.Cells(i, 12).Value = GetSoft(Obj.Name)
            xlApp.Cells(i, 13).Value = GetOS(Obj.Name)
            xlApp.Cells(i, 14).Value = GetSP(Obj.Name)
            xlApp.Cells(i, 15).Value = GetQuickFix(Obj.Name)
        end if
        i=i+1
    Next
    xlApp.Cells(i, 1).Value = Now
    WScript.sleep 2000
    Set xlApp = Nothing</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-09-20T14:28:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=4954#p4954</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: собираем информацию о компьютерах домена]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=4740#p4740" />
			<content type="html"><![CDATA[<p>Скрипт собирает информацию о компьютерах домена: роль в домене, семейство процессора и его частоту, размер оперативной памяти и жестких диков. Скрипт запускает MS Excel и выводит в него информацию. Потребуются права администратора домена. Скрипт может являться примером не только получения информации с помощью WMI, но и примером быстрого и удобного вывода данных в скриптах с помощью MS Excel.</p><p>Запускать <strong>prosto v EXCEL.wsf</strong>, файл <strong>info.vbs</strong> должен лежать рядом.<br />Автор примера - Алексей Жучков, г. Ессентуки.</p><p><strong>info.vbs</strong><br /></p><div class="codebox"><pre><code>function GetMemSize (name) &#039;возвращает размер оперативной памяти комьютера name
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_ComputerSystem&quot;)
        GetMemSize=objOS.TotalPhysicalMemory/1024/1024
        Next
    end if    
End function

function Avaible (name) &#039;пингом проверяет доступность компьютера name в сети
    on error resume next
    Set objPing = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}&quot;)._
        ExecQuery(&quot;select * from Win32_PingStatus where address = &#039;&quot;_
            &amp; name &amp; &quot;&#039;&quot;)
    For Each objStatus in objPing
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode&lt;&gt;0 Then 
            Avaible=false
        else
            Avaible=true
        End If
    Next
End function

function Role (name) &#039; возвращет роль компьютера name в домене
    on error resume next
    Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
    If Err.Number = 0 Then
        For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_ComputerSystem&quot;)
        Select Case objOS.DomainRole
        Case &quot;0&quot; Role=&quot;Standalone Workstation&quot;
        Case &quot;1&quot; Role=&quot;Рабочее место&quot;
        Case &quot;2&quot; Role=&quot;Standalone Server&quot;
        Case &quot;3&quot; Role=&quot;Member Server&quot;
        Case &quot;4&quot; Role=&quot;Сервер&quot;
        Case &quot;5&quot; Role=&quot;Сервер&quot;
        End Select
        Next
    end if    
End function

function ProcessorFamily (name) &#039;возвращает название процессора компьютера name 
On Error Resume Next
Set objWMIService = GetObject(&quot;winmgmts:&quot; _
    &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_Processor&quot;)
For Each objItem in colItems    
    ProcessorFamily=objItem.Name
Next
end function

function ProcessorClock (name) &#039;возвращает частоту процессора name 
On Error Resume Next
Set objWMIService = GetObject(&quot;winmgmts:&quot; _
    &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
Set colItems = objWMIService.ExecQuery(&quot;Select * from Win32_Processor&quot;)
For Each objItem in colItems
    ProcessorClock=objItem.CurrentClockSpeed
Next
end function

function GetDisksSize(name) &#039;возвращает размер НЖМД компьюетра name, если их несолько то все через пробел
size=&quot;&quot;
on error resume next
Set objWMIService = GetObject(&quot;winmgmts:&quot; _
    &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; name &amp; &quot;\root\cimv2&quot;)
Set colDiskDrives = objWMIService.ExecQuery _    
    (&quot;Select * from Win32_DiskDrive&quot;)
For each objDiskDrive in colDiskDrives       
    size=size&amp;&quot; &quot;&amp;round(objDiskDrive.Size/1024/1024/1024)
Next
GetDisksSize=size
end function

Function IsWinNT(name) &#039;NT ли на компьютере name
On Error Resume Next
Set objService = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\&quot;&amp;name&amp;&quot;\root\CIMV2&quot;)
For Each objOS In objService.ExecQuery(&quot;SELECT * FROM Win32_OperatingSystem&quot;)
    Exit For
Next
&#039;16 - WIN95, 17 - WIN98, 18 - WINNT, 19 - WINCE
if objOS.OSType=18 then
    IsWinNT=true
else
    IsWinNT=false
end if
End function</code></pre></div><p><strong>prosto v EXCEL.wsf</strong><br /></p><div class="codebox"><pre><code>&#039;Получает инфо о компьютерах домена
&#039;Роль в домене, семейство процессора и его частоту, размер оперативной памяти и жестких диков
&lt;job id=&quot;FillIfo&quot;&gt;
   &lt;script language=&quot;VBScript&quot; src=&quot;info.vbs&quot;/&gt;
   &lt;script language=&quot;VBScript&quot;&gt;
    Set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
    Set xlApp = CreateObject(&quot;Excel.Application&quot;) 
    xlApp.Visible = True
    xlApp.Workbooks.Add    
    xlApp.Cells(1, 1).Value = &quot;Domain Computer&quot;
    xlApp.Cells(1, 2).Value = &quot;Domain Role&quot;
    xlApp.Cells(1, 3).value=&quot;ProcessorFamily&quot;
    xlApp.Cells(1, 4).value=&quot;ProcessorClock&quot;
    xlApp.Cells(1, 5).Value =&quot;RAM&quot;
    xlApp.Cells(1, 6).Value = &quot;HDD(s)&quot;

    Dim Container 
    DomainName=InputBox(&quot;Ваш домен пожалуйста&quot;)
    &#039;DomainName=&quot;ixb&quot;
    Set Container = GetObject(&quot;WinNT://&quot; &amp; DomainName)
    Container.Filter = Array(&quot;Computer&quot;)
    i=2
    For Each Obj In Container
        xlApp.Cells(i, 1).Value = Obj.Name
        if Avaible(Obj.Name) then
            xlApp.Cells(i, 2).Value = Role(Obj.Name)
            xlApp.Cells(i, 3).value=ProcessorFamily(Obj.Name)
            xlApp.Cells(i, 4).value=ProcessorClock(Obj.Name)
            xlApp.Cells(i, 5).Value = GetMemSize(Obj.Name)                                    
            xlApp.Cells(i, 6).Value = GetDisksSize(Obj.Name)            
        end if
        i=i+1
    Next    
    WScript.sleep 2000
    Set xlApp = Nothing 
    &lt;/script&gt;
&lt;/job&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-09-13T10:27:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=4740#p4740</id>
		</entry>
</feed>
