Служба was не найдена на компьютере win server 2012
Любой бывалый Windows-админ периодически сталкивается с проблемами в работе службы WMI (Windows Management Instrumentation) и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования Windows, поэтому администратору необходимо проверить и восстановить работоспособность WMI. В этой статье мы опишем простую методику диагностирования и устранения неполадок службы WMI в Windows.
О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:
- Ошибки обработки WMI запросов в системных журналах и логах приложений ( 0x80041002 - WBEM_E_NOT_FOUND , WMI: Not Found , 0x80041010 WBEM_E_INVALID_CLASS );
- Ошибки обработки GPO, связанные на WMI ( некорректная работа wmi фильтров групповых политик, и пр.);
- WMI запросы выполняются очень медленно;
- Ошибки при установке или работе агентов SCCM/SCOM;
- Ошибки в работе скриптов (vbs или PowerShell), использующих пространство имен WMI (скрипты с Get-WmiObject и т.д.).
Диагностика проблем с WMI
В первую очередь нужно проверить служба Windows Management Instrumentation (Winmgmt) установлена в Windows и запущена. Вы можете проверить состояние службы в консоли services.msc или с помощью PowerShell:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
Если служба Winmgmt запущена, вы можете проверить работоспособность WMI, обратившись к ней с помощью простого WMI-запроса. Вы можете выполнить wmi запрос из командной строки или из PowerShell. Например, следующая команда выведет список установленных в Windows программ:
wmic product get name,version
Простейшая PowerShell команда для получения информации о версии и билда Windows 10 через WMI может выглядеть так:
Как вы видите, служба WMI ответила на запрос корректно. Если при выполнении такого WMI-запроса Windows возвращает ошибку, скорее всего сервиса WMI работает некорректно, поврежден WMI репозиторий или есть какие-то другие проблемы.
В моем случае, например, при открытии свойств WMI Control в консоли управления компьютером (compmgmt.msc) появлялась надпись:
Ранее для диагностики WMI существовала официальная утилита от Microsoft – WMIDiag.vbs (Microsoft WMI Diagnosis). WMIdiag это vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.2 и включает в себя следующие типы фалов:
- .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag;
- .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание;
- В .csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI.
в противном случае появится ошибка:
К сожалению, последняя версия WMIDiag 2.2 корректно работает только с версиями до Windows 8.1/Windows Server 2012 R2. На данный момент Microsoft даже удалила ссылку на загрузку WMIDiag из Download Center. Но при желании, этот скрипт можно найти в сети.
WMIDiag может дать подробную информацию по исправлению частных ошибок в WMI, но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей сбросить и пересоздатьWMI репозиторий в Windows.
Исправление WMI репозитория, перерегистрация библиотек, перекомпиляция MOF файлов
В Windows 10/Windows Server 2016 вы можете проверить целостность репозитория WMI с помощью команды:
Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT или WMI repository verification failed), стоит попробовать выполнить “мягкое” исправление ошибок репозитория:
Данная команда выполняет проверку согласованности хранилища WMI и при обнаружении несогласованности перестраивает базу данных WMI.
Перезапустите службу WMI:
net stop Winmgmt
net start Winmgmt
Если стандартный способ исправления ошибок в WMI не помог, попробуйте следующий скрипт. Данный скрипт представляет собой ”мягкий” вариант восстановления службы WMI на компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле wmi_soft_repair.bat и запустить его с правами администратора. После окончания работы скрипта, перезагрузите Windows и проверьте работу WMI.
Сброс и пересоздание WMI репозитория (хранилища)
Если вам не помогли мягкие способ восстановления WMI, рассмотренные выше, придется перейти к более “жесткому” способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилищаWMI.
WMI репозиторий (хранилище) находится в каталоге %windir%\System32\Wbem\Repository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях WMI репозиторий может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.Если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание — это последняя шаг, к которому нужно прибегнуть только тогда, когда другие операции не помогают реанимировать WMI.
Следующая команда выполнит сброс базы данных WMI к исходному состоянию (как после чистой установки Windows). Используйте эту команду для выполнения hard reset репозитория WMI, если параметре salvagerepository не исправил проблему:
Совет. На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Это связано с тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такие программы скорее всего, придется переустанавливать в режиме восстановления.Если обе команды ( Winmgmt /salvagerepository и Winmgmt /resetrepository ) не восстановили консистентное состояние базы WMI, попробуйте выполнить “жесткое” пересоздание базы WMI вручную таким скриптом:
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
winmgmt /resetrepository
winmgmt /resyncperf
if exist Repos_bakup rd Repos_bakup /s /q
rename Repository Repos_bakup
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver
Данный скрипт полностью пересоздает хранилище WMI (старый репозиторий сохраняется в каталог Repos_bakup). После окончания работы скрипта нужно перезагрузить Windows. Затем протестируйте работу службы WMI простым запросом.
Проверьте состояние WMI репозитория. Если ошибки исправлены, команда winmgmt /verifyrepository должна вернуть:
В этой статье мы собрали основные способы, позволяющие продиагностировать и устранить неполадки службы и репозитория WMI.
Для чего нужна служба "Удаленный вызов процедур (RPC)"
Удаленный вызов процедур (RPC) - это протокол, который одна программа может использовать для запроса услуги у программы, расположенной на другом компьютере в сети, без необходимости разбираться в деталях сети. RPC используется для вызова других процессов на удаленных системах, таких как локальная система. Вызов процедуры также иногда называют вызовом функции или вызовом подпрограммы .
RPC использует модель клиент-сервер. Запрашивающая программа - это клиент, а программа, предоставляющая услуги, - это сервер. Подобно обычному или локальному вызову процедуры, RPC - это синхронная операция, требующая приостановки запрашивающей программы до тех пор, пока не будут возвращены результаты удаленной процедуры. Однако использование облегченных процессов или потоков, которые совместно используют одно и то же адресное пространство, позволяет одновременно выполнять несколько RPC.
Язык определения интерфейса (IDL) - язык спецификации, используемый для описания интерфейса прикладного программирования (API) программного компонента - обычно используется в программном обеспечении удаленного вызова процедур. В этом случае IDL обеспечивает мост между машинами на обоих концах связи, которые могут использовать разные операционные системы (ОС) и компьютерные языки.
Когда программные операторы, использующие структуру RPC, компилируются в исполняемую программу, в скомпилированный код включается заглушка, которая выступает в качестве представителя кода удаленной процедуры. Когда программа запускается и выполняется вызов процедуры, заглушка получает запрос и пересылает его клиентской программе и времени выполнения на локальном компьютере. При первом вызове клиентской заглушки она связывается с сервером имен, чтобы определить транспортный адрес, по которому находится сервер.
Данная служба есть в любой операционной системе Windows, начиная от Windows 7 и заканчивая Windows 11 и в любой из Windows Server редакции.
Как работает RPC?
Когда вызывается служба RPC (удаленный вызов процедуры), вызывающая среда приостанавливается, параметры процедуры передаются по сети в среду, в которой должна выполняться процедура, а затем процедура выполняется в этой среде. Когда процедура завершается, результаты передаются обратно в вызывающую среду, где выполнение возобновляется, как если бы оно возвращалось из обычного вызова процедуры.
Во время RPC выполняются следующие шаги:
Клиент RPC по 135 порту подключается к службе RPC Endpoint Mapper (сопоставления конечных точек), а далее уже запрашивает номер порта, где запущено нужное RPC приложение. Служба сопоставления конечных точек вернет клиенту RPC номер динамического RPC порта (диапазон 1024 – 65535), на котором работает нужная служба. Дальше уже все взаимодействие идет по TCP портуЕсли вы видите ошибку "Сервер RPC недоступен” (The RPC server is unavailable)", то у вас точно недоступен порт 135. Это может быть критичным для ряда ситуации. Например вы не сможете сохранить настройки RDS фермы, если у одного из хостов RDSH есть проблемы с RPC, то вы будите видеть ошибку "Could not change the connection state for server", вы не сможете перевести его в режим обслуживания (Drain Mode)
Или в приложении Terminal Services Manager будет ошибка при попытке получения данных "Сервер RPC недоступен".
Так же RPC может быть причиной проблемы в репликации контроллеров домена, где в логах Windows будет фигурировать ошибка ID 1722. Это очень не приятный момент, который может привести к большим проблемам.
Типы RPC
Существует пять типов RPC:
Почему может не работать служба RPC
- Удаленный компьютер с которым идет взаимодействие выключен
- На удаленном сервере не запущена или перестала работать служба RPC
- Подключение по RPC происходит не к тому серверу (Может быть проблема с DNS или IP адресом)
- Есть блокировки между клиентом и сервером на фаэрволе
- Используются некорректные настройки сетевого подключение на клиенте или сервере
Преимущества удаленного вызова процедур
К преимуществам удаленного вызова процедур можно отнести следующее:
Недостатки RPC
Некоторые из недостатков RPC включают следующее:
- Клиент и сервер используют разные среды выполнения для своих соответствующих подпрограмм, и использование ресурсов, например файлов, также является более сложным. Следовательно, системы RPC не подходят для передачи больших объемов данных.
- RPC очень уязвим для сбоев, потому что он включает в себя систему связи, другую машину и другой процесс.
- Единого стандарта для RPC не существует; это может быть реализовано множеством способов.
- RPC основан только на взаимодействии и, как таковой, не предлагает гибкости, когда дело касается аппаратной архитектуры.
Проверка доступности службы RPC
Если вдруг компьютер не ответил, то это не значит, что он не работает, может работать брандмауэр и просто блокировать ping пакеты.
- Далее выполните Nslookup, чтобы удостовериться, что нужное вам имя компьютера преобразовывается в нужный IP-адрес. Выполните:
Небольшой пример из практики, предположим, что вы мигрировали сервер в другую подсеть, в итоге в DNS должна быть изменена соответствующая запись, но Windows это поймет не сразу, так как у нее есть свой локальный кэш, он живет 15 минут, поэтому если при проверке DNS имени вам выдается не тот IP-адрес, вам необходимо произвести очистку кэша DNS.
- Далее я вам советую проверить отвечает ли порт. Напоминаю, что служба RPC Endpoint Mapper слушает порт под номером 135. В PowerShell введите команду:
Если удаленный RPC порт доступен вы в в строке TcpTestSucceeded будет стоять статус "True".
Если будет порт закрыт или блокируется, то ошибка "Сервер RPC недоступен (The rpc server is unavailable)" вам обеспечена. Поняв, что порт не отвечает, нужно удостовериться, что трафик от клиента до сервера не блокирует фаервол. По умолчанию в любой версии Windows есть встроенный брандмауэр. На время тестирования и поиска причины, я советую его выключить для всех профилей. Сделаем мы это через командную строку:
Данная команда выключит брандмауэр на всех трех профилях сетевой карты.
Далее если порт 135 стал доступен, то можно делать правила на удаленном сервере. Напоминаю, что нужно сделать правило для трех служб:
- Remote Procedure Call (RPC) - Удаленный вызов процедур (RPC)
- RPC Endpoint Mapper - Сопоставитель конечных точек RPC
- COM Server Process Launcher - Модуль запуска процессов DCOM-сервера
Еще хочу отметить, что если у вас есть сторонние антивирусные решения, например Касперский, то там так же есть встроенный сетевой экран, где так же нужно будет создать необходимые, разрешающие правила, которые корректно будут обрабатывать трафик динамических RPC портов.
Проверка работы служб RPC
Следующим шагом является проверка состояния службы на нужном вам сервере или компьютере. Проверять следует три службы:
- Remote Procedure Call (RPC) - Удаленный вызов процедур (RPC)
- RPC Endpoint Mapper - Сопоставитель конечных точек RPC
- COM Server Process Launcher - Модуль запуска процессов DCOM-сервера
В оболочке PowerShell выполните команду:
Для локального сервера - Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartTypeДля удаленного выполнения Enter-PSSession svt2019s01 далее Get-Service RpcSs,RpcEptMapper,DcomLaunch| Select DisplayName,Status,StartType
Напоминаю, что в команде svt2019s01, это имя удаленного сервера. Как видно из примера, все службы RPC запущены и имею автоматический тип запуска.
Если службы не запущены, то откройте оснастку "services.msc', зайдите в свойства службы и выставите автозапуск и попробуйте запустить вручную.
- Модуль запуска процессов DCOM-сервера — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DcomLaunch
- Сопоставитель конечных точек RPC — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcEptMapper
- Удаленный вызов процедур (RPC) — ветка реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\RpcSs
В каждом из этих расположений есть ключик "Start", выставите ему значение "2", это будет означать автоматический запуск службы.
Дополнительные сетевые проверки
В некоторых случаях причиной ошибок с доступностью RPC выступает сбой на сетевых адаптерах. Помогает сброс сетевых настроек и перезагрузка. В сети с Active Directory, старайтесь, чтобы на всех ваших сетевых адаптерах в свойствах были выставлены обе галки IPV4 и IPV6, особенно это актуально для контроллеров домена, где вы легко можете получать ошибку 1722. Еще может помочь отключение протокола Teredo у IPv6. В командной строке выполните:
System.Data.SqlClient.SqlException (0x80131904): Не удалось выполнить вход. Имя входа принадлежит недоверенному домену и не может использоваться в проверке подлинности Windows.
Компьютер является контроллером домена, а пользователь от имени которого все это запускается - Администратором. На это уже гугл затрудняется ответить, прошу совета, как быть, заранее спасибо.
Оценить 1 комментарий
сказано же MS не используйте на DC 2012r2 роль wsus
В случае, установки роли WSUS и сервера БД на разных серверах, существует ряд ограничений:
Сервер БД WSUS не может быть контроллером домена
Сервер WSUS не может быть одновременно сервером терминалов Remote Desktop Services
System.Data.SqlClient.SqlException (0x80131904): Не удалось выполнить вход. Имя входа принадлежит недоверенному домену и не может использоваться в проверке подлинности Windows.
На чем хранить БД WSUS?
Проверьте права на базу wsus.
Попробуйте перезапустить службу Windows Internal Database , и убедиться чтобы стартанула служба wsus.
System – Полный доступ;
Network Service – Полный доступ;
Администраторы – Полный доступ;
Пользователи – Чтение и выполнение.
System – Полный доступ;
Network Service – Полный доступ;
Администраторы WSUS – Полный доступ;
Администраторы – Полный доступ;
Пользователи – Чтение и выполнение.
Разрешения SMB:
Network Service – Полный доступ;Администраторы - Полный доступ; Администраторы WSUS - Полный доступ; Все - Чтение.
System – Полный доступ;
Network Service – Полный доступ;
Администраторы WSUS – Полный доступ;
Администраторы – Полный доступ;
Пользователи – Чтение и выполнение.
Разрешения SMB:
Network Service – Полный доступ; Администраторы - Полный доступ; Администраторы WSUS - Полный доступ; Все - Чтение.
0. Оглавление
1. Установка веб-сервера IIS
Запускаем Диспетчер серверов (Server Manager). Его можно запустить с ярлыка на панели задач, или же выполнив команду servermanager.exe (Для этого необходимо нажать комбинацию клавиш Win + R, в появившемся окне в поле «Открыть» (Open) написать имя команды и нажать «ОК» ).
Запустится Мастер добавления ролей и компонентов (Add Roles and Features Wizard). Нажимаем «Далее» (Next) на стартовой странице.
Тип установки (Installation Type) отмечаем «Установка ролей или компонентов» (Role-based or feature-based installation) и нажимаем «Далее» (Next).
Выбираем текущий сервер из пула серверов (Select a server from the server pool) и снова жмем «Далее» (Next).
На следующем шаге выбираем роль, которую необходимо установить. В нашем случае это роль «Веб-сервер (IIS)» (Web Server). Отмечаем ее в списке.
При этом мастер предложит нам добавить компоненты, необходимые для Веб-сервера, а именно «Консоль управления службами IIS» (IIS Management Console). Соглашаемся на установку дополнительных компонент нажав «Добавить компоненты» (Add Features) и жмем «Далее» (Next).
Оставляя список компонент без изменений нажимаем «Далее» (Next).
Ознакомившись с информацией о роли веб-сервера снова жмем «Далее» (Next).
Затем необходимо выбрать службы ролей, которые будут установлены для веб-сервера. Этот набор зависит от конкретных задач, которые будет выполнять сервер IIS.
Для установки FTP-сервера требуются компоненты:
- FTP-Сервер (FTP Server)
- Служба FTP (FTP Service)
- Расширяемость FTP (FTP Extensibility)
и т. д. Если выделить службу в списке, слева доступно ее краткое описание. Выбрав необходимые службы ролей жмем «Далее» (Next).
Устанавливаем флаг «Автоматический перезапуск конечного сервера, если требуется» (Restart the destination server automatically if required) если перезагрузка не помешает работе других пользователей и жмем «Установить» (Install) для начала установки указанных в списке служб.
Дожидаемся завершения установки веб-сервера (может произойти перезагрузка сервера) и нажимаем «Закрыть» (Close) для завершения работы мастера.
Возвращаемся в диспетчер серверов, в меню «Средства» (Tools) выбираем появившейся там пункт «Диспетчер служб IIS» (Internet Information Services).
В запустившемся Диспетчере служб IIS, в окне подключений (Connections) увидим только что установленные веб-сервер (соответствует сетевому имени компьютера) а также один веб-сайт, добавленный по умолчанию, с названием Default Web Site.
Также этот сайт можно просмотреть с любого другого компьютера в сети, забив в строку адресе IP компьютера где установлен веб-сервер IIS.
Файлы этого сайта, как и файлы всех других добавленных позже сайтов по умолчанию располагаются в каталоге C:\interpub\wwwroot.
Ну и соответственно, чтобы сайты расположенные на данном веб-сервере были доступны из сети Интернет по внешнему IP-адресу или доменному имени (о том как привязать доменное имя к IP-адресу читайте здесь), необходимо на маршрутизаторе выполнить проброс 80-ого порта на компьютер с установленным веб-сервером IIS.
2. Перезапуск сервера IIS
Иногда требуется перезапустить веб сервер IIS. Сделать это можно как из Диспетчера служб IIS, кликнув правой кнопкой мыши по серверу в окне подключений или из меню «Действия» (Action)
так и из командной строки, выполнив команду
- параметр /noforce необязателен и используется для защиты от потери данных в случае, когда службы IIS не могут быть остановлены в течение одноминутного периода ожидания.
- параметр <имя_компьютера> также необязателен при работе на локальном компьютере. В случае удаленного администрирования сервера IIS в качестве параметра <имя_компьютера> указывается имя NetBIOS компьютера, на котором выполняется перезапуск IIS.
При перезапуске веб сервера IIS происходит перезапуск следующих служб (если они устанавливались при установке компонент IIS):
Смотрите также:
Ниже приведена небольшая инструкция об изменении политики паролей в Microsoft Windows Server 2012 R2. По умолчанию политика паролей определена таким образом, что все пароли учетных записей пользователей должны удовлетворять следующим…
В данной статье я расскажу как добавить разрешающее правило в Брандмауэр Windows Server 2012 R2 (в Windows Server 2008 R2 действия аналогичны). Правило будем добавлять на примере работы сервера 1С:Предприятие…
Читайте также: