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