IE 2016

1С и Windows Script Host (WSH) и Windows Management Instrumentation (WMI). ОТ ТЕОРИИ К ПРАКТИКЕ. Часть I

Опубликовал StepByStep в раздел Администрирование - Системное

Описание возможностей Windows Script Host и Windows Management Instrumentation.
Подборка "скриптовых" функций и процедур.

Следующие:

1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть II: http://infostart.ru/public/166391/
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть III: http://infostart.ru/public/166440/

Практическая реализация:

Обработка 1С:Системный Администратор (WSH&WMI): http://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 ИЗ Prim
aryBIOS Цикл
            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);
        КонецЦикла;
        
    Исключение
    КонецПопытки;
    
КонецФункции

МА! С уважением к сообществу МА!


См. также

PowerTools от 1 000

Лучшие комментарии

11. astonvilla (файл скачал) 14.12.2012 10:54
Не знаю, пригодиться ли это, но не плюсануть за картинку не мог :))))))
Ответили: (17) (57)
+ 2 [ ЧИА; StepByStep; ]
# Ответить
13. ediks 14.12.2012 11:19
Нисколько не уменьшая ценности публикации:
Еще больше примеров, правда на VB, на ресурсе Разработка скриптов
Ответили: (15)
+ 2 [ a.podobin; StepByStep; ]
# Ответить
12. DMSDeveloper 14.12.2012 11:11
Для работы со скриптами на уровне COM Используется MSScriptControl.
В примере есть упоминание о нем.
&НаКлиентеНаСервереБезКонтекста
Функция ВремяВМиллисекундах()


Но тут есть одна проблема с которой я столкнулся и разрешить так и не смог.

При создании объекта на 64 битном сервере 1С (Именно 1С, не Win) - объект не создается, что то там с политиками безопасности от мелкомягких. Не все 32 битные COM-ы могут быть вызваны 64 битным приложением.
MSScriptControl - один из них :(
Ответили: (42)
+ 1 [ StepByStep; ]
# Ответить

Комментарии

1. wunderland 12.12.2012 17:36
за примеры в контексте 1С - отдельное спасибо
Ответили: (7)
# Ответить
2. pumbaE 12.12.2012 19:00
Только не позволяет выполнять это все на linux.
Ответили: (3) (8)
# Ответить
3. q_i 13.12.2012 12:07
(2) pumbaE, хорошую тему для хорошей статьи обозначил! ;)
Интереса ради посмотрел - в 8.3 работает КомандаСистемы("sh -c """ + ТекстКоманды + """");
# Ответить
4. pumbaE 13.12.2012 12:12
А на сервере?
Ответили: (6) (47)
# Ответить
5. q_i 13.12.2012 12:13
Вместо реализации задержки через ping имхо логичнее использовать WScript.Sleep(...).
Ответили: (9)
# Ответить
6. q_i 13.12.2012 12:15
(4) pumbaE, я не обещал готового рецепта ))) я лишь сказал что хорошая тема для проработки.
# Ответить
7. StepByStep 13.12.2012 12:58
(1) wunderland,
Пожалуйста. Главное - чтобы было полезно.
# Ответить
8. StepByStep 13.12.2012 13:01
(2) pumbaE,
Linux - не проверялось. Работаю только в Windows.
# Ответить
9. StepByStep 13.12.2012 13:10
(5) q_i,
Метод Sleep действительно существует у объекта WScript.
НО WScript существует только для скриптов, которые вызываются из командной строки,
Объект WScript нельзя получить, используя COMОбъект.
Следовательно надо создавать файл, скажем во временной папке, записать туда текст скрипта, а потом его выполнять, после этого - в общем случае - удалить этот файл.
Ответили: (10)
# Ответить
10. q_i 13.12.2012 14:44
(9) StepByStep, понял, спасибо!
# Ответить
11. astonvilla (файл скачал) 14.12.2012 10:54
Не знаю, пригодиться ли это, но не плюсануть за картинку не мог :))))))
Ответили: (17) (57)
+ 2 [ ЧИА; StepByStep; ]
# Ответить
12. DMSDeveloper 14.12.2012 11:11
Для работы со скриптами на уровне COM Используется MSScriptControl.
В примере есть упоминание о нем.
&НаКлиентеНаСервереБезКонтекста
Функция ВремяВМиллисекундах()


Но тут есть одна проблема с которой я столкнулся и разрешить так и не смог.

При создании объекта на 64 битном сервере 1С (Именно 1С, не Win) - объект не создается, что то там с политиками безопасности от мелкомягких. Не все 32 битные COM-ы могут быть вызваны 64 битным приложением.
MSScriptControl - один из них :(
Ответили: (42)
+ 1 [ StepByStep; ]
# Ответить
13. ediks 14.12.2012 11:19
Нисколько не уменьшая ценности публикации:
Еще больше примеров, правда на VB, на ресурсе Разработка скриптов
Ответили: (15)
+ 2 [ a.podobin; StepByStep; ]
# Ответить
14. SeiOkami (файл скачал) 14.12.2012 11:30
Плюс!
Автор, спасибо за примеры в контексте 1С. Напиши, пожалуйста, статью с бОльшим количеством примеров =)
Ответили: (16)
+ 1 [ StepByStep; ]
# Ответить
15. StepByStep 14.12.2012 11:32
(13) ediks,
Спасибо. Надо будет посмотреть.
# Ответить
16. StepByStep 14.12.2012 11:33
(14) SeiOkami,
Статья обязательно пополнится примерами.
Есть еще определенные "вещички" ...
# Ответить
17. StepByStep 14.12.2012 11:34
(11) astonvilla,
Мне тоже картинка понравилась .........
# Ответить
18. KliMich 14.12.2012 12:01
Спасибо! Очень полезно! Хотелось бы продолжения (часть 2, часть 3 и т.д.).
Ответили: (20)
# Ответить
19. Stamper 14.12.2012 14:03
однозначно плюс. жаль, нельзя второй поставить за картинку -- просто ураган :)
+ 1 [ StepByStep; ]
# Ответить
20. StepByStep 17.12.2012 10:45
(18) KliMich,
ЕСТЬ ПРОДОЛЖЕНИЕ !
# Ответить
21. mzelensky 20.12.2012 07:52
Супер, сенкс!
# Ответить
22. zarucheisky 20.12.2012 13:25
Автору стоило бы знать что большинство, что понаписано реализуется самой платформой не хуже.
Да и есть старый, добрый
www.script-coding.com
Ответили: (23)
# Ответить
23. StepByStep 23.12.2012 12:35
(22) zarucheisky,
Определенные - да.
Ссылка на старый-добрый www.script-coding.com была ранее 13. ediks
# Ответить
24. StepByStep 23.12.2012 12:36
Добавлена новая функция СетевоеОкружение().
# Ответить
25. StepByStep 27.12.2012 21:03
Добавлены новые функции:
1. SetDateTime() - Установка системных Даты и Времени.
2. ControlPanelItem() - Вызов оснастки из Панели управления.
# Ответить
26. StepByStep 09.01.2013 09:37
Добавлена функция, позволяющая получить список подключенных принтеров локального/удаленного компьютера.
# Ответить
27. StepByStep 13.01.2013 23:18
Добавлены:
1. Функция, позволяющая информацию о BIOS локального/удаленного компьютера.
2. Функция, позволяющая получить Имя пользователя, зарегистрировавшегося на локальном/удаленном компьютере.
# Ответить
28. StepByStep 17.01.2013 16:03
Добавлено пояснение по настройке и проверке работы Windows Management Instrumentation - Инструментарий управления Windows.
# Ответить
29. StepByStep 24.01.2013 11:56
Добавлены 2 новые функции: ServerSession и ServerConnection.
# Ответить
30. yuraos (файл скачал) 26.01.2013 13:31
Спасибо автору!
Недавно озадачился, как можно в 1с8.х засечь время выполнения в коде миллесекундах.
И вот нашел здесь один из способов.
Ответили: (31)
# Ответить
31. yuraos (файл скачал) 29.01.2013 09:07
(30)
еще раз спасибо - реально пригодилось!
теперь могу засекать время выполнения запросов с точностью до миллисекунды.
---
проблемка с другой процедуркой:
SendKeys(KEYS_ENG = "^+z", KEYS_RUS = "^+я")
Пытаюсь имитировать вызов на редактирование поля ввода в форме по клавише 'F4'
(смотри код ниже) - ничего выходит (тип редактируемого значения - "СписокЗначений").
Процедура SendKeys(KEYS_ENG = "^+z", KEYS_RUS = "^+я")
	Если ПустаяСтрока(KEYS_ENG) И ПустаяСтрока(KEYS_ENG) Тогда
		Возврат;
	КонецЕсли; 
    
    Попытка
        WshShell = Новый COMОбъект("Wscript.Shell");
		Если НЕ ПустаяСтрока(KEYS_ENG) Тогда
	        WshShell.SendKeys(KEYS_ENG);    // для случая, если текущей является английская раскладка клавиатуры.
		КонецЕсли; 
		Если НЕ ПустаяСтрока(KEYS_RUS) Тогда
	        WshShell.SendKeys(KEYS_RUS);    // для случая, если текущей является русская раскладка клавиатуры.
		КонецЕсли; 
        // SendKeys(String) - имитируется нажатие клавиши или последовательности клавиш, указанных в параметре String.
        // В качестве параметра можно указывать как алфавитно-цифровые символы, так и символы специальных клавиш, например:
        // "Enter", "Tab", "F1", "Alt", "Shift", "Ctrl" и т.д. 
        // Для указания клавиш "Alt", "Shift", "Ctrl" существуют специальные коды:
        // "Shift" - +;
        // "Ctrl" - ^;
        // "Alt" - %.
        // Если возникнет необходимость передать специальные символы именно как символы, а не команды, 
        // нужно заключать их в фигурные скобки, например {+}.   
	Исключение
		Сообщить(ОписаниеОшибки());
    КонецПопытки;

КонецПроцедуры

Процедура СписокНомеровПС_КонтМенюИзменить(Кнопка)
	Если ЭтаФорма.ТекущийЭлемент <> ЭлементыФормы.СписокНомеровПС Тогда
		ЭтаФорма.ТекущийЭлемент = ЭлементыФормы.СписокНомеровПС;
	КонецЕсли;
	SendKeys("F4","F4");
КонецПроцедуры

...Показать Скрыть
Ответили: (32)
# Ответить
32. StepByStep 30.01.2013 12:09
(31) yuraos,
Пожалуйста. Рад, что Вам пригодилось.

По поводу Вашего вопроса:
Некоторые специальные символы следует всегда задавать заключёнными в фигурные скобки.
В частности и F4:
SendKeys("{F4}","{F4}");

Попробуйте.

Удачи.
Ответили: (33)
+ 1 [ yuraos; ]
# Ответить
33. yuraos (файл скачал) 31.01.2013 06:51
(32) StepByStep,
у щайтан-скобка!
SendKeys("{F4}","{F4}") - проканало.
спасибо огромное!!!

А нет в Windows Script Host каких-нибудь объектов,
которые позволили бы в 1С через подписку на события
перехватывать обработку ввода с мыши и клавиатуры?
Ответили: (34) (39)
# Ответить
34. StepByStep 06.02.2013 13:07
(33) yuraos,
WSH - это работа в командной строке.
И опции типа SendKeys - это скорее приятные полезности.
Ответ: нет.
# Ответить
35. StepByStep 06.02.2013 13:09
Добавлены новые функции: Computer_Processor(), Computer_RAM(), Computer_TotalPhysicalMemory(), Computer_VirtualMemory().
# Ответить
36. StepByStep 08.02.2013 16:58
Добавлены новые функции: Computer_Motherboard() и Computer_Video().
# Ответить
37. StepByStep 13.02.2013 00:31
Добавлены функции Computer_UserList(), Computer_GroupList(), Computer_GroupUsersList(), Computer_BuildINAdministrator().
# Ответить
38. soli_M_x6 13.02.2013 00:47
39. yuraos (файл скачал) 13.02.2013 18:45
(33)
иище раз о ВремяВМиллисекундах():
В каких ситуациях в функции может сработать исключение и
вместо миллисекунд функция вернет 1С-ное текущее время-дату ???

PS:
В своем варианте по исключению я возвращаю значение:
1000*(ТекущаяДата() - '1970-01-01:06:00:00')
как более подходящее по смыслу - округленное до целых секунд число миллисекунд.
06:00:00 - это наверное из-за разницы времени между Новосибирском и Гринвичем.
Ответили: (42)
# Ответить
40. Матрос 14.02.2013 04:52
Полезно.
# Ответить
41. OVladius 14.02.2013 13:23
Круто!
# Ответить
42. StepByStep 16.02.2013 15:26
(39) yuraos,
В каких ситуациях в функции может сработать исключение и
вместо миллисекунд функция вернет 1С-ное текущее время-дату ???

При тестировании на 32-битных системах "Исключение" не вызывалось.
Возможно ситуация, описанная (12) DMSDeveloper.
# Ответить
43. StepByStep 17.02.2013 17:25
Добавлены функции: Computer_SystemService(), Computer_SystemProcess(), Computer_EventsList()
# Ответить
44. StepByStep 20.02.2013 11:25
Добавлены функции: Computer_KillProccess(), Computer_RebootShutdown().
# Ответить
45. StepByStep 01.03.2013 01:47
Добавлена функция: Computer_PING(), позволяющая невизуально "пропинговать" удаленный компьютер.
# Ответить
46. StepByStep 25.03.2013 01:59
Добавлена Функция Computer_Terminal(), позволяющая получить информацию о терминальных сессиях на сервере (локальный/удаленный компьютер).
# Ответить
47. q_i 03.04.2013 16:09
(4) pumbaE, на сервере ЗапуститьПриложение().
# Ответить
48. slaviksoft 12.07.2013 14:07
при вызове Win32Shutdown с флагами отличными от 0 - ничего не происходит
или я что-то не так делаю

Пример:
WinMGMT = ПолучитьCOMОбъект("winmgmts:\\.\root\cimv2");
Win32_OS = WinMGMT.ExecQuery("SELECT * FROM Win32_OperatingSystem where Primary=true");

Reserved = 0; // Зарезервированный параметр. Игнорируется.
Для Каждого OS ИЗ Win32_OS Цикл
OS.Win32Shutdown(6, Reserved);
КонецЦикла;
Ответили: (49) (51)
+ 1 [ StepByStep; ]
# Ответить
49. StepByStep 23.09.2013 01:58
(48) slaviksoft,
Какая у Вас операционка ?
# Ответить
50. StepByStep 23.09.2013 02:00
23.09.2013 г.

Добавлены функции:

Computer_WindowsInfo()
Computer_Monitor()
Computer_PhysicalMemory()
# Ответить
51. StepByStep 23.09.2013 12:29
(48) slaviksoft,
СПАСИБО.

Вместо строчки:
WinMGMT = ПолучитьCOMОбъект("winmgmts:\\.\root\cimv2");

Необходимо:
WinMGMT = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\" + Computer + "\root\cimv2");

Проверил на Windows XP x32 и Windows 7 x64.
# Ответить
52. echo77 01.10.2013 09:24
Функция NetworkNeighborhood() ничего не возвращает в ОС старше Win-XP
Ответили: (53)
+ 1 [ StepByStep; ]
# Ответить
53. StepByStep 01.10.2013 10:09
(52) echo77,
Да. Вы правильно указали.
В обработке 1С:Администратор http://infostart.ru/public/172189/ получение сетевого окружения переработано и дополнено для Windows Vista и выше.
Позднее подправлю статью.
СПАСИБО.
# Ответить
54. StepByStep 08.10.2013 00:55
07.10.2013.
Функция Computer_MAC_IP() заменена на функцию Computer_NetworkAdapter().
# Ответить
55. MarSeN 16.10.2013 08:59
StepByStep,
А в каком случае SendKey может использоваться на сервере? К процедуре указана директива &НаКлиентеНаСервереБезКонтекста.
Я там понимаю, что для сендкея обязательно нужно открытое окно приложения и тем более открытая сессия (нормальная сессия с рабочим столом и т.п.), а на сервере такого вроде 1С сервер не создает?
Ответили: (56)
+ 1 [ StepByStep; ]
# Ответить
56. StepByStep 20.10.2013 15:51
(55) MarSeN,
Согласен с Вами, "физического" смысла это не имеет.
# Ответить
57. ЧИА 15.02.2014 08:17
проснулся в 5 утра, полазил по сайту, через рекламу и косвенные ссылки попал сюда, решил сохранить, а вот коммент (11) astonvilla, вначале не понял.
пересмотрел внизу картинки, почесал голову, поработал, еще раз пересмотрел
догадался посмотреть вверху

ржал минут 5
плюсую
# Ответить
58. Voittamaton 29.03.2014 16:31
Почему-то не получается отправить символы с цифровой клавиатуры.
Нижеперечисленные варианты (также без скобок "()") приводят к ошибке "Произошла исключительная ситуация (0x80070057)".

1) Ws = Новый COMОбъект("Wscript.shell");
Ws.SendKeys("^+({Pad-})");

2) Ws = Новый COMОбъект("Wscript.shell");
Ws.SendKeys("^+({Subtract})");
Ответили: (61)
# Ответить
59. mzelensky 09.07.2014 17:52
Доброго времени суток! Подскажите плиз. Юзаю одну из ваших функций

Computer_GroupUsersList(

Она возвращает имя группы и имя пользователя. Можно ли как-то получить "полное имя пользователя" ну или как это назвать ПРЕДСТАВЛЕНИЕ. Т.е. то Имя, которое отображается у пользователя, если нажать кнопку "Пуск". Например имя пользователя может быть "Zelensky" а полное имя "Зеленский Максим". Вот мне нужно как-то получить это полное имя.
Ответили: (60)
# Ответить
60. StepByStep 14.01.2015 12:42
(59) mzelensky,
Функция Computer_UserList() возвращает таблицу значений, в которой есть FullName.
# Ответить
61. StepByStep 14.01.2015 12:59
(58) Voittamaton,
SendKeys("^+{SUBTRACT}"); - Ошибки не вызвало.
# Ответить
62. StepByStep 14.01.2015 13:00
14.01.2015.
Добавлена функция
ПреобразоватьИзСтрокиВДату() - Ф., возвращающая результат преобразования строкового значения даты в значение в формате даты.
# Ответить
63. simple 19.01.2015 17:57
спасибо!