Подборка "скриптовых" функций и процедур.
Следующие:
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть II: //infostart.ru/public/166391/
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть III: //infostart.ru/public/166440/
Практическая реализация:
Обработка 1С:Системный Администратор (WSH&WMI): //infostart.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 + »
ootcimv2″);
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 = «#k8SjZc9Dxk+z», KEYS_RUS = «#k8SjZc9Dxk+я»)
Попытка
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» — #k8SjZc9Dxk;
// «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:UsersPublic.
ПеременныеОкружения.Вставить(«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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
//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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
//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 + »
ootcimv2″);
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:\» + Компьютер + »
ootcimv2″);
// Без вывода окна на экран.
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2«);
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 + »
ootcimv2″);
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 = DomainNameUserName — Имя пользователя.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// 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 + »
ootcimv2″);
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 + »
ootcimv2″);
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 + »
ootcimv2″);
Win32_OS = WinMGMT.ExecQuery(«SELECT * FROM Win32_OperatingSystem where Primary=true»);
Reserved = 0; // Зарезервированный параметр. Игнорируется.
Для Каждого OS ИЗ Win32_OS Цикл
OS.Win32Shutdown(Flags, Reserved);
КонецЦикла;
Исключение
КонецПопытки;
КонецФункции
С уважением к сообществу МА!
за примеры в контексте 1С — отдельное спасибо
Только не позволяет выполнять это все на linux.
(2) pumbaE, хорошую тему для хорошей статьи обозначил! 😉
Интереса ради посмотрел — в 8.3 работает КомандаСистемы(«sh -c «»» + ТекстКоманды + «»»»);
А на сервере?
Вместо реализации задержки через ping имхо логичнее использовать WScript.Sleep(…).
(4) pumbaE, я не обещал готового рецепта ))) я лишь сказал что хорошая тема для проработки.
(1) wunderland,
Пожалуйста. Главное — чтобы было полезно.
(2) pumbaE,
Linux — не проверялось. Работаю только в Windows.
(5) q_i,
Метод Sleep действительно существует у объекта WScript.
НО WScript существует только для скриптов, которые вызываются из командной строки,
Объект WScript нельзя получить, используя COMОбъект.
Следовательно надо создавать файл, скажем во временной папке, записать туда текст скрипта, а потом его выполнять, после этого — в общем случае — удалить этот файл.
(9) понял, спасибо!
Не знаю, пригодиться ли это, но не плюсануть за картинку не мог :))))))
Для работы со скриптами на уровне COM Используется MSScriptControl.
В примере есть упоминание о нем.
Но тут есть одна проблема с которой я столкнулся и разрешить так и не смог.
При создании объекта на 64 битном сервере 1С (Именно 1С, не Win) — объект не создается, что то там с политиками безопасности от мелкомягких. Не все 32 битные COM-ы могут быть вызваны 64 битным приложением.
MSScriptControl — один из них 🙁
Нисколько не уменьшая ценности публикации:
Разработка скриптов
Еще больше примеров, правда на VB, на ресурсе
Плюс!
Автор, спасибо за примеры в контексте 1С. Напиши, пожалуйста, статью с бОльшим количеством примеров =)
(13) ediks,
Спасибо. Надо будет посмотреть.
(14) SeiOkami,
Статья обязательно пополнится примерами.
Есть еще определенные «вещички» …
(11) astonvilla,
Мне тоже картинка понравилась ………
Спасибо! Очень полезно! Хотелось бы продолжения (часть 2, часть 3 и т.д.).
однозначно плюс. жаль, нельзя второй поставить за картинку — просто ураган 🙂
(18) KliMich,
ЕСТЬ ПРОДОЛЖЕНИЕ !
Супер, сенкс!
Автору стоило бы знать что большинство, что понаписано реализуется самой платформой не хуже.
Да и есть старый, добрый
http://www.script-coding.com
(22) zarucheisky,
Определенные — да.
Ссылка на старый-добрый http://www.script-coding.com была ранее 13. ediks
Добавлена новая функция СетевоеОкружение().
Добавлены новые функции:
1. SetDateTime() — Установка системных Даты и Времени.
2. ControlPanelItem() — Вызов оснастки из Панели управления.
Добавлена функция, позволяющая получить список подключенных принтеров локального/удаленного компьютера.
Добавлены:
1. Функция, позволяющая информацию о BIOS локального/удаленного компьютера.
2. Функция, позволяющая получить Имя пользователя, зарегистрировавшегося на локальном/удаленном компьютере.
Добавлено пояснение по настройке и проверке работы Windows Management Instrumentation — Инструментарий управления Windows.
Добавлены 2 новые функции: ServerSession и ServerConnection.
Спасибо автору!
Недавно озадачился, как можно в 1с8.х засечь время выполнения в коде миллесекундах.
И вот нашел здесь один из способов.
(30)
еще раз спасибо — реально пригодилось!
теперь могу засекать время выполнения запросов с точностью до миллисекунды.
—
проблемка с другой процедуркой:
SendKeys(KEYS_ENG = «#k8SjZc9Dxk+z», KEYS_RUS = «#k8SjZc9Dxk+я»)
Пытаюсь имитировать вызов на редактирование поля ввода в форме по клавише ‘F4’
(смотри код ниже) — ничего выходит (тип редактируемого значения — «СписокЗначений»).
Показать
(31) yuraos,
Пожалуйста. Рад, что Вам пригодилось.
По поводу Вашего вопроса:
Некоторые специальные символы следует всегда задавать заключёнными в фигурные скобки.
В частности и F4:
SendKeys(«{F4}»,»{F4}»);
Попробуйте.
Удачи.
(32)
у щайтан-скобка!
SendKeys(«{F4}»,»{F4}») — проканало.
спасибо огромное!!!
А нет в Windows Script Host каких-нибудь объектов,
которые позволили бы в 1С через подписку на события
перехватывать обработку ввода с мыши и клавиатуры?
(33) yuraos,
WSH — это работа в командной строке.
И опции типа SendKeys — это скорее приятные полезности.
Ответ: нет.
Добавлены новые функции: Computer_Processor(), Computer_RAM(), Computer_TotalPhysicalMemory(), Computer_VirtualMemory().
Добавлены новые функции: Computer_Motherboard() и Computer_Video().
Добавлены функции Computer_UserList(), Computer_GroupList(), Computer_GroupUsersList(), Computer_BuildINAdministrator().
—-
(33)
иище раз о ВремяВМиллисекундах():
В каких ситуациях в функции может сработать исключение и
вместо миллисекунд функция вернет 1С-ное текущее время-дату ???
PS:
В своем варианте по исключению я возвращаю значение:
1000*(ТекущаяДата() — ‘1970-01-01:06:00:00’)
как более подходящее по смыслу — округленное до целых секунд число миллисекунд.
06:00:00 — это наверное из-за разницы времени между Новосибирском и Гринвичем.
Полезно.
Круто!
(39) yuraos,
вместо миллисекунд функция вернет 1С-ное текущее время-дату ???
При тестировании на 32-битных системах «Исключение» не вызывалось.
Возможно ситуация, описанная (12) DMSDeveloper.
Добавлены функции: Computer_SystemService(), Computer_SystemProcess(), Computer_EventsList()
Добавлены функции: Computer_KillProccess(), Computer_RebootShutdown().
Добавлена функция: Computer_PING(), позволяющая невизуально «пропинговать» удаленный компьютер.
Добавлена Функция Computer_Terminal(), позволяющая получить информацию о терминальных сессиях на сервере (локальный/удаленный компьютер).
(4) pumbaE, на сервере ЗапуститьПриложение().
при вызове Win32Shutdown с флагами отличными от 0 — ничего не происходит
или я что-то не так делаю
Пример:
(48) slaviksoft,
Какая у Вас операционка ?
23.09.2013 г.
Добавлены функции:
Computer_WindowsInfo()
Computer_Monitor()
Computer_PhysicalMemory()
(48) slaviksoft,
СПАСИБО.
Вместо строчки:
Необходимо:
Проверил на Windows XP x32 и Windows 7 x64.
Функция NetworkNeighborhood() ничего не возвращает в ОС старше Win-XP
(52) echo77,
http://infostart.ru/public/172189/ получение сетевого окружения переработано и дополнено для Windows Vista и выше.
Да. Вы правильно указали.
В обработке 1С:Администратор
Позднее подправлю статью.
СПАСИБО.
07.10.2013.
Функция Computer_MAC_IP() заменена на функцию Computer_NetworkAdapter().
StepByStep,
А в каком случае SendKey может использоваться на сервере? К процедуре указана директива &НаКлиентеНаСервереБезКонтекста.
Я там понимаю, что для сендкея обязательно нужно открытое окно приложения и тем более открытая сессия (нормальная сессия с рабочим столом и т.п.), а на сервере такого вроде 1С сервер не создает?
(55) MarSeN,
Согласен с Вами, «физического» смысла это не имеет.
проснулся в 5 утра, полазил по сайту, через рекламу и косвенные ссылки попал сюда, решил сохранить, а вот коммент (11) astonvilla, вначале не понял.
пересмотрел внизу картинки, почесал голову, поработал, еще раз пересмотрел
догадался посмотреть вверху
ржал минут 5
плюсую
Почему-то не получается отправить символы с цифровой клавиатуры.
Нижеперечисленные варианты (также без скобок «()») приводят к ошибке «Произошла исключительная ситуация (0x80070057)».
1)
2)
Доброго времени суток! Подскажите плиз. Юзаю одну из ваших функций
Computer_GroupUsersList(
Она возвращает имя группы и имя пользователя. Можно ли как-то получить «полное имя пользователя» ну или как это назвать ПРЕДСТАВЛЕНИЕ. Т.е. то Имя, которое отображается у пользователя, если нажать кнопку «Пуск». Например имя пользователя может быть «Zelensky» а полное имя «Зеленский Максим». Вот мне нужно как-то получить это полное имя.
(59) mzelensky,
Функция Computer_UserList() возвращает таблицу значений, в которой есть FullName.
(58) Voittamaton,
SendKeys(«#k8SjZc9Dxk+{SUBTRACT}»); — Ошибки не вызвало.
14.01.2015.
Добавлена функция
ПреобразоватьИзСтрокиВДату() — Ф., возвращающая результат преобразования строкового значения даты в значение в формате даты.
спасибо!
Подскажите кто сталкивался, как решить проблему такую: пытаюсь получить список пользователей на удаленном сервере, так вот с одними серверами происходит нормально, а на одном не выполняет даже инициализацию: ПолучитьCOMОбъект(«winmgmts:\» + Computer + »
ootcimv2″);
сначала ругался «Ошибка получения объекта COM: Сервер RPC недоступен.»
Почитал тут что брэндмауэр нужно настраивать, пробовал но не помогало и я его вообще отключил, теперь ругается «Ошибка получения объекта COM: Отказано в доступе.»
Подскажите как с помощью даного скрипта емулировать нажатие на маленькой клавиатуре NUM + и NUM —
так ошибкаhttp://prntscr.com/gri3o7
нужно когда картинка активизирована на форме кнопкой УМЕНЬШИТЬ УВЕЛИЧИТЬ менять масштаб
просто нажатие + и — работает,
ПОМОГИТЕ ЗНАТОКИ!!!!!!!!!!!
(65) Для тех, кто долго искал как программно «нажать» Ctrl+Shift+{+} (развернуть все ветки; актуально для таблицы формы, представленной в виде дерева по произвольному запросу с группировкой). Работает следующий код: