1С и Windows Script Host (WSH) и Windows Management Instrumentation (WMI). ОТ ТЕОРИИ К ПРАКТИКЕ. Часть I
Описание возможностей Windows Script Host и Windows Management Instrumentation.
Подборка "скриптовых" функций и процедур.
- Описание
- Подробнее
Описание
Следующие:
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть II: //sale.itcity.ru/public/166391/
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть III: //sale.itcity.ru/public/166440/
Практическая реализация:
Обработка 1С:Системный Администратор (WSH&WMI): //sale.itcity.ru/public/172189/
ТЕОРИЯ
Microsoft Windows Script Host (WSH) — сервер сценариев Windows.
Используется в качестве инструмента разработки и выполнения специальных сценариев для операционной системы Windows.
Сценарии WSH пишутся на специализированных языках: Microsoft Visual Basic Script Edition (VBScript) или Microsoft JScript.
Свойства и методы объектов Microsoft WSH доступны также в приложениях, способных выступить в роли OLE-клиента.
WSH позволяет работать с:
— Файловой системой;
— Ресурсами локальной сети;
— Реестром;
— Специальными папками и ярлыками Windows;
— Процессами. Запускать и контролировать их выполнение.
WSH позволяет взаимодействовать с Microsoft ActiveX:
— ActiveX Data Object (ADO) — Доступ к базам данных;
— Active Directory Service Interface (ADSI) — Службы каталогов;
— Windows Management Instrumentation (WMI) — Инструментарий управления Windows.
Подробно свойства и методы объектов MS Windows Script Host изложены в файле Automation.chm, доступном в ссылках на скачивание.
Windows Management Instrumentation (WMI) — инструментарий управления Windows.
WMI — это одна из базовых технологий для централизованного наблюдения и управления компьютерной инфраструктуры под управлением платформы Windows.
WMI – это расширенная и адаптированная компанией Microsoft реализация стандарта WBEM (WebBased Enterprise Management) компании DMTF Inc.
Основа WBEM — Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы.
WMI позволяет работать с:
— Системой;
— Приложениями;
— Оборудованием;
— Сетями;
др. управляемыми компонентами.
Подробно о Windows Management Instrumentation (англ.): http://msdn.microsoft.com/en-us/library/windows/desktop/aa394572%28v=vs.85%29.aspx
ПРАКТИКА
Список процедур и функций:
— Computer_WindowsInfo() — Ф., позволяющая получить информацию об установленной Windows на лок./уд. компьютере.
— SendKeys() — П.: — Имитация нажатия клавиш.
— ПреобразоватьИзСтрокиВДату() — Ф., возвращающая результат преобразования строкового значения даты в значение в формате даты.
— ВремяВМиллисекундах() — Ф., возвращающая время в миллисекундах или секундах.
— ЗадержкаВВыполнении() — Ф. задержки выполнения процесса.
— SetDateTime() — Ф. вызова оснастки установки системных Даты и Времени.
— ControlPanelItem() — Ф. вызова оснастки Панели управления.
— SystemEnvironment() — Ф., позволяющая получить Переменные окружения лок. компьютера.
— Computer_Motherboard() — Ф., позволяющая информацию о материнской плате лок./уд. компьютера.
— Computer_BIOS() — Ф., позволяющая информацию о BIOS лок./уд. компьютера.
— Computer_Processor() — Ф., позволяющая получить информацию о процессоре(ах) на лок./уд. компьютере.
— Computer_RAM() — Ф., позволяющая получить информацию о памяти на лок./уд. компьютере.
— Computer_TotalPhysicalMemory() — Ф., позволяющая получить информацию об объеме установленной памяти на лок./уд. компьютере.
— Computer_PhysicalMemory() — Ф., позволяющая получить информацию о физической памяти на лок./уд. компьютере.
— Computer_VirtualMemory() — Ф., позволяющая получить информацию о виртуальной памяти на лок./уд. компьютере.
— Computer_Video() — Ф., позволяющая получить информацию о видео на лок./уд. компьютере.
— Computer_Monitor() — Ф., позволяющая получить информацию о мониторе(ах) на лок./уд. компьютере.
— Computer_Printer() — Ф., позволяющая получить список подключенных принтеров лок./уд. компьютера.
— Network_Printer() — П. подключения сетевого принтера.
— User_ComputerSystem() — Ф., позволяющая получить Имя пользователя, зарегистрировавшегося на лок./уд. компьютере.
— GET_ComputerName_UserName_UserDomain() — Ф., позволяющая получить локальные имена: Компьютера, Пользователя, Домена.
— Computer_UserList() — Ф., позволяющая получить список учётных записей на лок./уд. компьютере.
— Computer_GroupList() — Ф., позволяющая получить список групп пользователей на лок./уд. компьютере.
— Computer_GroupUsersList() — Ф., позволяющая получить список групп и их пользователей на лок./уд. компьютере.
— Computer_BuildINAdministrator() — Ф., позволяющая получить данные встроенной учетной записи Администратора на лок./уд. компьютере.
— Computer_NetworkAdapter() — Ф., позволяющая получить информацию о сетевых адаптерах на лок./уд. компьютере.
— NetworkNeighborhood() — Ф. получения информации о сетевом окружении.
— Computer_PING() — Ф., позволяющая невизуально «пропинговать» удаленный компьютер.
— Computer_SystemService() — Ф., позволяющая получить информацию о службах на лок./уд. компьютере.
— Computer_SystemProcess() — Ф., позволяющая получить информацию о процессах на лок./уд. компьютере.
— Computer_KillProccess() — Ф., позволяющая завершить некий процесс на лок./уд. компьютере.
— Computer_EventsList() — Ф., позволяющая получить список событий за период из журналов System/Application лок./уд. компьютера.
— Computer_ServerSession() — Ф., позволяющая получить информацию об открытых сессиях на сервере (локальный/удаленный компьютер).
— Computer_Terminal() — Ф., позволяющая получить информацию о терминальных сессиях на сервере (локальный/удаленный компьютер).
— Computer_ServerConnection() — Ф., позволяющая получить информацию об установленных подключениях к серверу (лок./уд. компьютер).
— Computer_RebootShutdown() — Ф., позволяющая произвести завершение сеанса/перезагрузку/выключение лок./уд. компьютера.
/*
// Windows Management Instrumentation — Инструментарий управления Windows:
//
// Для выполнения следующих действий необходимы права Администратора Windows.
//
// Перед применением функций, испоьзующих WMI на локальном/удаленном компьютере
// необходимо изменить и проверить настройки Windows:
// (выполняется локально на каждом компьютере)
//
// 1. Состояние службы Windows Management Instrumentation (WMI):
//
// Имя Службы: «Инструментарий управления Windows»
// Запуск: «Автоматически».
//
// 2. Разрешение в брандмауэре Windows:
//
// ОБЯЗАТЕЛЬНО:
//
// Общий доступ к файлам и принтерам:
// Если используется брандмауэр Windows,то он автоматически открывает порты,
// необходимые для предоставления общего доступа к файлам и принтерам, после включения обнаружения сети.
//
// Разрешение для PING:
//
// Вкладка «Дополнительные параметры — ICMP»:
// Разрешить запрос входящего эха.
//
// Разрешить «Удаленное управление Windows»:
// (Становится доступным «Сервер RPC»).
//
// Windows XP:
// Из комендной строки:
// netsh firewall set service type = REMOTEADMIN mode = ENABLE scope = SUBNET
//
// Разрешить «Инструментарий управления Windows (WMI)»:
// (Становится доступным «Сервер RPC»).
//
// Windows 7:
// Предпочтительный способ:
// Включить в оснастке брандмауэра исключения для «Инструментарий управления Windows (WMI)».
// ИЛИ
// Из комендной строки:
// netsh advfirewall firewall set rule group=»Инструментарий управления Windows (WMI)» new enable=Yes
//
// Использование WMI на Windows 2003:
// Например: функции Computer_Programs_Product() см. 1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть III.
// Функция, позволяющая получить информацию об установленных программах локальном/удаленном компьютере.
//
// При запуске на на компьютере под управлением Windows Server 2003 возможна ошибка чтения данных,
// т.к. поставщик объекта Win32_Product по умолчанию в Windows Server 2003 не устаналивается.
// Установка:
// Панель управления — Установка и уделение программ — Установка компонентов Windows — Средства наблюдения и управления:
// Компонента: «Поставщик установщика Windows через WMI».
//
// ВОЗМОЖНО:
//
// Разрешить удаленное управление (TCP 135, 445):
//
// Windows XP:
// Открыть порт TCP 135 для локальной подсети.
// Открытие порта TCP 445:
// Если разрешено «Совместное использование файлов и принтеров», то
// Открывать порт 445 не нужно, иначе — открыть.
//
// Windows 7:
// Предпочтительный способ:
// Включить в оснастке брандмауэра исключения для «Удаленное управление Windows».
// ИЛИ
// Из комендной строки:
// netsh advfirewall firewall set rule group=»Удаленное управление Windows» new enable=Yes
//
// 3. Синхронизировать время на компьютерах.
//
// 4. Проверка функционирования доступа к WMI на локальном/удаленном компьютере:
//
// WMIC = WMI командной строки (WMIC, WMI command-line).
// Упрощенный интерфейс командной строки для работы с WMI.
//
// Командный файл, следующего содержания:
//
// rem Запрос: имя ОС сервера c помощью команды wmic:
// wmic /node:»%1″ os get name
//
// Где:
// %1 — Имя локального/удаленного компьютера.
*/
// Функция, позволяющая получить информацию об установленной Windows на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
Функция Computer_WindowsInfo(Computer = «.»)
Перем WINInfo, WINInfoOS;
Перем WinMGMT, Win32_OperatingSystem, OperatingSystem;
WINInfo = Новый ТаблицаЗначений;
WINInfo.Колонки.Добавить(«BootDevice»);
WINInfo.Колонки.Добавить(«BuildNumber»);
WINInfo.Колонки.Добавить(«BuildType»);
WINInfo.Колонки.Добавить(«Caption»);
WINInfo.Колонки.Добавить(«CodeSet»);
WINInfo.Колонки.Добавить(«CountryCode»);
WINInfo.Колонки.Добавить(«CreationClassName»);
WINInfo.Колонки.Добавить(«CSCreationClassName»);
WINInfo.Колонки.Добавить(«CSDVersion»);
WINInfo.Колонки.Добавить(«CSName»);
WINInfo.Колонки.Добавить(«CurrentTimeZone»);
WINInfo.Колонки.Добавить(«DataExecutionPrevention_32BitApplications»);
WINInfo.Колонки.Добавить(«DataExecutionPrevention_Available»);
WINInfo.Колонки.Добавить(«DataExecutionPrevention_Drivers»);
WINInfo.Колонки.Добавить(«DataExecutionPrevention_SupportPolicy»);
WINInfo.Колонки.Добавить(«Debug»);
WINInfo.Колонки.Добавить(«Description»);
WINInfo.Колонки.Добавить(«Distributed»);
WINInfo.Колонки.Добавить(«EncryptionLevel»);
WINInfo.Колонки.Добавить(«ForegroundApplicationBoost»);
WINInfo.Колонки.Добавить(«FreePhysicalMemory»);
WINInfo.Колонки.Добавить(«FreeSpaceInPagingFiles»);
WINInfo.Колонки.Добавить(«FreeVirtualMemory»);
WINInfo.Колонки.Добавить(«InstallDate»);
WINInfo.Колонки.Добавить(«LargeSystemCache»);
WINInfo.Колонки.Добавить(«LastBootUpTime»);
WINInfo.Колонки.Добавить(«LocalDateTime»);
WINInfo.Колонки.Добавить(«Locale»);
WINInfo.Колонки.Добавить(«Manufacturer»);
WINInfo.Колонки.Добавить(«MaxNumberOfProcesses»);
WINInfo.Колонки.Добавить(«MaxProcessMemorySize»);
WINInfo.Колонки.Добавить(«MUILanguages»);
WINInfo.Колонки.Добавить(«Name»);
WINInfo.Колонки.Добавить(«NumberOfLicensedUsers»);
WINInfo.Колонки.Добавить(«NumberOfProcesses»);
WINInfo.Колонки.Добавить(«NumberOfUsers»);
WINInfo.Колонки.Добавить(«OperatingSystemSKU»);
WINInfo.Колонки.Добавить(«Organization»);
WINInfo.Колонки.Добавить(«OSArchitecture»);
WINInfo.Колонки.Добавить(«OSLanguage»);
WINInfo.Колонки.Добавить(«OSProductSuite»);
WINInfo.Колонки.Добавить(«OSType»);
WINInfo.Колонки.Добавить(«OtherTypeDescription»);
WINInfo.Колонки.Добавить(«PAEEnabled»);
WINInfo.Колонки.Добавить(«PlusProductID»);
WINInfo.Колонки.Добавить(«PlusVersionNumber»);
WINInfo.Колонки.Добавить(«Primary»);
WINInfo.Колонки.Добавить(«ProductType»);
WINInfo.Колонки.Добавить(«RegisteredUser»);
WINInfo.Колонки.Добавить(«SerialNumber»);
WINInfo.Колонки.Добавить(«ServicePackMajorVersion»);
WINInfo.Колонки.Добавить(«ServicePackMinorVersion»);
WINInfo.Колонки.Добавить(«SizeStoredInPagingFiles»);
WINInfo.Колонки.Добавить(«Status»);
WINInfo.Колонки.Добавить(«SuiteMask»);
WINInfo.Колонки.Добавить(«SystemDevice»);
WINInfo.Колонки.Добавить(«SystemDirectory»);
WINInfo.Колонки.Добавить(«SystemDrive»);
WINInfo.Колонки.Добавить(«TotalSwapSpaceSize»);
WINInfo.Колонки.Добавить(«TotalVirtualMemorySize»);
WINInfo.Колонки.Добавить(«TotalVisibleMemorySize»);
WINInfo.Колонки.Добавить(«Version»);
WINInfo.Колонки.Добавить(«WindowsDirectory»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_OperatingSystem = WinMGMT.ExecQuery(«SELECT * FROM Win32_OperatingSystem»);
Исключение
Возврат WINInfo;
КонецПопытки;
Для Каждого OperatingSystem ИЗ Win32_OperatingSystem Цикл
WINInfoOS = WINInfo.Добавить();
WINInfoOS.BootDevice = ПолучитьЗначениеВПопытке(OperatingSystem, «BootDevice»);
WINInfoOS.BuildNumber = ПолучитьЗначениеВПопытке(OperatingSystem, «BuildNumber»);
WINInfoOS.BuildType = ПолучитьЗначениеВПопытке(OperatingSystem, «BuildType»);
WINInfoOS.Caption = ПолучитьЗначениеВПопытке(OperatingSystem, «Caption»);
WINInfoOS.CodeSet = ПолучитьЗначениеВПопытке(OperatingSystem, «CodeSet»);
WINInfoOS.CountryCode = ПолучитьЗначениеВПопытке(OperatingSystem, «CountryCode»);
WINInfoOS.CreationClassName = ПолучитьЗначениеВПопытке(OperatingSystem, «CreationClassName»);
WINInfoOS.CSCreationClassName = ПолучитьЗначениеВПопытке(OperatingSystem, «CSCreationClassName»);
WINInfoOS.CSDVersion = ПолучитьЗначениеВПопытке(OperatingSystem, «CSDVersion»);
WINInfoOS.CSName = ПолучитьЗначениеВПопытке(OperatingSystem, «CSName»);
WINInfoOS.CurrentTimeZone = ПолучитьЗначениеВПопытке(OperatingSystem, «CurrentTimeZone»);
WINInfoOS.DataExecutionPrevention_32BitApplications = ПолучитьЗначениеВПопытке(OperatingSystem, «DataExecutionPrevention_32BitApplications»);
WINInfoOS.DataExecutionPrevention_Available = ПолучитьЗначениеВПопытке(OperatingSystem, «DataExecutionPrevention_Available»);
WINInfoOS.DataExecutionPrevention_Drivers = ПолучитьЗначениеВПопытке(OperatingSystem, «DataExecutionPrevention_Drivers»);
WINInfoOS.DataExecutionPrevention_SupportPolicy = ПолучитьЗначениеВПопытке(OperatingSystem, «DataExecutionPrevention_SupportPolicy»);
WINInfoOS.Debug = ПолучитьЗначениеВПопытке(OperatingSystem, «Debug»);
WINInfoOS.Description = ПолучитьЗначениеВПопытке(OperatingSystem, «Description»);
WINInfoOS.Distributed = ПолучитьЗначениеВПопытке(OperatingSystem, «Distributed»);
WINInfoOS.EncryptionLevel = ПолучитьЗначениеВПопытке(OperatingSystem, «EncryptionLevel»);
WINInfoOS.ForegroundApplicationBoost = ПолучитьЗначениеВПопытке(OperatingSystem, «ForegroundApplicationBoost»);
WINInfoOS.FreePhysicalMemory = ПолучитьЗначениеВПопытке(OperatingSystem, «FreePhysicalMemory»);
WINInfoOS.FreeSpaceInPagingFiles = ПолучитьЗначениеВПопытке(OperatingSystem, «FreeSpaceInPagingFiles»);
WINInfoOS.FreeVirtualMemory = ПолучитьЗначениеВПопытке(OperatingSystem, «FreeVirtualMemory»);
WINInfoOS.InstallDate = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(OperatingSystem, «InstallDate»)); // Дата установки Windows.
WINInfoOS.LargeSystemCache = ПолучитьЗначениеВПопытке(OperatingSystem, «LargeSystemCache»);
WINInfoOS.LastBootUpTime = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(OperatingSystem, «LastBootUpTime»));
WINInfoOS.LocalDateTime = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(OperatingSystem, «LocalDateTime»));
WINInfoOS.Locale = ПолучитьЗначениеВПопытке(OperatingSystem, «Locale»);
WINInfoOS.Manufacturer = ПолучитьЗначениеВПопытке(OperatingSystem, «Manufacturer»);
WINInfoOS.MaxNumberOfProcesses = ПолучитьЗначениеВПопытке(OperatingSystem, «MaxNumberOfProcesses»);
WINInfoOS.MaxProcessMemorySize = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(OperatingSystem, «MaxProcessMemorySize»));
MUILanguagesARRAY = ПолучитьЗначениеВПопытке(OperatingSystem, «MUILanguages»);
MUILanguages = Неопределено;
Попытка
Для Каждого ит ИЗ MUILanguagesARRAY Цикл
MUILanguages = ит;
КонецЦикла;
Исключение
КонецПопытки;
WINInfoOS.MUILanguages = MUILanguages;
WINInfoOS.Name = ПолучитьЗначениеВПопытке(OperatingSystem, «Name»);
WINInfoOS.NumberOfLicensedUsers = ПолучитьЗначениеВПопытке(OperatingSystem, «NumberOfLicensedUsers»);
WINInfoOS.NumberOfProcesses = ПолучитьЗначениеВПопытке(OperatingSystem, «NumberOfProcesses»);
WINInfoOS.NumberOfUsers = ПолучитьЗначениеВПопытке(OperatingSystem, «NumberOfUsers»);
WINInfoOS.OperatingSystemSKU = ПолучитьЗначениеВПопытке(OperatingSystem, «OperatingSystemSKU»);
WINInfoOS.Organization = ПолучитьЗначениеВПопытке(OperatingSystem, «Organization»);
WINInfoOS.OSArchitecture = ПолучитьЗначениеВПопытке(OperatingSystem, «OSArchitecture»);
WINInfoOS.OSLanguage = ПолучитьЗначениеВПопытке(OperatingSystem, «OSLanguage»);
WINInfoOS.OSProductSuite = ПолучитьЗначениеВПопытке(OperatingSystem, «OSProductSuite»);
WINInfoOS.OSType = ПолучитьЗначениеВПопытке(OperatingSystem, «OSType»);
WINInfoOS.OtherTypeDescription = ПолучитьЗначениеВПопытке(OperatingSystem, «OtherTypeDescription»);
WINInfoOS.PAEEnabled = ПолучитьЗначениеВПопытке(OperatingSystem, «PAEEnabled»);
WINInfoOS.PlusProductID = ПолучитьЗначениеВПопытке(OperatingSystem, «PlusProductID»);
WINInfoOS.PlusVersionNumber = ПолучитьЗначениеВПопытке(OperatingSystem, «PlusVersionNumber»);
WINInfoOS.Primary = ПолучитьЗначениеВПопытке(OperatingSystem, «Primary»);
WINInfoOS.ProductType = ПолучитьЗначениеВПопытке(OperatingSystem, «ProductType»);
WINInfoOS.RegisteredUser = ПолучитьЗначениеВПопытке(OperatingSystem, «RegisteredUser»);
WINInfoOS.SerialNumber = ПолучитьЗначениеВПопытке(OperatingSystem, «SerialNumber»);
WINInfoOS.ServicePackMajorVersion = ПолучитьЗначениеВПопытке(OperatingSystem, «ServicePackMajorVersion»);
WINInfoOS.ServicePackMinorVersion = ПолучитьЗначениеВПопытке(OperatingSystem, «ServicePackMinorVersion»);
WINInfoOS.SizeStoredInPagingFiles = ПолучитьЗначениеВПопытке(OperatingSystem, «SizeStoredInPagingFiles»);
WINInfoOS.Status = ПолучитьЗначениеВПопытке(OperatingSystem, «Status»);
WINInfoOS.SuiteMask = ПолучитьЗначениеВПопытке(OperatingSystem, «SuiteMask»);
WINInfoOS.SystemDevice = ПолучитьЗначениеВПопытке(OperatingSystem, «SystemDevice»);
WINInfoOS.SystemDirectory = ПолучитьЗначениеВПопытке(OperatingSystem, «SystemDirectory»);
WINInfoOS.SystemDrive = ПолучитьЗначениеВПопытке(OperatingSystem, «SystemDrive»);
WINInfoOS.TotalSwapSpaceSize = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(OperatingSystem, «TotalSwapSpaceSize»));
WINInfoOS.TotalVirtualMemorySize = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(OperatingSystem, «TotalVirtualMemorySize»));
WINInfoOS.TotalVisibleMemorySize = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(OperatingSystem, «TotalVisibleMemorySize»));
WINInfoOS.Version = ПолучитьЗначениеВПопытке(OperatingSystem, «Version»);
WINInfoOS.WindowsDirectory = ПолучитьЗначениеВПопытке(OperatingSystem, «WindowsDirectory»);
КонецЦикла;
Возврат WINInfo;
КонецФункции
Функция ПолучитьЗначениеВПопытке(хОбъект, хРеквизит)
Попытка
Возврат хОбъект[хРеквизит];
Исключение
Возврат Неопределено;
КонецПопытки;
Возврат Неопределено;
КонецФункции
Функция ПреобразоватьЗначениеВДатуВремя(Значение)
Попытка
Возврат Дата(Лев(Значение,14));
Исключение
Возврат Дата(«00010101»);
КонецПопытки;
Возврат Дата(«00010101»);
КонецФункции
Функция ПреобразоватьЗначениеВЧисло(Значение)
Попытка
Возврат Число(Значение);
Исключение
Возврат 0;
КонецПопытки;
Возврат 0;
КонецФункции
// Процедура Имитация нажатия клавиш Ctrl+Shift+Z для закрытия окна сообщения типа «Контрольная точка №:…»,
// сформированного в другой процедуре.
&НаКлиентеНаСервереБезКонтекста
Процедура SendKeys(KEYS_ENG = «^+z», KEYS_RUS = «^+я»)
Попытка
WshShell = Новый COMОбъект(«Wscript.Shell»);
WshShell.SendKeys(KEYS_ENG); // для случая, если текущей является английская раскладка клавиатуры.
WshShell.SendKeys(KEYS_RUS); // для случая, если текущей является русская раскладка клавиатуры.
// SendKeys(String) — имитируется нажатие клавиши или последовательности клавиш, указанных в параметре String.
// В качестве параметра можно указывать как алфавитно-цифровые символы, так и символы специальных клавиш, например:
// «Enter», «Tab», «F1», «Alt», «Shift», «Ctrl» и т.д.
// Для указания клавиш «Alt», «Shift», «Ctrl» существуют специальные коды:
// «Shift» — +;
// «Ctrl» — ^;
// «Alt» — %.
// Если возникнет необходимость передать специальные символы именно как символы, а не команды,
// нужно заключать их в фигурные скобки, например {+}.
Исключение
КонецПопытки;
КонецПроцедуры
// Функция, возвращающая результат преобразования строкового значения даты в значение в формате даты.
Функция ПреобразоватьИзСтрокиВДату(СтрокаДаты)
Попытка
ScrptCtrl = Новый COMОбъект(«MSScriptControl.ScriptControl»);
ScrptCtrl.Language=«vbscript»;
OutDate = ScrptCtrl.Eval(«CDate(«»» + СтрокаДаты + «»»)»);
Возврат OutDate;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецФункции
// Функция, возвращающая время в миллисекундах или секундах.
//
&НаКлиентеНаСервереБезКонтекста
Функция ВремяВМиллисекундах()
Попытка
Script = Новый COMОбъект(«MSScriptControl.ScriptControl»);
Script.Language = «javascript»;
Script.Timeout = —1;
Время = Script.Eval(«var d = new Date(); d.getTime()»);
Исключение
Время = ТекущаяДата();
КонецПопытки;
Возврат Время;
КонецФункции
// Пример.
//
Процедура ПримерИспользования()
Начало = ВремяВМиллисекундах();
КоличествоСтрок = 0;
Для Каждого Элемент ИЗ Массив Цикл
КоличествоСтрок = КоличествоСтрок + 1;
…
КонецЦикла;
Конец = ВремяВМиллисекундах();
ВремяВыполнения = (Конец — Начало) / 1000;
РезультСтрока = НСтр(«ru = ‘Результат процесса (количество строк = %КоличествоСтрок%, время выполнения = %ВремяВыполнения% с)'»);
РезультСтрока = СтрЗаменить(РезультСтрока, «%КоличествоСтрок%», Строка(КоличествоСтрок));
РезультСтрока = СтрЗаменить(РезультСтрока, «%ВремяВыполнения%», Строка(ВремяВыполнения));
КонецПроцедуры
// Функция задержки выполнения процесса.
//
&НаКлиентеНаСервереБезКонтекста
Процедура ЗадержкаВВыполнении(ВремяОжидания)
Попытка
xPing = «ping -n 1 -w «+Формат(1000*ВремяОжидания, «ЧГ=0″)+» 127.255.255.255″;
WshShell = Новый COMОбъект(«WScript.Shell»);
WshShell.Run(xPing, 0, —1);
Исключение
КонецПопытки;
КонецПроцедуры
// Функция вызова оснастки установки системных Даты и Времени.
// Необходимы права Администратора/Опытного пользователя.
// ОС Windows.
//
&НаКлиентеНаСервереБезКонтекста
Функция SetDateTime()
Попытка
ShellApplication = Новый COMОбъект(«Shell.Application»);
ShellApplication.SetTime();
Исключение
КонецПопытки;
КонецФункции
// Функция вызова оснастки Панели управления.
// Пример: Установка системных Даты и Времени.
// Необходимы права Администратора/Опытного пользователя.
// ОС Windows.
//
&НаКлиентеНаСервереБезКонтекста
Функция ControlPanelItem(Item = «timedate.cpl»)
Попытка
ShellApplication = Новый COMОбъект(«Shell.Application»);
// Открыть Панель управления:
//ShellApplication.ControlPanelItem(«»);
ShellApplication.ControlPanelItem(Item);
// Приложения панели управления:
// access.cpl — специальные возможности.
// appwiz.cpl — установка и удаление программ.
// desk.cpl — настройка экрана.
// hdwwiz.cpl — мастер установки оборудования.
// inetcpl.cpl — свойства обозревателя.
// intl.cpl — язык и региональные стандарты.
// joy.cpl — игровые устройства.
// main.cpl — мышь.
// mmsys.cpl — звуки и аудиоустройства.
// ncpa.cpl — сетевые подключения.
// nusrmgr.cpl — учётные записи пользователей.
// odbccp32.cpl — настройка источников данных ODBC.
// powercfg.cpl — управление электропитанием.
// sysdm.cpl — свойства системы.
// telephon.cpl — телефон и модем.
// timedate.cpl — настройки времени и даты.
Исключение
КонецПопытки;
КонецФункции
// Функция, позволяющая получить Переменные окружения локального компьютера.
//
&НаКлиентеНаСервереБезКонтекста
Функция SystemEnvironment()
ПеременныеОкружения = Новый Структура;
Попытка
WshShell = Новый COMОбъект(«WScript.Shell»);
WshSysEnv = WshShell.Environment(«Process»);
// Имя компьютера. ПеременныеОкружения.Вставить(«COMPUTERNAME» , WshSysEnv.Item(«COMPUTERNAME»));
// Домен Windows компьютера.
ПеременныеОкружения.Вставить(«USERDOMAIN» , WshSysEnv.Item(«USERDOMAIN»));
// Имя контроллера домена, использовавшегося для авторизации текущего пользователя.
ПеременныеОкружения.Вставить(«LOGONSERVER» , WshSysEnv.Item(«LOGONSERVER»));
// Имя активного пользовательского сеанса. // При локальном входе имеет значение «Console».
// Ппри удаленном доступе имеет вид RDP-Tcp#НомерСеанса.
ПеременныеОкружения.Вставить(«SESSIONNAME» , WshSysEnv.Item(«SESSIONNAME»));
// Количество процессоров компьютера.
ПеременныеОкружения.Вставить(«NUMBER_OF_PROCESSORS» , WshSysEnv.Item(«NUMBER_OF_PROCESSORS»));
// Архитектура процессора. Возможные варианты: x86, IA64, AMD64.
ПеременныеОкружения.Вставить(«PROCESSOR_ARCHITECTURE» , WshSysEnv.Item(«PROCESSOR_ARCHITECTURE»));
// Описание процессора.
ПеременныеОкружения.Вставить(«PROCESSOR_IDENTIFIER» , WshSysEnv.Item(«PROCESSOR_IDENTIFIER»));
// Номер модели процессора.
ПеременныеОкружения.Вставить(«PROCESSOR_LEVEL» , WshSysEnv.Item(«PROCESSOR_LEVEL»));
// Ревизия процессора.
ПеременныеОкружения.Вставить(«PROCESSOR_REVISION» , WshSysEnv.Item(«PROCESSOR_REVISION»)); // Операционная Система.
ПеременныеОкружения.Вставить(«OS» , WshSysEnv.Item(«OS»));
// Каталог, в котором установлена Windows.
ПеременныеОкружения.Вставить(«WINDIR» , WshSysEnv.Item(«WINDIR»));
// Диск, на котором расположен корневой каталог Windows.
ПеременныеОкружения.Вставить(«SYSTEMDRIVE» , WshSysEnv.Item(«SYSTEMDRIVE»));
// Путь к корневому каталогу Windows.
ПеременныеОкружения.Вставить(«SYSTEMROOT» , WshSysEnv.Item(«SYSTEMROOT»));
// Каталог «Common Files» (обычно %ProgramFiles%\Common Files).
ПеременныеОкружения.Вставить(«COMMONPROGRAMFILES» , WshSysEnv.Item(«COMMONPROGRAMFILES»));
// Каталог «Common Files» в Program Files (x86).
// Для 64-разрядной ОС (обычно %ProgramFiles(x86)%\Common Files).
ПеременныеОкружения.Вставить(«COMMONPROGRAMFILESx86» , WshSysEnv.Item(«COMMONPROGRAMFILES(x86)»));
// Командный интерпретатор Windows.
ПеременныеОкружения.Вставить(«COMSPEC» , WshSysEnv.Item(«COMSPEC»));
// Путь поиска исполняемых файлов. ПеременныеОкружения.Вставить(«PATH» , WshSysEnv.Item(«PATH»));
// Каталог временных файлов Windows TEMP.
ПеременныеОкружения.Вставить(«TEMP» , WshSysEnv.Item(«TEMP»));
// Каталог временных файлов Windows TMP. ПеременныеОкружения.Вставить(«TMP» , WshSysEnv.Item(«TMP»));
// В Windows 7 возвращает путь к каталогу C:\Users\Public.
ПеременныеОкружения.Вставить(«PUBLIC» , WshSysEnv.Item(«PUBLIC»));
// Каталог общих для всех пользователей документов и настроек. ПеременныеОкружения.Вставить(«ALLUSERSPROFILE» , WshSysEnv.Item(«ALLUSERSPROFILE»));
// Имя пользователя Windows.
ПеременныеОкружения.Вставить(«USERNAME» , WshSysEnv.Item(«USERNAME»));
// Путь к профилю текущего пользователя Windows. ПеременныеОкружения.Вставить(«USERPROFILE» , WshSysEnv.Item(«USERPROFILE»));
// Имя диска локальной рабочей станции, связанного с основным каталогом пользователя.
ПеременныеОкружения.Вставить(«HOMEDRIVE» , WshSysEnv.Item(«HOMEDRIVE»));
// Полный путь к основному каталогу пользователя основании основного каталога. ПеременныеОкружения.Вставить(«HOMEPATH» , WshSysEnv.Item(«HOMEPATH»));
// Сетевой путь к общему основному каталогу пользователя на основании основного каталога. ПеременныеОкружения.Вставить(«HOMESHARE» , WshSysEnv.Item(«HOMESHARE»));.
Исключение
КонецПопытки;
Возврат ПеременныеОкружения;
КонецФункции
// Функция, позволяющая информацию о материнской плате локального/удаленного компьютера.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Струтура:
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_Motherboard(Computer = «.»)
MotherboardInfo = Новый Структура(«Height,Manufacturer,Model,Name,PartNumber,Product,SerialNumber,Version,Width»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_BaseBoard = WinMGMT.ExecQuery(«SELECT * FROM Win32_BaseBoard»);
//Win32_BaseBoard = WinMGMT.ExecQuery(«SELECT * FROM Win32_MotherboardDevice»);
Для Каждого BaseBoard ИЗ Win32_BaseBoard Цикл
MotherboardInfo.Height = BaseBoard.Height;
MotherboardInfo.Manufacturer = BaseBoard.Manufacturer;
MotherboardInfo.Model = BaseBoard.Model;
MotherboardInfo.Name = BaseBoard.Name;
MotherboardInfo.Product = BaseBoard.Product;
MotherboardInfo.SerialNumber = BaseBoard.SerialNumber;
MotherboardInfo.Version = BaseBoard.Version;
MotherboardInfo.Width = BaseBoard.Width;
КонецЦикла;
Исключение
КонецПопытки;
Возврат MotherboardInfo;
КонецФункции
// Функция, позволяющая информацию о BIOS локального/удаленного компьютера.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Струтура:
// Manufacturer, Name, SMBIOSBIOSVersion, ReleaseDate, Version, SerialNumber.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_BIOS(Computer = «.»)
BIOSInfo = Новый Структура(«Manufacturer,Name,SMBIOSBIOSVersion,ReleaseDate,Version,SerialNumber»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
PrimaryBIOS = WinMGMT.ExecQuery(«Select * from Win32_BIOS where PrimaryBIOS = true»);
Для Каждого BIOS ИЗ PrimaryBIOS Цикл
BIOSInfo.Manufacturer = BIOS.Manufacturer;
BIOSInfo.Name = BIOS.Name;
BIOSInfo.SMBIOSBIOSVersion = BIOS.SMBIOSBIOSVersion;
BIOSInfo.ReleaseDate = Дата(Лев(BIOS.ReleaseDate,8));
BIOSInfo.Version = BIOS.Version;
BIOSInfo.SerialNumber = BIOS.SerialNumber;
КонецЦикла;
Исключение
КонецПопытки;
Возврат BIOSInfo;
КонецФункции
// Функция, позволяющая получить информацию о процессоре(ах) на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_Processor(Computer = «.»)
Win32_ProcessorInfo = Новый ТаблицаЗначений;
Win32_ProcessorInfo.Колонки.Добавить(«AddressWidth»);
Win32_ProcessorInfo.Колонки.Добавить(«Architecture»);
Win32_ProcessorInfo.Колонки.Добавить(«Availability»);
Win32_ProcessorInfo.Колонки.Добавить(«Caption»);
Win32_ProcessorInfo.Колонки.Добавить(«ConfigManagerErrorCode»);
Win32_ProcessorInfo.Колонки.Добавить(«ConfigManagerUserConfig»);
Win32_ProcessorInfo.Колонки.Добавить(«CpuStatus»);
Win32_ProcessorInfo.Колонки.Добавить(«CreationClassName»);
Win32_ProcessorInfo.Колонки.Добавить(«CurrentClockSpeed»);
Win32_ProcessorInfo.Колонки.Добавить(«CurrentVoltage»);
Win32_ProcessorInfo.Колонки.Добавить(«DataWidth»);
Win32_ProcessorInfo.Колонки.Добавить(«Description»);
Win32_ProcessorInfo.Колонки.Добавить(«DeviceID»);
Win32_ProcessorInfo.Колонки.Добавить(«ErrorCleared»);
Win32_ProcessorInfo.Колонки.Добавить(«ErrorDescription»);
Win32_ProcessorInfo.Колонки.Добавить(«ExtClock»);
Win32_ProcessorInfo.Колонки.Добавить(«Family»);
Win32_ProcessorInfo.Колонки.Добавить(«InstallDate»);
Win32_ProcessorInfo.Колонки.Добавить(«L2CacheSize»);
Win32_ProcessorInfo.Колонки.Добавить(«L2CacheSpeed»);
Win32_ProcessorInfo.Колонки.Добавить(«L3CacheSize»);
Win32_ProcessorInfo.Колонки.Добавить(«L3CacheSpeed»);
Win32_ProcessorInfo.Колонки.Добавить(«LastErrorCode»);
Win32_ProcessorInfo.Колонки.Добавить(«Level»);
Win32_ProcessorInfo.Колонки.Добавить(«LoadPercentage»);
Win32_ProcessorInfo.Колонки.Добавить(«Manufacturer»);
Win32_ProcessorInfo.Колонки.Добавить(«MaxClockSpeed»);
Win32_ProcessorInfo.Колонки.Добавить(«Name»);
Win32_ProcessorInfo.Колонки.Добавить(«NumberOfCores»);
Win32_ProcessorInfo.Колонки.Добавить(«NumberOfLogicalProcessors»);
Win32_ProcessorInfo.Колонки.Добавить(«OtherFamilyDescription»);
Win32_ProcessorInfo.Колонки.Добавить(«PNPDeviceID»);
Win32_ProcessorInfo.Колонки.Добавить(«PowerManagementCapabilities»);
Win32_ProcessorInfo.Колонки.Добавить(«PowerManagementSupported»);
Win32_ProcessorInfo.Колонки.Добавить(«ProcessorId»);
Win32_ProcessorInfo.Колонки.Добавить(«ProcessorType»);
Win32_ProcessorInfo.Колонки.Добавить(«Revision»);
Win32_ProcessorInfo.Колонки.Добавить(«Role»);
Win32_ProcessorInfo.Колонки.Добавить(«SocketDesignation»);
Win32_ProcessorInfo.Колонки.Добавить(«Status»);
Win32_ProcessorInfo.Колонки.Добавить(«StatusInfo»);
Win32_ProcessorInfo.Колонки.Добавить(«Stepping»);
Win32_ProcessorInfo.Колонки.Добавить(«SystemCreationClassName»);
Win32_ProcessorInfo.Колонки.Добавить(«SystemName»);
Win32_ProcessorInfo.Колонки.Добавить(«UniqueId»);
Win32_ProcessorInfo.Колонки.Добавить(«UpgradeMethod»);
Win32_ProcessorInfo.Колонки.Добавить(«Version»);
Win32_ProcessorInfo.Колонки.Добавить(«VoltageCaps»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_Processor = WinMGMT.ExecQuery(«SELECT * FROM Win32_Processor»);
Для Каждого Processor ИЗ Win32_Processor Цикл
ProcessorInfo = Win32_ProcessorInfo.Добавить();
ProcessorInfo.AddressWidth = Processor.AddressWidth;
ProcessorInfo.Architecture = Processor.Architecture;
ProcessorInfo.Availability = Processor.Availability;
ProcessorInfo.Caption = Processor.Caption;
ProcessorInfo.ConfigManagerErrorCode = Processor.ConfigManagerErrorCode;
ProcessorInfo.ConfigManagerUserConfig = Processor.ConfigManagerUserConfig;
ProcessorInfo.CpuStatus = Processor.CpuStatus;
ProcessorInfo.CreationClassName = Processor.CreationClassName;
ProcessorInfo.CurrentClockSpeed = Processor.CurrentClockSpeed;
ProcessorInfo.CurrentVoltage = Processor.CurrentVoltage;
ProcessorInfo.DataWidth = Processor.DataWidth;
ProcessorInfo.Description = СокрЛП(Processor.Description);
ProcessorInfo.DeviceID = Processor.DeviceID;
ProcessorInfo.ErrorCleared = Processor.ErrorCleared;
ProcessorInfo.ErrorDescription = Processor.ErrorDescription;
ProcessorInfo.ExtClock = Processor.ExtClock;
ProcessorInfo.Family = Processor.Family;
ProcessorInfo.InstallDate = Processor.InstallDate;
ProcessorInfo.L2CacheSize = Processor.L2CacheSize;
ProcessorInfo.L2CacheSpeed = Processor.L2CacheSpeed;
Попытка
ProcessorInfo.L3CacheSize = Processor.L3CacheSize;
ProcessorInfo.L3CacheSpeed = Processor.L3CacheSpeed;
Исключение
КонецПопытки;
ProcessorInfo.LastErrorCode = Processor.LastErrorCode;
ProcessorInfo.Level = Processor.Level;
ProcessorInfo.LoadPercentage = Processor.LoadPercentage;
ProcessorInfo.Manufacturer = Processor.Manufacturer;
ProcessorInfo.MaxClockSpeed = Processor.MaxClockSpeed;
ProcessorInfo.Name = СокрЛП(Processor.Name);
Попытка
ProcessorInfo.NumberOfCores = Processor.NumberOfCores;
ProcessorInfo.NumberOfLogicalProcessors = Processor.NumberOfLogicalProcessors;
Исключение
КонецПопытки;
ProcessorInfo.OtherFamilyDescription = Processor.OtherFamilyDescription;
ProcessorInfo.PNPDeviceID = Processor.PNPDeviceID;
ProcessorInfo.PowerManagementCapabilities = Processor.PowerManagementCapabilities;
ProcessorInfo.PowerManagementSupported = Processor.PowerManagementSupported;
ProcessorInfo.ProcessorId = Processor.ProcessorId;
ProcessorInfo.ProcessorType = Processor.ProcessorType;
ProcessorInfo.Revision = Processor.Revision;
ProcessorInfo.Role = Processor.Role;
ProcessorInfo.SocketDesignation = Processor.SocketDesignation;
ProcessorInfo.Status = Processor.Status;
ProcessorInfo.StatusInfo = Processor.StatusInfo;
ProcessorInfo.Stepping = Processor.Stepping;
ProcessorInfo.SystemCreationClassName = Processor.SystemCreationClassName;
ProcessorInfo.SystemName = Processor.SystemName;
ProcessorInfo.UniqueId = Processor.UniqueId;
ProcessorInfo.UpgradeMethod = Processor.UpgradeMethod;
ProcessorInfo.Version = Processor.Version;
ProcessorInfo.VoltageCaps = Processor.VoltageCaps;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_ProcessorInfo;
КонецФункции
// Функция, позволяющая получить информацию о памяти на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Структура.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_RAM(Computer = «.»)
RAMInfo = Новый Структура(«AvailableVirtualMemory,Caption,Description,Name,SettingID,TotalPageFileSpace,TotalPhysicalMemory,TotalVirtualMemory»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_LogicalMemoryConfiguration = WinMGMT.ExecQuery(«SELECT * FROM Win32_LogicalMemoryConfiguration»);
Для Каждого LogicalMemoryConfiguration ИЗ Win32_LogicalMemoryConfiguration Цикл
RAMInfo.AvailableVirtualMemory = LogicalMemoryConfiguration.AvailableVirtualMemory;
RAMInfo.Caption = LogicalMemoryConfiguration.Caption;
RAMInfo.Description = LogicalMemoryConfiguration.Description;
RAMInfo.Name = LogicalMemoryConfiguration.Name;
RAMInfo.SettingID = LogicalMemoryConfiguration.SettingID;
RAMInfo.TotalPageFileSpace = LogicalMemoryConfiguration.TotalPageFileSpace;
RAMInfo.TotalPhysicalMemory = LogicalMemoryConfiguration.TotalPhysicalMemory;
RAMInfo.TotalVirtualMemory = LogicalMemoryConfiguration.TotalVirtualMemory;
КонецЦикла;
Исключение
КонецПопытки;
Возврат RAMInfo;
КонецФункции
// Функция, позволяющая получить информацию об объеме установленной памяти на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Структура.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_TotalPhysicalMemory(Computer = «.»)
PhysicalMemoryInfo = Новый Структура;
PhysicalMemoryInfo.Вставить(«Name»);
PhysicalMemoryInfo.Вставить(«TotalPhysicalMemory»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_TotalPhysicalMemory = WinMGMT.ExecQuery(«SELECT TotalPhysicalMemory FROM Win32_ComputerSystem»);
Для Каждого PhysicalMemory ИЗ Win32_TotalPhysicalMemory Цикл
PhysicalMemoryInfo.Name = PhysicalMemory.Name;
PhysicalMemoryInfo.TotalPhysicalMemory = PhysicalMemory.TotalPhysicalMemory;
Прервать;
КонецЦикла;
Исключение
КонецПопытки;
Возврат PhysicalMemoryInfo;
КонецФункции
// Функция, позволяющая получить информацию о физической памяти на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
Функция Computer_PhysicalMemory(Computer = «.»)
Перем WinMGMT;
Перем Win32_PhysicalMemory, PhysicalMemory;
Перем PhysicalMemoryInfo, PHMemory;
PhysicalMemoryInfo = Новый ТаблицаЗначений;
PhysicalMemoryInfo.Колонки.Добавить(«BankLabel»);
PhysicalMemoryInfo.Колонки.Добавить(«Capacity»);
PhysicalMemoryInfo.Колонки.Добавить(«Caption»);
PhysicalMemoryInfo.Колонки.Добавить(«CreationClassName»);
PhysicalMemoryInfo.Колонки.Добавить(«DataWidth»);
PhysicalMemoryInfo.Колонки.Добавить(«Description»);
PhysicalMemoryInfo.Колонки.Добавить(«DeviceLocator»);
PhysicalMemoryInfo.Колонки.Добавить(«FormFactor»);
PhysicalMemoryInfo.Колонки.Добавить(«HotSwappable»);
PhysicalMemoryInfo.Колонки.Добавить(«InstallDate»);
PhysicalMemoryInfo.Колонки.Добавить(«InterleaveDataDepth»);
PhysicalMemoryInfo.Колонки.Добавить(«InterleavePosition»);
PhysicalMemoryInfo.Колонки.Добавить(«Manufacturer»);
PhysicalMemoryInfo.Колонки.Добавить(«MemoryType»);
PhysicalMemoryInfo.Колонки.Добавить(«Model»);
PhysicalMemoryInfo.Колонки.Добавить(«Name»);
PhysicalMemoryInfo.Колонки.Добавить(«OtherIdentifyingInfo»);
PhysicalMemoryInfo.Колонки.Добавить(«PartNumber»);
PhysicalMemoryInfo.Колонки.Добавить(«PositionInRow»);
PhysicalMemoryInfo.Колонки.Добавить(«PoweredOn»);
PhysicalMemoryInfo.Колонки.Добавить(«Removable»);
PhysicalMemoryInfo.Колонки.Добавить(«Replaceable»);
PhysicalMemoryInfo.Колонки.Добавить(«SerialNumber»);
PhysicalMemoryInfo.Колонки.Добавить(«SKU»);
PhysicalMemoryInfo.Колонки.Добавить(«Speed»);
PhysicalMemoryInfo.Колонки.Добавить(«Status»);
PhysicalMemoryInfo.Колонки.Добавить(«Tag»);
PhysicalMemoryInfo.Колонки.Добавить(«TotalWidth»);
PhysicalMemoryInfo.Колонки.Добавить(«TypeDetail»);
PhysicalMemoryInfo.Колонки.Добавить(«Version»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_PhysicalMemory = WinMGMT.ExecQuery(«SELECT * FROM Win32_PhysicalMemory»);
Исключение
Возврат PhysicalMemoryInfo;
КонецПопытки;
Для Каждого PhysicalMemory ИЗ Win32_PhysicalMemory Цикл
PHMemory = PhysicalMemoryInfo.Добавить();
PHMemory.BankLabel = ПолучитьЗначениеВПопытке(PhysicalMemory, «BankLabel»);
PHMemory.Capacity = ПреобразоватьЗначениеВЧисло(ПолучитьЗначениеВПопытке(PhysicalMemory, «Capacity»));
PHMemory.Capacity = PHMemory.Capacity/1024/1024;
PHMemory.Caption = ПолучитьЗначениеВПопытке(PhysicalMemory, «Caption»);
PHMemory.CreationClassName = ПолучитьЗначениеВПопытке(PhysicalMemory, «CreationClassName»);
PHMemory.DataWidth = ПолучитьЗначениеВПопытке(PhysicalMemory, «DataWidth»);
PHMemory.Description = ПолучитьЗначениеВПопытке(PhysicalMemory, «Description»);
PHMemory.DeviceLocator = ПолучитьЗначениеВПопытке(PhysicalMemory, «DeviceLocator»);
PHMemory.FormFactor = ПолучитьЗначениеВПопытке(PhysicalMemory, «FormFactor»);
PHMemory.HotSwappable = ПолучитьЗначениеВПопытке(PhysicalMemory, «HotSwappable»);
PHMemory.InstallDate = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(PhysicalMemory, «InstallDate»));
PHMemory.InterleaveDataDepth = ПолучитьЗначениеВПопытке(PhysicalMemory, «InterleaveDataDepth»);
PHMemory.InterleavePosition = ПолучитьЗначениеВПопытке(PhysicalMemory, «InterleavePosition»);
PHMemory.Manufacturer = ПолучитьЗначениеВПопытке(PhysicalMemory, «Manufacturer»);
PHMemory.MemoryType = ПолучитьЗначениеВПопытке(PhysicalMemory, «MemoryType»);
PHMemory.Model = ПолучитьЗначениеВПопытке(PhysicalMemory, «Model»);
PHMemory.Name = ПолучитьЗначениеВПопытке(PhysicalMemory, «Name»);
PHMemory.OtherIdentifyingInfo = ПолучитьЗначениеВПопытке(PhysicalMemory, «OtherIdentifyingInfo»);
PHMemory.PartNumber = ПолучитьЗначениеВПопытке(PhysicalMemory, «PartNumber»);
PHMemory.PositionInRow = ПолучитьЗначениеВПопытке(PhysicalMemory, «PositionInRow»);
PHMemory.PoweredOn = ПолучитьЗначениеВПопытке(PhysicalMemory, «PoweredOn»);
PHMemory.Removable = ПолучитьЗначениеВПопытке(PhysicalMemory, «Removable»);
PHMemory.Replaceable = ПолучитьЗначениеВПопытке(PhysicalMemory, «Replaceable»);
PHMemory.SerialNumber = ПолучитьЗначениеВПопытке(PhysicalMemory, «SerialNumber»);
PHMemory.SKU = ПолучитьЗначениеВПопытке(PhysicalMemory, «SKU»);
PHMemory.Speed = ПолучитьЗначениеВПопытке(PhysicalMemory, «Speed»);
PHMemory.Status = ПолучитьЗначениеВПопытке(PhysicalMemory, «Status»);
PHMemory.Tag = ПолучитьЗначениеВПопытке(PhysicalMemory, «Tag»);
PHMemory.TotalWidth = ПолучитьЗначениеВПопытке(PhysicalMemory, «TotalWidth»);
PHMemory.TypeDetail = ПолучитьЗначениеВПопытке(PhysicalMemory, «TypeDetail»);
PHMemory.Version = ПолучитьЗначениеВПопытке(PhysicalMemory, «Version»);
КонецЦикла;
Возврат PhysicalMemoryInfo;
КонецФункции
// Функция, позволяющая получить информацию о виртуальной памяти на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_VirtualMemory(Computer = «.»)
VirtualMemoryInfo = Новый ТаблицаЗначений;
VirtualMemoryInfo.Колонки.Добавить(«AllocatedBaseSize»);
VirtualMemoryInfo.Колонки.Добавить(«Caption»);
VirtualMemoryInfo.Колонки.Добавить(«CurrentUsage»);
VirtualMemoryInfo.Колонки.Добавить(«Description»);
VirtualMemoryInfo.Колонки.Добавить(«InstallDate»);
VirtualMemoryInfo.Колонки.Добавить(«Name»);
VirtualMemoryInfo.Колонки.Добавить(«PeakUsage»);
VirtualMemoryInfo.Колонки.Добавить(«Status»);
VirtualMemoryInfo.Колонки.Добавить(«TempPageFile»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_PageFileUsage = WinMGMT.ExecQuery(«SELECT * FROM Win32_PageFileUsage»);
Для Каждого PageFileUsage ИЗ Win32_PageFileUsage Цикл
PageFileUsageInfo = VirtualMemoryInfo.Добавить();
PageFileUsageInfo.AllocatedBaseSize = PageFileUsage.AllocatedBaseSize;
PageFileUsageInfo.Caption = PageFileUsage.Caption;
PageFileUsageInfo.CurrentUsage = PageFileUsage.CurrentUsage;
PageFileUsageInfo.Description = PageFileUsage.Description;
PageFileUsageInfo.InstallDate = Дата(Лев(PageFileUsage.InstallDate,14));
PageFileUsageInfo.Name = PageFileUsage.Name;
PageFileUsageInfo.PeakUsage = PageFileUsage.PeakUsage;
PageFileUsageInfo.Status = PageFileUsage.Status;
PageFileUsageInfo.TempPageFile = PageFileUsage.TempPageFile;
КонецЦикла;
Исключение
КонецПопытки;
Возврат VirtualMemoryInfo;
КонецФункции
// Функция, позволяющая получить информацию о видео на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_Video(Computer = «.»)
Win32_VideoControllerInfo = Новый ТаблицаЗначений;
Win32_VideoControllerInfo.Колонки.Добавить(«AcceleratorCapabilities»);
Win32_VideoControllerInfo.Колонки.Добавить(«AdapterCompatibility»);
Win32_VideoControllerInfo.Колонки.Добавить(«AdapterDACType»);
Win32_VideoControllerInfo.Колонки.Добавить(«AdapterRAM»);
Win32_VideoControllerInfo.Колонки.Добавить(«Availability»);
Win32_VideoControllerInfo.Колонки.Добавить(«CapabilityDescriptions»);
Win32_VideoControllerInfo.Колонки.Добавить(«Caption»);
Win32_VideoControllerInfo.Колонки.Добавить(«ColorTableEntries»);
Win32_VideoControllerInfo.Колонки.Добавить(«ConfigManagerErrorCode»);
Win32_VideoControllerInfo.Колонки.Добавить(«ConfigManagerUserConfig»);
Win32_VideoControllerInfo.Колонки.Добавить(«CreationClassName»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentBitsPerPixel»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentHorizontalResolution»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentNumberOfColors»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentNumberOfColumns»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentNumberOfRows»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentRefreshRate»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentScanMode»);
Win32_VideoControllerInfo.Колонки.Добавить(«CurrentVerticalResolution»);
Win32_VideoControllerInfo.Колонки.Добавить(«Description»);
Win32_VideoControllerInfo.Колонки.Добавить(«DeviceID»);
Win32_VideoControllerInfo.Колонки.Добавить(«DeviceSpecificPens»);
Win32_VideoControllerInfo.Колонки.Добавить(«DitherType»);
Win32_VideoControllerInfo.Колонки.Добавить(«DriverDate»);
Win32_VideoControllerInfo.Колонки.Добавить(«DriverVersion»);
Win32_VideoControllerInfo.Колонки.Добавить(«ErrorCleared»);
Win32_VideoControllerInfo.Колонки.Добавить(«ErrorDescription»);
Win32_VideoControllerInfo.Колонки.Добавить(«ICMIntent»);
Win32_VideoControllerInfo.Колонки.Добавить(«ICMMethod»);
Win32_VideoControllerInfo.Колонки.Добавить(«InfFilename»);
Win32_VideoControllerInfo.Колонки.Добавить(«InfSection»);
Win32_VideoControllerInfo.Колонки.Добавить(«InstallDate»);
Win32_VideoControllerInfo.Колонки.Добавить(«InstalledDisplayDrivers»);
Win32_VideoControllerInfo.Колонки.Добавить(«LastErrorCode»);
Win32_VideoControllerInfo.Колонки.Добавить(«MaxMemorySupported»);
Win32_VideoControllerInfo.Колонки.Добавить(«MaxNumberControlled»);
Win32_VideoControllerInfo.Колонки.Добавить(«MaxRefreshRate»);
Win32_VideoControllerInfo.Колонки.Добавить(«MinRefreshRate»);
Win32_VideoControllerInfo.Колонки.Добавить(«Monochrome»);
Win32_VideoControllerInfo.Колонки.Добавить(«Name»);
Win32_VideoControllerInfo.Колонки.Добавить(«NumberOfColorPlanes»);
Win32_VideoControllerInfo.Колонки.Добавить(«NumberOfVideoPages»);
Win32_VideoControllerInfo.Колонки.Добавить(«PNPDeviceID»);
Win32_VideoControllerInfo.Колонки.Добавить(«PowerManagementCapabilities»);
Win32_VideoControllerInfo.Колонки.Добавить(«PowerManagementSupported»);
Win32_VideoControllerInfo.Колонки.Добавить(«ProtocolSupported»);
Win32_VideoControllerInfo.Колонки.Добавить(«ReservedSystemPaletteEntries»);
Win32_VideoControllerInfo.Колонки.Добавить(«SpecificationVersion»);
Win32_VideoControllerInfo.Колонки.Добавить(«Status»);
Win32_VideoControllerInfo.Колонки.Добавить(«StatusInfo»);
Win32_VideoControllerInfo.Колонки.Добавить(«SystemCreationClassName»);
Win32_VideoControllerInfo.Колонки.Добавить(«SystemName»);
Win32_VideoControllerInfo.Колонки.Добавить(«SystemPaletteEntries»);
Win32_VideoControllerInfo.Колонки.Добавить(«TimeOfLastReset»);
Win32_VideoControllerInfo.Колонки.Добавить(«VideoArchitecture»);
Win32_VideoControllerInfo.Колонки.Добавить(«VideoMemoryType»);
Win32_VideoControllerInfo.Колонки.Добавить(«VideoMode»);
Win32_VideoControllerInfo.Колонки.Добавить(«VideoModeDescription»);
Win32_VideoControllerInfo.Колонки.Добавить(«VideoProcessor»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_VideoController = WinMGMT.ExecQuery(«SELECT * FROM Win32_VideoController»);
Для Каждого VideoController ИЗ Win32_VideoController Цикл
VideoControllerInfo = Win32_VideoControllerInfo.Добавить();
VideoControllerInfo.AcceleratorCapabilities = VideoController.AcceleratorCapabilities;
VideoControllerInfo.AdapterCompatibility = VideoController.AdapterCompatibility;
VideoControllerInfo.AdapterDACType = VideoController.AdapterDACType;
VideoControllerInfo.AdapterRAM = VideoController.AdapterRAM;
VideoControllerInfo.Availability = VideoController.Availability;
VideoControllerInfo.CapabilityDescriptions = VideoController.CapabilityDescriptions;
VideoControllerInfo.Caption = VideoController.Caption;
VideoControllerInfo.ColorTableEntries = VideoController.ColorTableEntries;
VideoControllerInfo.ConfigManagerErrorCode = VideoController.ConfigManagerErrorCode;
VideoControllerInfo.ConfigManagerUserConfig = VideoController.ConfigManagerUserConfig;
VideoControllerInfo.CreationClassName = VideoController.CreationClassName;
VideoControllerInfo.CurrentBitsPerPixel = VideoController.CurrentBitsPerPixel;
VideoControllerInfo.CurrentHorizontalResolution = VideoController.CurrentHorizontalResolution;
VideoControllerInfo.CurrentNumberOfColors = VideoController.CurrentNumberOfColors;
VideoControllerInfo.CurrentNumberOfColumns = VideoController.CurrentNumberOfColumns;
VideoControllerInfo.CurrentNumberOfRows = VideoController.CurrentNumberOfRows;
VideoControllerInfo.CurrentRefreshRate = VideoController.CurrentRefreshRate;
VideoControllerInfo.CurrentScanMode = VideoController.CurrentScanMode;
VideoControllerInfo.CurrentVerticalResolution = VideoController.CurrentVerticalResolution;
VideoControllerInfo.Description = VideoController.Description;
VideoControllerInfo.DeviceID = VideoController.DeviceID;
VideoControllerInfo.DeviceSpecificPens = VideoController.DeviceSpecificPens;
VideoControllerInfo.DitherType = VideoController.DitherType;
VideoControllerInfo.DriverDate = VideoController.DriverDate;
VideoControllerInfo.DriverVersion = VideoController.DriverVersion;
VideoControllerInfo.ErrorCleared = VideoController.ErrorCleared;
VideoControllerInfo.ErrorDescription = VideoController.ErrorDescription;
VideoControllerInfo.ICMIntent = VideoController.ICMIntent;
VideoControllerInfo.ICMMethod = VideoController.ICMMethod;
VideoControllerInfo.InfFilename = VideoController.InfFilename;
VideoControllerInfo.InfSection = VideoController.InfSection;
VideoControllerInfo.InstallDate = VideoController.InstallDate;
VideoControllerInfo.InstalledDisplayDrivers = VideoController.InstalledDisplayDrivers;
VideoControllerInfo.LastErrorCode = VideoController.LastErrorCode;
VideoControllerInfo.MaxMemorySupported = VideoController.MaxMemorySupported;
VideoControllerInfo.MaxNumberControlled = VideoController.MaxNumberControlled;
VideoControllerInfo.MaxRefreshRate = VideoController.MaxRefreshRate;
VideoControllerInfo.MinRefreshRate = VideoController.MinRefreshRate;
VideoControllerInfo.Monochrome = VideoController.Monochrome;
VideoControllerInfo.Name = VideoController.Name;
VideoControllerInfo.NumberOfColorPlanes = VideoController.NumberOfColorPlanes;
VideoControllerInfo.NumberOfVideoPages = VideoController.NumberOfVideoPages;
VideoControllerInfo.PNPDeviceID = VideoController.PNPDeviceID;
VideoControllerInfo.PowerManagementCapabilities = VideoController.PowerManagementCapabilities;
VideoControllerInfo.PowerManagementSupported = VideoController.PowerManagementSupported;
VideoControllerInfo.ProtocolSupported = VideoController.ProtocolSupported;
VideoControllerInfo.ReservedSystemPaletteEntries = VideoController.ReservedSystemPaletteEntries;
VideoControllerInfo.SpecificationVersion = VideoController.SpecificationVersion;
VideoControllerInfo.Status = VideoController.Status;
VideoControllerInfo.StatusInfo = VideoController.StatusInfo;
VideoControllerInfo.SystemCreationClassName = VideoController.SystemCreationClassName;
VideoControllerInfo.SystemName = VideoController.SystemName;
VideoControllerInfo.SystemPaletteEntries = VideoController.SystemPaletteEntries;
VideoControllerInfo.TimeOfLastReset = VideoController.TimeOfLastReset;
VideoControllerInfo.VideoArchitecture = VideoController.VideoArchitecture;
VideoControllerInfo.VideoMemoryType = VideoController.VideoMemoryType;
VideoControllerInfo.VideoMode = VideoController.VideoMode;
VideoControllerInfo.VideoModeDescription = VideoController.VideoModeDescription;
VideoControllerInfo.VideoProcessor = VideoController.VideoProcessor;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_VideoControllerInfo;
КонецФункции
// Функция, позволяющая получить информацию о мониторе(ах) на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
Функция Computer_Monitor(Computer = «.»)
Перем WinMGMT;
Перем Win32_DesktopMonitor, Monitor, MonitorInfo;
Перем Win32_DesktopMonitorInfo;
Win32_DesktopMonitorInfo = Новый ТаблицаЗначений;
Win32_DesktopMonitorInfo.Колонки.Добавить(«Availability»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«Bandwidth»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«Caption»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ConfigManagerErrorCode»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ConfigManagerUserConfig»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«CreationClassName»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«Description»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«DeviceID»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«DisplayType»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ErrorCleared»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ErrorDescription»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«InstallDate»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«IsLocked»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«LastErrorCode»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«MonitorManufacturer»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«MonitorType»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«Name»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«PixelsPerXLogicalInch»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«PixelsPerYLogicalInch»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«PNPDeviceID»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«PowerManagementCapabilities»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«PowerManagementSupported»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ScreenHeight»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«ScreenWidth»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«Status»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«StatusInfo»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«SystemCreationClassName»);
Win32_DesktopMonitorInfo.Колонки.Добавить(«SystemName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_DesktopMonitor = WinMGMT.ExecQuery(«SELECT * FROM Win32_DesktopMonitor»);
Исключение
Возврат Win32_DesktopMonitorInfo;
КонецПопытки;
Для Каждого Monitor ИЗ Win32_DesktopMonitor Цикл
MonitorInfo = Win32_DesktopMonitorInfo.Добавить();
MonitorInfo.Availability = ПолучитьЗначениеВПопытке(Monitor, «Availability»);
MonitorInfo.Bandwidth = ПолучитьЗначениеВПопытке(Monitor, «Bandwidth»);
MonitorInfo.Caption = ПолучитьЗначениеВПопытке(Monitor, «Caption»);
MonitorInfo.ConfigManagerErrorCode = ПолучитьЗначениеВПопытке(Monitor, «ConfigManagerErrorCode»);
MonitorInfo.ConfigManagerUserConfig = ПолучитьЗначениеВПопытке(Monitor, «ConfigManagerUserConfig»);
MonitorInfo.CreationClassName = ПолучитьЗначениеВПопытке(Monitor, «CreationClassName»);
MonitorInfo.Description = ПолучитьЗначениеВПопытке(Monitor, «Description»);
MonitorInfo.DeviceID = ПолучитьЗначениеВПопытке(Monitor, «DeviceID»);
MonitorInfo.DisplayType = ПолучитьЗначениеВПопытке(Monitor, «DisplayType»);
MonitorInfo.ErrorCleared = ПолучитьЗначениеВПопытке(Monitor, «ErrorCleared»);
MonitorInfo.ErrorDescription = ПолучитьЗначениеВПопытке(Monitor, «ErrorDescription»);
MonitorInfo.InstallDate = ПолучитьЗначениеВПопытке(Monitor, «InstallDate»);
MonitorInfo.IsLocked = ПолучитьЗначениеВПопытке(Monitor, «IsLocked»);
MonitorInfo.LastErrorCode = ПолучитьЗначениеВПопытке(Monitor, «LastErrorCode»);
MonitorInfo.MonitorManufacturer = ПолучитьЗначениеВПопытке(Monitor, «MonitorManufacturer»);
MonitorInfo.MonitorType = ПолучитьЗначениеВПопытке(Monitor, «MonitorType»);
MonitorInfo.Name = ПолучитьЗначениеВПопытке(Monitor, «Name»);
MonitorInfo.PixelsPerXLogicalInch = ПолучитьЗначениеВПопытке(Monitor, «PixelsPerXLogicalInch»);
MonitorInfo.PixelsPerYLogicalInch = ПолучитьЗначениеВПопытке(Monitor, «PixelsPerYLogicalInch»);
MonitorInfo.PNPDeviceID = ПолучитьЗначениеВПопытке(Monitor, «PNPDeviceID»);
MonitorInfo.PowerManagementCapabilities = ПолучитьЗначениеВПопытке(Monitor, «PowerManagementCapabilities»);
MonitorInfo.PowerManagementSupported = ПолучитьЗначениеВПопытке(Monitor, «PowerManagementSupported»);
MonitorInfo.ScreenHeight = ПолучитьЗначениеВПопытке(Monitor, «ScreenHeight»);
MonitorInfo.ScreenWidth = ПолучитьЗначениеВПопытке(Monitor, «ScreenWidth»);
MonitorInfo.Status = ПолучитьЗначениеВПопытке(Monitor, «Status»);
MonitorInfo.StatusInfo = ПолучитьЗначениеВПопытке(Monitor, «StatusInfo»);
MonitorInfo.SystemCreationClassName = ПолучитьЗначениеВПопытке(Monitor, «SystemCreationClassName»);
MonitorInfo.SystemName = ПолучитьЗначениеВПопытке(Monitor, «SystemName»);
КонецЦикла;
Возврат Win32_DesktopMonitorInfo;
КонецФункции
// Функция, позволяющая получить список подключенных принтеров локального/удаленного компьютера,
// в т.ч. и предоставленных в общее пользование.
// Параметры:
// Computer — Имя компьютера, список принтеров которого необходимо получить.
// Возвращаемое значение:
// TPrinters — Таблица значений.
// Колонки:
// Computer — Имя компьюьера, на котором установлен(ы) прентер(а).
// LocalName- Локальное имя принтера на компьютере.
// Shared — Общий/Локальный.
// ShareName- Имя принтера для общего доступа.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_Printer(Computer = «.»)
TPrinters = Новый ТаблицаЗначений;
TPrinters.Колонки.Добавить(«Computer»);
TPrinters.Колонки.Добавить(«LocalName»);
TPrinters.Колонки.Добавить(«Shared»);
TPrinters.Колонки.Добавить(«ShareName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Printers = WinMGMT.ExecQuery(«Select * from Win32_Printer»);
Для Каждого Printer ИЗ Printers Цикл
НоваяСтрока = TPrinters.Добавить();
НоваяСтрока.Computer = Printer.SystemName;
НоваяСтрока.LocalName = Printer.Name;
НоваяСтрока.Shared = Printer.Shared;
Если Printer.Shared Тогда
НоваяСтрока.ShareName = Printer.ShareName;
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
Возврат TPrinters;
КонецФункции
// Процедура подключения сетевого принтера.
//
&НаКлиентеНаСервереБезКонтекста
Процедура Network_Printer(ИмяСервера, ИмяПринтера)
Network = Новый COMobject(«Wscript.Network»);
Попытка
// Установка принтера
Network.AddWindowsPrinterConnection(«\\»+ИмяСервера+«\»+ИмяПринтера);
// Принтер по-умолчанию
Network.SetDefaultPrinter(«\\»+ИмяСервера+«\»+ИмяПринтера);
Исключение
Сообщить(«Невозможно произвести подключение принтера.»);
КонецПопытки;
КонецПроцедуры
// Функция, позволяющая получить Имя пользователя, зарегистрировавшегося на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// DomainName(ComputerName)\UserName — Имя пользователя.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция User_ComputerSystem(Computer = «.»)
UserComputer = «»;
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
ComputerSystem = WinMGMT.ExecQuery(«SELECT * FROM Win32_ComputerSystem»);
Для Каждого System ИЗ ComputerSystem Цикл
Возврат System.UserName;
КонецЦикла;
Исключение
КонецПопытки;
Возврат UserComputer;
КонецФункции
// Функция, позволяющая получить локальные имена: Компьютера, Пользователя, Домена.
//
&НаКлиентеНаСервереБезКонтекста
Функция GET_ComputerName_UserName_UserDomain()
C_U_D = Новый Структура;
Попытка
Network = Новый COMobject(«Wscript.Network»);
C_U_D.Вставить(«ComputerName», Network.ComputerName);
C_U_D.Вставить(«UserName», Network.UserName);
C_U_D.Вставить(«UserDomain», Network.UserDomain);
Исключение
КонецПопытки;
Возврат C_U_D;
КонецФункции
// Функция, позволяющая получить список учётных записей на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_UserList(Computer = «.», АдминистраторПоУмолчанию, ГруппыИПользователи)
Win32_UserAccountInfo = Новый ТаблицаЗначений;
Win32_UserAccountInfo.Колонки.Добавить(«AccountType»);
Win32_UserAccountInfo.Колонки.Добавить(«Caption»);
Win32_UserAccountInfo.Колонки.Добавить(«Description»);
Win32_UserAccountInfo.Колонки.Добавить(«Disabled»);
Win32_UserAccountInfo.Колонки.Добавить(«Domain»);
Win32_UserAccountInfo.Колонки.Добавить(«FullName»);
Win32_UserAccountInfo.Колонки.Добавить(«InstallDate»);
Win32_UserAccountInfo.Колонки.Добавить(«LocalAccount»);
Win32_UserAccountInfo.Колонки.Добавить(«Lockout»);
Win32_UserAccountInfo.Колонки.Добавить(«Name»);
Win32_UserAccountInfo.Колонки.Добавить(«PasswordChangeable»);
Win32_UserAccountInfo.Колонки.Добавить(«PasswordExpires»);
Win32_UserAccountInfo.Колонки.Добавить(«PasswordRequired»);
Win32_UserAccountInfo.Колонки.Добавить(«SID»);
// Дополнительно.
Win32_UserAccountInfo.Колонки.Добавить(«BuildINAdministrator»);
Win32_UserAccountInfo.Колонки.Добавить(«Group»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
//Win32_UserAccount = WinMGMT.ExecQuery(«SELECT * FROM Win32_UserAccount Where LocalAccount = True»); // Загрузка процессора 75%.
Win32_UserAccount = WinMGMT.ExecQuery(«SELECT * FROM Win32_UserAccount»);
Для Каждого UserAccount ИЗ Win32_UserAccount Цикл
UserAccountInfo = Win32_UserAccountInfo.Добавить();
UserAccountInfo.AccountType = UserAccount.AccountType;
UserAccountInfo.Caption = UserAccount.Caption;
UserAccountInfo.Description = UserAccount.Description;
UserAccountInfo.Disabled = UserAccount.Disabled;
UserAccountInfo.Domain = UserAccount.Domain;
UserAccountInfo.FullName = UserAccount.FullName;
UserAccountInfo.InstallDate = UserAccount.InstallDate;
UserAccountInfo.LocalAccount = UserAccount.LocalAccount;
UserAccountInfo.Lockout = UserAccount.Lockout;
UserAccountInfo.Name = UserAccount.Name;
UserAccountInfo.PasswordChangeable = UserAccount.PasswordChangeable;
UserAccountInfo.PasswordExpires = UserAccount.PasswordExpires;
UserAccountInfo.PasswordRequired = UserAccount.PasswordRequired;
UserAccountInfo.SID = UserAccount.SID;
// Флажок Встроенная учетная запись администратора.
UserAccountInfo.BuildINAdministrator = UserAccount.Name = АдминистраторПоУмолчанию.Name;
// Группы, в которые входит пользователь.
Отбор = Новый Структура(«User», UserAccount.Name);
СтрокиТаблицыГруппыИПользователи = ГруппыИПользователи.НайтиСтроки(Отбор);
UserAccountInfo.Group = «»;
Для Каждого СтрокаТаблицы ИЗ СтрокиТаблицыГруппыИПользователи Цикл
UserAccountInfo.Group = UserAccountInfo.Group + СтрокаТаблицы.Group + «; «;
КонецЦикла;
Если СтрДлина(UserAccountInfo.Group) > 0 Тогда
UserAccountInfo.Group = Лев(UserAccountInfo.Group, СтрДлина(UserAccountInfo.Group)-2);
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_UserAccountInfo;
КонецФункции
// Функция, позволяющая получить список групп пользователей на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_GroupList(Computer = «.»)
Win32_GroupInfo = Новый ТаблицаЗначений;
Win32_GroupInfo.Колонки.Добавить(«Caption»);
Win32_GroupInfo.Колонки.Добавить(«Description»);
Win32_GroupInfo.Колонки.Добавить(«Domain»);
Win32_GroupInfo.Колонки.Добавить(«LocalAccount»);
Win32_GroupInfo.Колонки.Добавить(«Name»);
Win32_GroupInfo.Колонки.Добавить(«SID»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_Group = WinMGMT.ExecQuery(«SELECT * FROM Win32_Group Where LocalAccount = True»);
Для Каждого Group ИЗ Win32_Group Цикл
GroupInfo = Win32_GroupInfo.Добавить();
GroupInfo.Caption = Group.Caption;
GroupInfo.Description = Group.Description;
GroupInfo.Domain = Group.Domain;
GroupInfo.LocalAccount = Group.LocalAccount;
GroupInfo.Name = Group.Name;
GroupInfo.SID = Group.SID;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_GroupInfo;
КонецФункции
// Функция, позволяющая получить список групп и их пользователей на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_GroupUsersList(Computer = «.»)
Win32_GroupUsersInfo = Новый ТаблицаЗначений;
Win32_GroupUsersInfo.Колонки.Добавить(«Group»);
Win32_GroupUsersInfo.Колонки.Добавить(«User»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_GroupUser = WinMGMT.ExecQuery(«SELECT * FROM Win32_GroupUser WHERE GroupComponent IS NOT NULL»);
Для Каждого GroupUser ИЗ Win32_GroupUser Цикл
GroupInfo = Win32_GroupUsersInfo.Добавить();
// Группа.
GroupComponent = GroupUser.GroupComponent;
ПозицицияИмени = Найти(GroupComponent, «Name=»);
GroupInfo.Group = Сред(GroupComponent, ПозицицияИмени+6);
GroupInfo.Group = СтрЗаменить(GroupInfo.Group, «»»», «»);
// Пользователь.
PartComponent = GroupUser.PartComponent;
ПозицицияИмени = Найти(PartComponent, «Name=»);
GroupInfo.User = Сред(PartComponent, ПозицицияИмени+6);
GroupInfo.User = СтрЗаменить(GroupInfo.User, «»»», «»);
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_GroupUsersInfo;
КонецФункции
// Функция, позволяющая получить данные встроенной учетной записи Администратора на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Структура.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_BuildINAdministrator(Computer = «.»)
BuildINAdministratorInfo = Новый Структура(«AccountType,Caption,Description,Disabled,Domain,FullName,InstallDate,LocalAccount, Lockout,Name,PasswordChangeable,PasswordExpires,PasswordRequired,SID»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
//Win32_UserAccount = WinMGMT.ExecQuery(«SELECT * FROM Win32_UserAccount Where LocalAccount = True»); // Загрузка процессора 75%.
Win32_UserAccount = WinMGMT.ExecQuery(«SELECT * FROM Win32_UserAccount»);
Для Каждого UserAccount ИЗ Win32_UserAccount Цикл
AdmSID = Сред(UserAccount.SID,1,6) + «*» + Прав(UserAccount.SID, 4);
Если AdmSID = «S-1-5-*-500» Тогда
BuildINAdministratorInfo.AccountType = UserAccount.AccountType;
BuildINAdministratorInfo.Caption = UserAccount.Caption;
BuildINAdministratorInfo.Description = UserAccount.Description;
BuildINAdministratorInfo.Disabled = UserAccount.Disabled;
BuildINAdministratorInfo.Domain = UserAccount.Domain;
BuildINAdministratorInfo.FullName = UserAccount.FullName;
BuildINAdministratorInfo.InstallDate = UserAccount.InstallDate;
BuildINAdministratorInfo.LocalAccount = UserAccount.LocalAccount;
BuildINAdministratorInfo.Lockout = UserAccount.Lockout;
BuildINAdministratorInfo.Name = UserAccount.Name;
BuildINAdministratorInfo.PasswordChangeable = UserAccount.PasswordChangeable;
BuildINAdministratorInfo.PasswordExpires = UserAccount.PasswordExpires;
BuildINAdministratorInfo.PasswordRequired = UserAccount.PasswordRequired;
BuildINAdministratorInfo.SID = UserAccount.SID;
Прервать;
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
Возврат BuildINAdministratorInfo;
КонецФункции
// Функция, позволяющая получить информацию о сетевых адаптерах на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// ТаблицаЗначений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
Функция Computer_NetworkAdapter(Computer = «.», OnlyIPv4 = Истина)
Перем WinMGMT;
Перем Win32_NetworkAdapterConfiguration, NetworkAdapterConfiguration;
Перем Win32_NICInfo, NICInfo;
Win32_NICInfo = Новый ТаблицаЗначений;
Win32_NICInfo.Колонки.Добавить(«ArpAlwaysSourceRoute»);
Win32_NICInfo.Колонки.Добавить(«ArpUseEtherSNAP»);
Win32_NICInfo.Колонки.Добавить(«Caption»);
Win32_NICInfo.Колонки.Добавить(«DatabasePath»);
Win32_NICInfo.Колонки.Добавить(«DeadGWDetectEnabled»);
Win32_NICInfo.Колонки.Добавить(«DefaultIPGateway»);
Win32_NICInfo.Колонки.Добавить(«DefaultTOS»);
Win32_NICInfo.Колонки.Добавить(«DefaultTTL»);
Win32_NICInfo.Колонки.Добавить(«Description»);
Win32_NICInfo.Колонки.Добавить(«DHCPEnabled»);
Win32_NICInfo.Колонки.Добавить(«DHCPLeaseExpires»);
Win32_NICInfo.Колонки.Добавить(«DHCPLeaseObtained»);
Win32_NICInfo.Колонки.Добавить(«DHCPServer»);
Win32_NICInfo.Колонки.Добавить(«DNSDomain»);
Win32_NICInfo.Колонки.Добавить(«DNSDomainSuffixSearchOrder»);
Win32_NICInfo.Колонки.Добавить(«DNSEnabledForWINSResolution»);
Win32_NICInfo.Колонки.Добавить(«DNSHostName»);
Win32_NICInfo.Колонки.Добавить(«DNSServerSearchOrder»);
Win32_NICInfo.Колонки.Добавить(«DomainDNSRegistrationEnabled»);
Win32_NICInfo.Колонки.Добавить(«ForwardBufferMemory»);
Win32_NICInfo.Колонки.Добавить(«FullDNSRegistrationEnabled»);
Win32_NICInfo.Колонки.Добавить(«GatewayCostMetric»);
Win32_NICInfo.Колонки.Добавить(«IGMPLevel»);
Win32_NICInfo.Колонки.Добавить(«Index»);
Win32_NICInfo.Колонки.Добавить(«InterfaceIndex»);
Win32_NICInfo.Колонки.Добавить(«IPAddress»);
Win32_NICInfo.Колонки.Добавить(«IPConnectionMetric»);
Win32_NICInfo.Колонки.Добавить(«IPEnabled»);
Win32_NICInfo.Колонки.Добавить(«IPFilterSecurityEnabled»);
Win32_NICInfo.Колонки.Добавить(«IPPortSecurityEnabled»);
Win32_NICInfo.Колонки.Добавить(«IPSecPermitIPProtocols»);
Win32_NICInfo.Колонки.Добавить(«IPSecPermitTCPPorts»);
Win32_NICInfo.Колонки.Добавить(«IPSecPermitUDPPorts»);
Win32_NICInfo.Колонки.Добавить(«IPSubnet»);
Win32_NICInfo.Колонки.Добавить(«IPUseZeroBroadcast»);
Win32_NICInfo.Колонки.Добавить(«IPXAddress»);
Win32_NICInfo.Колонки.Добавить(«IPXEnabled»);
Win32_NICInfo.Колонки.Добавить(«IPXFrameType»);
Win32_NICInfo.Колонки.Добавить(«IPXMediaType»);
Win32_NICInfo.Колонки.Добавить(«IPXNetworkNumber»);
Win32_NICInfo.Колонки.Добавить(«IPXVirtualNetNumber»);
Win32_NICInfo.Колонки.Добавить(«KeepAliveInterval»);
Win32_NICInfo.Колонки.Добавить(«KeepAliveTime»);
Win32_NICInfo.Колонки.Добавить(«MACAddress»);
Win32_NICInfo.Колонки.Добавить(«MTU»);
Win32_NICInfo.Колонки.Добавить(«NumForwardPackets»);
Win32_NICInfo.Колонки.Добавить(«PMTUBHDetectEnabled»);
Win32_NICInfo.Колонки.Добавить(«PMTUDiscoveryEnabled»);
Win32_NICInfo.Колонки.Добавить(«ServiceName»);
Win32_NICInfo.Колонки.Добавить(«SettingID»);
Win32_NICInfo.Колонки.Добавить(«TcpipNetbiosOptions»);
Win32_NICInfo.Колонки.Добавить(«TcpMaxConnectRetransmissions»);
Win32_NICInfo.Колонки.Добавить(«TcpMaxDataRetransmissions»);
Win32_NICInfo.Колонки.Добавить(«TcpNumConnections»);
Win32_NICInfo.Колонки.Добавить(«TcpUseRFC1122UrgentPointer»);
Win32_NICInfo.Колонки.Добавить(«TcpWindowSize»);
Win32_NICInfo.Колонки.Добавить(«WINSEnableLMHostsLookup»);
Win32_NICInfo.Колонки.Добавить(«WINSHostLookupFile»);
Win32_NICInfo.Колонки.Добавить(«WINSPrimaryServer»);
Win32_NICInfo.Колонки.Добавить(«WINSScopeID»);
Win32_NICInfo.Колонки.Добавить(«WINSSecondaryServer»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_NetworkAdapterConfiguration = WinMGMT.ExecQuery(«SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled = True»);
Исключение
Возврат Win32_NICInfo;
КонецПопытки;
Для Каждого NetworkAdapterConfiguration ИЗ Win32_NetworkAdapterConfiguration Цикл
NICInfo = Win32_NICInfo.Добавить();
NICInfo.ArpAlwaysSourceRoute = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «ArpAlwaysSourceRoute»);
NICInfo.ArpUseEtherSNAP = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «ArpUseEtherSNAP»);
NICInfo.Caption = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «Caption»);
NICInfo.DatabasePath = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DatabasePath»);
NICInfo.DeadGWDetectEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DeadGWDetectEnabled»);
NICInfo.DefaultIPGateway = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «DefaultIPGateway», OnlyIPv4);
NICInfo.DefaultTOS = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DefaultTOS»);
NICInfo.DefaultTTL = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DefaultTTL»);
NICInfo.Description = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «Description»);
NICInfo.DHCPEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DHCPEnabled»);
NICInfo.DHCPEnabled = ?(НЕ ТипЗнч(NICInfo.DHCPEnabled) = Тип(«Булево»), Ложь, NICInfo.DHCPEnabled);
Если NICInfo.DHCPEnabled Тогда
NICInfo.DHCPLeaseExpires = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DHCPLeaseExpires»));
NICInfo.DHCPLeaseObtained = ПреобразоватьЗначениеВДатуВремя(ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DHCPLeaseObtained»));
NICInfo.DHCPServer = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DHCPServer»);
КонецЕсли;
NICInfo.DNSDomain = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DNSDomain»);
NICInfo.DNSDomainSuffixSearchOrder = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «DNSDomainSuffixSearchOrder»);
NICInfo.DNSEnabledForWINSResolution = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DNSEnabledForWINSResolution»);
NICInfo.DNSEnabledForWINSResolution = ?(НЕ ТипЗнч(NICInfo.DNSEnabledForWINSResolution) = Тип(«Булево»), Ложь, NICInfo.DNSEnabledForWINSResolution);
NICInfo.DNSHostName = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DNSHostName»);
NICInfo.DNSServerSearchOrder = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «DNSServerSearchOrder», OnlyIPv4);
NICInfo.DomainDNSRegistrationEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «DomainDNSRegistrationEnabled»);
NICInfo.ForwardBufferMemory = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «ForwardBufferMemory»);
NICInfo.FullDNSRegistrationEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «FullDNSRegistrationEnabled»);
NICInfo.GatewayCostMetric = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «GatewayCostMetric»);
NICInfo.IGMPLevel = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IGMPLevel»);
NICInfo.Index = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «Index»);
NICInfo.InterfaceIndex = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «InterfaceIndex»);
NICInfo.IPEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPEnabled»);
NICInfo.IPEnabled = ?(НЕ ТипЗнч(NICInfo.IPEnabled) = Тип(«Булево»), Ложь, NICInfo.IPEnabled);
Если NICInfo.IPEnabled Тогда
NICInfo.IPAddress = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPAddress», OnlyIPv4);
NICInfo.IPConnectionMetric = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPConnectionMetric»);
NICInfo.IPFilterSecurityEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPFilterSecurityEnabled»);
NICInfo.IPFilterSecurityEnabled = ?(НЕ ТипЗнч(NICInfo.IPFilterSecurityEnabled) = Тип(«Булево»), Ложь, NICInfo.IPFilterSecurityEnabled);
NICInfo.IPPortSecurityEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPPortSecurityEnabled»);
NICInfo.IPPortSecurityEnabled = ?(НЕ ТипЗнч(NICInfo.IPPortSecurityEnabled) = Тип(«Булево»), Ложь, NICInfo.IPPortSecurityEnabled);
NICInfo.IPSecPermitIPProtocols = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPSecPermitIPProtocols»);
NICInfo.IPSecPermitTCPPorts = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPSecPermitTCPPorts»);
NICInfo.IPSecPermitTCPPorts = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPSecPermitUDPPorts»);
NICInfo.IPSubnet = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPSubnet», OnlyIPv4);
NICInfo.IPUseZeroBroadcast = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPUseZeroBroadcast»);
КонецЕсли;
NICInfo.IPXEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPXEnabled»);
NICInfo.IPXEnabled = ?(НЕ ТипЗнч(NICInfo.IPXEnabled) = Тип(«Булево»), Ложь, NICInfo.IPXEnabled);
Если NICInfo.IPXEnabled Тогда
NICInfo.IPXAddress = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «IPXAddress», OnlyIPv4);
NICInfo.IPXFrameType = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPXFrameType»);
NICInfo.IPXMediaType = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPXMediaType»);
NICInfo.IPXNetworkNumber = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPXNetworkNumber»);
NICInfo.IPXVirtualNetNumber = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «IPXVirtualNetNumber»);
КонецЕсли;
NICInfo.KeepAliveInterval = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «KeepAliveInterval»);
NICInfo.KeepAliveTime = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «KeepAliveTime»);
NICInfo.MACAddress = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «MACAddress»);
NICInfo.MTU = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «MTU»);
NICInfo.NumForwardPackets = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «NumForwardPackets»);
NICInfo.PMTUBHDetectEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «PMTUBHDetectEnabled»);
NICInfo.PMTUDiscoveryEnabled = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «PMTUDiscoveryEnabled»);
NICInfo.ServiceName = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «ServiceName»);
NICInfo.SettingID = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «SettingID»);
NICInfo.TcpipNetbiosOptions = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpipNetbiosOptions»);
NICInfo.TcpMaxConnectRetransmissions = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpMaxConnectRetransmissions»);
NICInfo.TcpMaxDataRetransmissions = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpMaxDataRetransmissions»);
NICInfo.TcpNumConnections = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpNumConnections»);
NICInfo.TcpUseRFC1122UrgentPointer = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpUseRFC1122UrgentPointer»);
NICInfo.TcpWindowSize = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «TcpWindowSize»);
NICInfo.WINSEnableLMHostsLookup = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «WINSEnableLMHostsLookup»);
NICInfo.WINSEnableLMHostsLookup = ?(НЕ ТипЗнч(NICInfo.WINSEnableLMHostsLookup) = Тип(«Булево»), Ложь, NICInfo.WINSEnableLMHostsLookup);
NICInfo.WINSHostLookupFile = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «WINSHostLookupFile»);
NICInfo.WINSPrimaryServer = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «WINSPrimaryServer»);
Если (ТипЗнч(NICInfo.WINSPrimaryServer) = Тип(«Строка») И ЗначениеЗаполнено(NICInfo.WINSPrimaryServer)) Тогда
NICInfo.WINSScopeID = ПолучитьЗначениеВПопытке(NetworkAdapterConfiguration, «WINSScopeID»);
NICInfo.WINSSecondaryServer = ПолучитьЗначениеИзCOMSafeArray(NetworkAdapterConfiguration, «WINSSecondaryServer»);
КонецЕсли;
КонецЦикла;
Win32_NICInfo.Сортировать(«IPAddress»);
Возврат Win32_NICInfo;
КонецФункции
Функция ПолучитьЗначениеИзCOMSafeArray(хОбъект, хРеквизит, OnlyIPv4 = Ложь)
Перем ЭлементМассива, Результат;
Результат = «»;
Попытка
Для Каждого ЭлементМассива ИЗ хОбъект[хРеквизит] Цикл
ЭлементМассива = СокрЛП(ЭлементМассива);
Если OnlyIPv4 И НЕ СтрЧислоВхождений(ЭлементМассива, «.») = 3 Тогда
Продолжить;
КонецЕсли;
Результат = Результат + ЭлементМассива + «;»;
КонецЦикла;
УдалитьПоследнийСимволВСтроке(Результат, 1);
Результат = ?(СокрЛП(Результат) = «;», «», СокрЛП(Результат));
Исключение
Результат = «»;
КонецПопытки;
Возврат Результат;
КонецФункции
Функция ПолучитьЗначениеВПопытке(хОбъект, хРеквизит)
Попытка
Возврат хОбъект[хРеквизит];
Исключение
Возврат Неопределено;
КонецПопытки;
Возврат Неопределено;
КонецФункции
Функция ПреобразоватьЗначениеВДатуВремя(Знач Значение)
Попытка
Возврат Дата(Лев(Значение,14));
Исключение
Возврат Дата(«00010101»);
КонецПопытки;
Возврат Дата(«00010101»);
КонецФункции
// Удаляет из строки указанное количество символов справа.
//
// Параметры:
// Текст — Строка — строка, в которой необходимо удалить последние символы;
// ЧислоСимволов — Число — количество удаляемых символов.
//
Процедура УдалитьПоследнийСимволВСтроке(Текст, ЧислоСимволов)
Текст = Лев(Текст, СтрДлина(Текст) — ЧислоСимволов);
КонецПроцедуры
// Функция получения информации о сетевом окружении.
// Возвращает:
// Таблица значений со структурой:
// №, Домен, Компьютер, IP-адрес, Комментарий.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
// Примечание:
// 1. WMI — медленнее, PING — быстрее.
// 2. WMI — безоконный, PING — с формированием окна.
//
&НаСервереБезКонтекста
Функция NetworkNeighborhood()
ТСетевоеОкружение = Новый ТаблицаЗначений;
ТСетевоеОкружение.Колонки.Добавить(«нПП», ,«№»);
ТСетевоеОкружение.Колонки.Добавить(«Домен»);
ТСетевоеОкружение.Колонки.Добавить(«Компьютер»);
ТСетевоеОкружение.Колонки.Добавить(«IP»);
ТСетевоеОкружение.Колонки.Добавить(«Комментарий»);
Попытка
ShellApplication = Новый COMОбъект(«Shell.Application»);
// Сетевое окружение.
Network = ShellApplication.NameSpace(18);
// Вся сеть.
EntireNetwork = Network.Items().Item(«EntireNetwork»).GetFolder;
Для Каждого EntireNetworkItem ИЗ EntireNetwork.Items() Цикл
Если EntireNetworkItem.Name = «Microsoft Windows Network» Тогда
MicrosoftWindowsNetwork = EntireNetworkItem.GetFolder;
Прервать;
КонецЕсли;
КонецЦикла;
нПП = 0;
Для Каждого MicrosoftWindowsNetworkItem ИЗ MicrosoftWindowsNetwork.Items() Цикл
// Рабочая группа или Домен.
Domain = MicrosoftWindowsNetworkItem.GetFolder;
Домен = ВРег(Domain.Title);
НоваяСтрока = ТСетевоеОкружение.Добавить();
нПП = нПП+1;
НоваяСтрока.нПП = нПП;
НоваяСтрока.Домен = Домен;
Для Каждого DomainItem ИЗ Domain.Items() Цикл
// Компьютер.
Компьютер = ВРег(DomainItem.Name);
НоваяСтрока = ТСетевоеОкружение.Добавить();
нПП = нПП+1;
НоваяСтрока.нПП = нПП;
НоваяСтрока.Домен = Домен;
НоваяСтрока.Компьютер = Компьютер;
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Компьютер + «\root\cimv2»);
// Без вывода окна на экран.
IPConfig = WinMGMT.ExecQuery(«Select IPAddress from Win32_NetworkAdapterConfiguration where ipenabled = true»);
// IP-адреса.
Для Каждого IPCFG ИЗ IPConfig Цикл
Если ЗначениеЗаполнено(IPCFG.IPAddress) Тогда
Для Каждого IP ИЗ IPCFG.IPAddress Цикл
НоваяСтрока = ТСетевоеОкружение.Добавить();
нПП = нПП+1;
НоваяСтрока.нПП = нПП;
НоваяСтрока.Домен = Домен;
НоваяСтрока.Компьютер = Компьютер;
НоваяСтрока.IP = IP;
НоваяСтрока.Комментарий = «WMI»;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Исключение
Сообщить(«Проверьте на компьютере « + Компьютер + «
|Windows Management Instrumentation (WMI):
|1. Состояние служб, отвечающих за WMI;
|2. Разрешение в брандмауэре для WMI.»);
WshShell = Новый COMОбъект(«WScript.Shell»);
// Exec — выводит окно на экран.
WshExec = WshShell.Exec(«ping -n 1 « + Компьютер);
TextStream = WshExec.StdOut;
// IP-адреса.
Пока НЕ TextStream.AtEndOfStream Цикл
СтрокаIP = TextStream.ReadLine();
ПозицияСкобкиЛевая = Найти(СтрокаIP, «[«);
Если ПозицияСкобкиЛевая > 0 Тогда
ПозицияСкобкиПравая = Найти(СтрокаIP, «]»);
IP = Сред(СтрокаIP, ПозицияСкобкиЛевая+1, ПозицияСкобкиПравая—ПозицияСкобкиЛевая—1);
НоваяСтрока = ТСетевоеОкружение.Добавить();
нПП = нПП+1;
НоваяСтрока.нПП = нПП;
НоваяСтрока.Домен = Домен;
НоваяСтрока.Компьютер = Компьютер;
НоваяСтрока.IP = IP;
НоваяСтрока.Комментарий = «PING»;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПопытки;
КонецЦикла;
КонецЦикла;
Исключение
КонецПопытки;
Возврат ТСетевоеОкружение;
КонецФункции
// Функция, позволяющая невизуально «пропинговать» удаленный компьютер.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Ложь/Истина.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_PING(Computer = «localhost»)
WinMGMT = ПолучитьCOMОбъект(«winmgmts:{impersonationLevel=impersonate}!\\»);
Win32_PingStatus = WinMGMT.ExecQuery(«SELECT StatusCode FROM Win32_PingStatus WHERE Address = ‘» + Computer + «‘»);
Успешно = Ложь;
Для Каждого PingStatus ИЗ Win32_PingStatus Цикл
Если PingStatus.StatusCode = NULL Тогда
Успешно = Ложь;
Иначе
Успешно = PingStatus.StatusCode = 0;
КонецЕсли;
КонецЦикла;
Возврат Успешно;
КонецФункции
// Функция, позволяющая получить информацию о службах на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_SystemService(Computer = «.»)
Win32_ServiceInfo = Новый ТаблицаЗначений;
Win32_ServiceInfo.Колонки.Добавить(«Name»);
Win32_ServiceInfo.Колонки.Добавить(«Caption»);
Win32_ServiceInfo.Колонки.Добавить(«Description»);
Win32_ServiceInfo.Колонки.Добавить(«PathName»);
Win32_ServiceInfo.Колонки.Добавить(«StartMode»);
Win32_ServiceInfo.Колонки.Добавить(«StartName»);
Win32_ServiceInfo.Колонки.Добавить(«State»);
Win32_ServiceInfo.Колонки.Добавить(«ProcessID»);
Win32_ServiceInfo.Колонки.Добавить(«SystemName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_Service = WinMGMT.ExecQuery(«SELECT * FROM Win32_Service»);
Для Каждого Service ИЗ Win32_Service Цикл
ServiceInfo = Win32_ServiceInfo.Добавить();
ServiceInfo.Name = Service.Name;
ServiceInfo.Caption = Service.Caption;
ServiceInfo.Description = Service.Description;
ServiceInfo.PathName = Service.PathName;
ServiceInfo.StartMode = Service.StartMode;
ServiceInfo.StartName = Service.StartName;
ServiceInfo.State = Service.State;
ServiceInfo.ProcessID = Service.ProcessID;
ServiceInfo.SystemName = Service.SystemName;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_ServiceInfo;
КонецФункции
// Функция, позволяющая получить информацию о процессах на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_SystemProcess(Computer = «.»)
Win32_ProcessInfo = Новый ТаблицаЗначений;
Win32_ProcessInfo.Колонки.Добавить(«Caption»);
Win32_ProcessInfo.Колонки.Добавить(«CommandLine»);
Win32_ProcessInfo.Колонки.Добавить(«CreationDate»);
Win32_ProcessInfo.Колонки.Добавить(«CSName»);
Win32_ProcessInfo.Колонки.Добавить(«ExecutablePath»);
Win32_ProcessInfo.Колонки.Добавить(«OSName»);
Win32_ProcessInfo.Колонки.Добавить(«ParentProcessId»);
Win32_ProcessInfo.Колонки.Добавить(«ProcessId»);
Win32_ProcessInfo.Колонки.Добавить(«WindowsVersion»);
Win32_ProcessInfo.Колонки.Добавить(«Owner»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_Process = WinMGMT.ExecQuery(«SELECT * FROM Win32_Process»);
Для Каждого Proccess ИЗ Win32_Process Цикл
ProccessInfo = Win32_ProcessInfo.Добавить();
ProccessInfo.Caption = Proccess.Caption;
ProccessInfo.CommandLine = Proccess.CommandLine;
Попытка
ProccessInfo.CreationDate = Дата(Лев(Proccess.CreationDate,14));
Исключение
КонецПопытки;
ProccessInfo.CSName = Proccess.CSName;
ProccessInfo.ExecutablePath = Proccess.ExecutablePath;
ProccessInfo.OSName = Proccess.OSName;
ProccessInfo.ParentProcessID = Proccess.ParentProcessID;
ProccessInfo.ProcessID = Proccess.ProcessID;
ProccessInfo.WindowsVersion = Proccess.WindowsVersion;
User = «»;
Domain = «»;
Owner = Proccess.GetOwner(User, Domain);
Если User = NULL И Domain = NULL Тогда
ProccessInfo.Owner = «System»;
Иначе
ProccessInfo.Owner = Domain + «\» + User;
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_ProcessInfo;
КонецФункции
// Функция, позволяющая завершить некий процесс на локальном/удаленном компьютере.
// Параметры:
// Computer — Имя компьютера.
// ProccessName — Имя процесса, который необходимо завершить.
// Возвращаемое значение:
// Количество завершенных процессов.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_KillProccess(Computer = «.», ProccessName = «»)
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Win32_Process = WinMGMT.ExecQuery(«SELECT * FROM Win32_Process Where Name = ‘» + ProccessName + «‘»);
Для Каждого Process ИЗ Win32_Process Цикл
Process.Terminate();
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_Process.Count;
КонецФункции
// Функция, позволяющая получить список событий за период из журналов System/Application локального/удаленного компьютера.
// Параметры:
// Computer — Имя компьютера.
// Logfile — Имя LOG-файла (System/Application).
// EventsType:
// 1 — Error
// 2 — Warning
// 3 — Information
// 4 — Security audit success
// 5 — Security audit failure
// DateStart — Дата начала в формате даты.
// DateEnd — Дата окончания в формате даты.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_EventsList(Computer = «.», Logfile = «System», EventType = «0», DateStart = Неопределено, DateEnd = Неопределено)
Если DateStart = Неопределено Тогда
DateStart = ТекущаяДата();
КонецЕсли;
Если DateEnd = Неопределено Тогда
DateEnd = ТекущаяДата();
КонецЕсли;
FiltreType = ?(EventType = «0», «», » and EventType = « + EventType);
Win32_EventsInfo = Новый ТаблицаЗначений;
Win32_EventsInfo.Колонки.Добавить(«Category»);
Win32_EventsInfo.Колонки.Добавить(«ComputerName»);
Win32_EventsInfo.Колонки.Добавить(«EventCode»);
Win32_EventsInfo.Колонки.Добавить(«Message»);
Win32_EventsInfo.Колонки.Добавить(«RecordNumber»);
Win32_EventsInfo.Колонки.Добавить(«SourceName»);
Win32_EventsInfo.Колонки.Добавить(«TimeWritten»);
Win32_EventsInfo.Колонки.Добавить(«Type»);
Win32_EventsInfo.Колонки.Добавить(«User»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2«);
Win32_NTLogEvent = WinMGMT.ExecQuery(«SELECT * FROM Win32_NTLogEvent Where Logfile = ‘» + Logfile + «‘»
+ FiltreType
+ » and TimeWritten >= ‘» + НачалоДня(DateStart) + «‘ and TimeWritten <= ‘» + КонецДня(DateEnd) + «‘»);
Для Каждого NTLogEvent ИЗ Win32_NTLogEvent Цикл
EventsInfo = Win32_EventsInfo.Добавить();
EventsInfo.Category = NTLogEvent.Category;
EventsInfo.ComputerName = NTLogEvent.ComputerName;
EventsInfo.EventCode = NTLogEvent.EventCode;
EventsInfo.Message = NTLogEvent.Message;
EventsInfo.RecordNumber = NTLogEvent.RecordNumber;
EventsInfo.SourceName = NTLogEvent.SourceName;
EventsInfo.TimeWritten = Дата(Лев(NTLogEvent.TimeWritten,14));
EventsInfo.Type = NTLogEvent.Type;
EventsInfo.User = NTLogEvent.User;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_EventsInfo;
КонецФункции
// Функция, позволяющая получить информацию об открытых сессиях на сервере (локальный/удаленный компьютер).
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_ServerSession(Computer = «.»)
ServerSessionInfo = Новый ТаблицаЗначений;
ServerSessionInfo.Колонки.Добавить(«ActiveTime»);
ServerSessionInfo.Колонки.Добавить(«Caption»);
ServerSessionInfo.Колонки.Добавить(«ClientType»);
ServerSessionInfo.Колонки.Добавить(«ComputerName»);
ServerSessionInfo.Колонки.Добавить(«Description»);
ServerSessionInfo.Колонки.Добавить(«IdleTime»);
ServerSessionInfo.Колонки.Добавить(«InstallDate»);
ServerSessionInfo.Колонки.Добавить(«Name»);
ServerSessionInfo.Колонки.Добавить(«ResourcesOpened»);
ServerSessionInfo.Колонки.Добавить(«SessionType»);
ServerSessionInfo.Колонки.Добавить(«Status»);
ServerSessionInfo.Колонки.Добавить(«TransportName»);
ServerSessionInfo.Колонки.Добавить(«UserName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
ServerSession = WinMGMT.ExecQuery(«Select * from Win32_ServerSession»);
Для Каждого Session ИЗ ServerSession Цикл
SessionInfo = ServerSessionInfo.Добавить();
SessionInfo.ActiveTime = Формат(Дата(«00010101»)+Session.ActiveTime,«ДЛФ=T»);
SessionInfo.Caption = Session.Caption;
SessionInfo.ClientType = Session.ClientType;
SessionInfo.ComputerName = Session.ComputerName;
SessionInfo.Description = Session.Description;
SessionInfo.IdleTime = Формат(Дата(«00010101»)+Session.IdleTime,«ДЛФ=T»);
SessionInfo.InstallDate = Session.InstallDate;
SessionInfo.Name = Session.Name;
SessionInfo.ResourcesOpened = Session.ResourcesOpened;
SessionInfo.SessionType = Session.SessionType;
SessionInfo.Status = Session.Status;
SessionInfo.TransportName = Session.TransportName;
SessionInfo.UserName = Session.UserName;
КонецЦикла;
Исключение
КонецПопытки;
Возврат ServerSessionInfo;
КонецФункции
// Функция, позволяющая получить информацию о терминальных сессиях на сервере (локальный/удаленный компьютер).
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Name = DomainName\UserName — Имя пользователя.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_Terminal(Computer = «.»)
TerminalInfo = Новый ТаблицаЗначений;
TerminalInfo.Колонки.Добавить(«Caption»);
TerminalInfo.Колонки.Добавить(«Description»);
TerminalInfo.Колонки.Добавить(«fEnableTerminal»);
TerminalInfo.Колонки.Добавить(«InstallDate»);
TerminalInfo.Колонки.Добавить(«Name»);
TerminalInfo.Колонки.Добавить(«Status»);
TerminalInfo.Колонки.Добавить(«TerminalName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
Terminal = WinMGMT.ExecQuery(«Select * from Win32_Terminal»);
Для Каждого Session ИЗ Terminal Цикл
SessionInfo = TerminalInfo.Добавить();
SessionInfo.Caption = Session.Caption;
SessionInfo.Description = Session.Description;
SessionInfo.fEnableTerminal = Session.fEnableTerminal;
SessionInfo.InstallDate = Session.InstallDate;
SessionInfo.Name = Session.Name;
SessionInfo.Status = Session.Status;
SessionInfo.TerminalName = Session.TerminalName;
КонецЦикла;
Исключение
КонецПопытки;
Возврат TerminalInfo;
КонецФункции
// Функция, позволяющая получить информацию об установленных подключениях к серверу (локальный/удаленный компьютер).
// Параметры:
// Computer — Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_ServerConnection(Computer = «.»)
ServerConnectionInfo = Новый ТаблицаЗначений;
ServerConnectionInfo.Колонки.Добавить(«ActiveTime»);
ServerConnectionInfo.Колонки.Добавить(«Caption»);
ServerConnectionInfo.Колонки.Добавить(«ComputerName»);
ServerConnectionInfo.Колонки.Добавить(«ConnectionID»);
ServerConnectionInfo.Колонки.Добавить(«Description»);
ServerConnectionInfo.Колонки.Добавить(«InstallDate»);
ServerConnectionInfo.Колонки.Добавить(«Name»);
ServerConnectionInfo.Колонки.Добавить(«NumberOfFiles»);
ServerConnectionInfo.Колонки.Добавить(«NumberOfUsers»);
ServerConnectionInfo.Колонки.Добавить(«ShareName»);
ServerConnectionInfo.Колонки.Добавить(«Status»);
ServerConnectionInfo.Колонки.Добавить(«UserName»);
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:\\» + Computer + «\root\cimv2»);
ServerConnection = WinMGMT.ExecQuery(«Select * from Win32_ServerConnection»);
Для Каждого Connection ИЗ ServerConnection Цикл
ConnectionInfo = ServerConnectionInfo.Добавить();
ConnectionInfo.ActiveTime = Формат(Дата(«00010101»)+Connection.ActiveTime,«ДЛФ=T»);
ConnectionInfo.Caption = Connection.Caption;
ConnectionInfo.ComputerName = Connection.ComputerName;
ConnectionInfo.ConnectionID = Connection.ConnectionID;
ConnectionInfo.Description = Connection.Description;
ConnectionInfo.InstallDate = Connection.InstallDate;
ConnectionInfo.Name = Connection.Name;
ConnectionInfo.NumberOfFiles = Connection.NumberOfFiles;
ConnectionInfo.NumberOfUsers = Connection.NumberOfUsers;
ConnectionInfo.ShareName = Connection.ShareName;
ConnectionInfo.Status = Connection.Status;
ConnectionInfo.UserName = Connection.UserName;
КонецЦикла;
Исключение
КонецПопытки;
Возврат ServerConnectionInfo;
КонецФункции
// Функция, позволяющая произвести завершение сеанса/перезагрузку/выключение локаьного/удаленного компьютера.
// Параметры:
// Computer — Имя компьютера.
// Flags — Действие:
// Log Off;
// 0 (0x0) — Log Off
// 4 (0x4) — Forced Log Off (0 + 4)
// Shutdown:
// 1 (0x1) — Shutdown
// 5 (0x5) — Forced Shutdown (1 + 4)
// Reboot:
// 2 (0x2) — Reboot
// 6 (0x6) — Forced Reboot (2 + 4)
// Power Off:
// 8 (0x8) — Power Off
// 12 (0xC)- Forced Power Off (8 + 4)
// Возвращаемое значение:
// Нет.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
//
&НаСервереБезКонтекста
Функция Computer_RebootShutdown(Computer = «.», Flags = 0)
Попытка
WinMGMT = ПолучитьCOMОбъект(«winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\» + Computer + «\root\cimv2»);
Win32_OS = WinMGMT.ExecQuery(«SELECT * FROM Win32_OperatingSystem where Primary=true»);
Reserved = 0; // Зарезервированный параметр. Игнорируется.
Для Каждого OS ИЗ Win32_OS Цикл
OS.Win32Shutdown(Flags, Reserved);
КонецЦикла;
Исключение
КонецПопытки;
КонецФункции
С уважением к сообществу МА!

