Зачем отключать или включать
Отключение сервисов в большинстве случаев несет в себе несколько задач:
- Освобождение оперативной памяти.
- Отключение просто ненужных в работе компонентов системы.
- Выключение мешающих работе или конфликтующих со сторонними программами.
В случае с Windows 10 появилось очень много параноиков, считающих, что операционная система крадет их личные данные. Выключить “шпионские функции винды” можно не только отключая те или иные компоненты в параметрах системы, но и останавливая некоторые из служб. Тех, которые можно назвать шпионящими, как минимум три:
- географического положения;
- диагностического отслеживания;
- «dmwappushservice».
Стоит их отключать или нет, дело ваше. Как это сделать, вы теперь знаете. Все зависит от того, причисляете ли вы себя к параноикам, которых с выходом новой ОС Майкрософт стало очень много.
Далее приведен список сервисов, которые можно остановить без вреда для общей работы операционной системы. Часть из них нужна для конкретных задач, поэтому изучите описание в расширенном виде списка. Итак, службы Windows 10, которые можно не нервничая отключить:
- Диспетчер задач
- Брандмауэр
- Беспроводную настройку
- Вторичный вход в систему
- Службу записи компакт-дисков
- Windows Search (стандартный поиск по файлам)
- Machine Debug Manager
- Сервер
- Службу загрузки изображений
- Перечисления переносных устройств
- Помощника по совместимости программ
- Регистрации ошибок
Посмотрите ещё: Почему Windows 10 глючит
Яркий пример ненужности — сервис записи компакт дисков на ноутбуке без дисковода. А еще заметьте, что некоторые из программ при установке запускают свои службы, которые зачастую ненужны. Разумеется, любую службу вы сможете вернуть в рабочее состояние, выбрав тип запуска “Автоматически” и запустив компонент.
Пример отключения в случае конфликта со сторонними программами: Брандмауэр отключается, чтобы правильно работал скачанный и установленный Firewall.
- http://helpadmins.ru/kak-otkryt-sluzhby-v-windows-10/
- https://lumpics.ru/how-enter-services-on-windows-10/
- https://windowsprofi.ru/win10/nastrojka-sluzhb-windows-10.html
SC
Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:
Удаляется же служба еще проще:
Однако, у данного метода есть один большой существенный недостаток — с помощью данной утилиты создать службу можно только из программы, которая поддерживает работу службой. По этому, запустить какое попало приложение как службу данным способом не получится — но, можно воспользоваться сторонней утилитой NSSM, о которой речь пойдет ниже.
Работа с элементами
В Windows PowerShell есть командлеты, которые умеют работать с элементами, под элементами здесь можно понимать: файлы, папки, ключи реестра и так далее.
- Clear-Item — очищает содержимое элемента, но не удаляет сам элемент;
- Copy-Item – копирует элемент;
- Get-Item — получает элемент в указанном месте;
- Invoke-Item — выполняет действие по умолчанию над указанным элементом;
- Move-Item – перемещает элемент;
- New-Item – создает новый элемент;
- Remove-Item – удаляет указанные элементы;
- Rename-Item — переименовывает элемент в пространстве имен поставщика Windows PowerShell;
- Set-Item — изменяет элемент;
- Get-ChildItem — возвращает элементы и дочерние элементы в одном или нескольких определенных местах;
- Get-Location – выводит информацию о текущем местонахождении.
Отключение ненужных служб в Виндовс 10
Открыв любым из рассмотренных выше способов оснастку «Службы», вы сможете увидеть большой перечень важных для операционной системы компонентов. Как уже было сказано во вступлении данной статьи, многие из них выполняются в фоновом режиме, однако это не значит, что абсолютно все они нужны для корректного и стабильного функционирования Windows 10. Более того, некоторые из них не только являются бесполезными, но и оказывают негативное влияние на общую производительность, а потому могут быть отключены без каких-либо негативных последствий. Узнать, работу каких фоновых процессов можно остановить, поможет наше подробное руководство по первой из представленных ниже ссылок. Во втором рассказывается о том, как это сделать.
Подробнее:Какие службы в Виндовс 10 можно отключитьКак отключить ненужные службы в Виндовс 10
Часть 2. Устранение неполадок Services.msc, не открывающих Windows 10
Однако иногда, если вы сталкиваетесь с ошибкой services.msc, не открывающей Windows 10. Вы можете проверить 3 исправления ниже, чтобы решить эту проблему.
Исправление 1. Проверьте тип запуска служб
Если некоторые службы Windows не запускаются, вы можете воспользоваться описанными выше способами, чтобы открыть службы Windows и найти конкретную службу в списке. Щелкните правой кнопкой мыши службу и выберите Свойства . Проверьте, установлен ли его тип запуска на Отключено , если да, измените тип запуска и нажмите Начало кнопку, чтобы увидеть, может ли он запуститься.
Исправить 2. Запустите Windows 10 в безопасном режиме
Если службы Windows не запускаются, вы можете перезагрузить компьютер, чтобы проверить, может ли он запуститься. Если перезагрузка компьютера не решит эту проблему, вы можете запустить Windows 10 в безопасном режиме, чтобы проверить, запускается ли приложение «Службы».
Как запустить командную строку от имени администратора
Способ 1. С помощью меню «Опытного пользователя» (Win + X)
Этот способ очень удобен в Windows 10. Начиная с Windows 8, Microsoft внедрила меню «Опытные пользователи», которое содержит много полезных элементов, таких как Панель управления, Сетевые подключения и так далее. Windows 10 также поставляется с таким меню. Он содержит пункт командной строки (Admin), который является именно тем, что нам нужно.
Этим же способом, можно открыть по другому, нажмите правой кнопкой мыши на значок Windows, распложенный в левом нижнем углу экрана.
Вместо «Командной строки (администратор)», может отображаться как Windows PowerShell (администратор).
Windows PowerShell — командная строка с оболочкой нового поколения, которая предлагает огромные возможности тем, кто готов потратить немного времени на изучение её команд.
Как поменять powershell на cmd в windows 10? Если вы хотите вернуть в это меню правильную «Командную строку», откройте «Настройки», перейдите в «Персонализация» и перейдите на вкладку «Панель задач». Установите для параметра «Заменить командную строку Windows PowerShell» значение «Выкл».
Способ 2. Через диспетчер задач
Примечание: Вы должны войти в систему как администратор, чтобы открыть командную строку с правами администратора из этого метода.
- Нажмите Ctrl + Shift + Esc, чтобы открыть диспетчер задач в Windows 10. Или щелкните правой кнопкой мыши на панели задач и выберите диспетчер задач.
- Затем в меню диспетчера задач нажмите «Файл».
-
Затем удерживая клавишу CTRL, нажмите «Запустить новое задачу», которое откроет командную строку с правами администратора.
Способ 3. Через поиск из меню Пуск
- Откройте меню «Пуск» и введите cmd, чтобы открыть окно поиска.
-
Когда в результатах поиска появится «командная строка», нажмите правой кнопкой мыши, а затем нажмите «Запуск от имени администратора».
Способ 4. Через меню Пуск
- Откройте меню «Пуск» Windows 10
- Затем прокрутите вниз, пока не найдете папку — Служебные — Windows.
- Нажмите на папку Служебные — Windows, чтобы развернуть ее, затем нажмите правой кнопкой мыши командную строку, затем выберите «Дополнительно» и нажмите « Запуск от имени администратора».
Способ 5. Через проводник
- Откройте проводник (Win + E) и перейдите в папку C:WindowsSystem32.
- Прокрутите вниз, пока не найдете cmd.exe или нажмите клавишу «C» на клавиатуре, чтобы перейти к cmd.exe.
-
Нажмите правой кнопкой мыши по cmd.exe, а затем нажмите «Запуск от имени администратора».
Способ 6. С помощью диалогового окна «Выполнить»
- Откройте диалоговое окно «Выполнить». Для этого нажмите сочетание клавиш Win+R.
- Введите текст «cmd».
- Нажмите сочетание клавиш Ctrl+Shift+Enter или Ctrl+Shift и ОК с помощью мыши.
- Если появится запрос от контроля учетных записей, нажмите ОК.
- https://viarum.ru/kak-otkryit-cmd-win-10/
- https://remontka.pro/make-user-administrator-windows-10/
- https://comhub.ru/komandnuyu-stroku-ot-imeni-administratora-v-windows-10/
Осуществляем фильтрацию (используя where-object)
Фильтрация служб осуществляется с помощью командлета Where-Object (where – сокращение для командлета). Все, что нам нужно от PowerShell в этом случае, так это получить только те службы, у которых статус равен “stopped”.
PowerShell получает информацию обо всех службах и передает их (с помощью “|”) в следующую команду, которая осуществляет просмотр каждого объекта. Если свойство статуса объекта равно “stopped”, она остается в конвейере (pipeline), в противном случае она из него исключается. В конце выражение PowerShell отображает те объекты, которые остались в конвейере.Результаты приведены ниже.
Теперь давайте попробуем найти одну службу на нескольких машинах. Вывод отформатируем в таблицу.
Сценарии, функции и модули в Windows PowerShell
Если Вы написали некий алгоритм, скорей всего Вы захотите сохранить его, для того чтобы в дальнейшем им пользоваться. В Windows PowerShell для этих целей существует механизм использования сценариев.
Суть данного механизма следующая, Вы пишите нужный Вам набор команд и сохраняете его в качестве сценария — это простой текстовый файл с расширением .PS1.
Затем, для того чтобы выполнить этот сценарий, Вы просто запускаете его в оболочке PowerShell. При этом Вам необходимо либо указать полный путь к файлу сценария, либо перейти в каталог со сценарием и вызвать его по имени.
Важно!
По умолчанию выполнение сценариев в Windows запрещено! Для того чтобы посмотреть политику выполнения сценариев выполните командлет Get-ExecutionPolicy. В результате он вернет действующую политику, например:
- Restricted – блокируется выполнение любых сценариев (значение по умолчанию);
- AllSigned – разрешено выполнение сценариев, которые имеют цифровую подпись;
- RemoteSigned – разрешено выполнение локальных сценариев, все скачанные сценарии должны иметь цифровую подпись;
- Unrestricted — разрешено выполнение любых сценариев (не рекомендуется, так как небезопасно!).
Для разрешения выполнения сценариев необходимо использовать командлет Set-ExecutionPolicy с одним из вышеперечисленных параметров.
Например, для разрешения выполнения локальных сценариев выполним следующую команду, и согласимся с внесением изменений, нажав Y.
Set-ExecutionPolicy RemoteSigned
В сценарии можно передавать параметры, делать их обязательными или задавать значение по умолчанию.
В Windows PowerShell предусмотрен механизм создания собственных функций, которые также как и встроенные командлеты можно будет использовать в оболочке PowerShell.
Для этого необходимо указать ключевое слово Function и затем в фигурных скобках {} написать алгоритм работы этой функции, т.е. набор команд (например, какая-нибудь часто используемая процедура: создать пользователя с определенными правами, очистить определенные каталоги и так далее). Потом необходимо сохранить все это в сценарий, но только уже с расширением .psm1, так как этот файл будет являться уже модулем.
Это еще не все, этот файл необходимо поместить в каталог, в котором PowerShell ищет модули. Таких каталогов несколько (специальный каталог в профиле пользователя, каталог, где установлен PowerShell), их можно посмотреть в переменных окружения PowerShell. Для этого выполните следующую команду
Get-ChildItem Env:\PSModulePath | Format-Table -AutoSize
После того как Вы поместите написанный Вами модуль в специальный каталог, Вы сможете обращаться к своим функциям как к обычным командам PowerShell.
Перезагрузка компьютера с задержкой по времени
Еще очень частая ситуация, это перезапуск компьютера, но через определенное время, предположим, через 60 секунд, чтобы какие-то другие вещи успели отработать, очень часто применяется в сценариях и скриптах. Для выполнения это задачи есть командлет Start-Sleep. Пишем команду:
Start-Sleep -Seconds 60; Restart-Computer -ComputerName w10-cl03 -Force
В ключе -Seconds вы задаете время в секундах.
так же у вас есть возможность определить механизм, который используется для аутентификации учетных данных пользователя. Этот параметр был введен в Windows PowerShell 3.0. Называется этот ключ -WsmanAuthentication. На выбор у вас будет пять вариантов: Basic, CredSSP, Default, Digest, Kerberos и Negotiate.
Аутентификация поставщика услуг безопасности учетных данных (CredSSP), при которой учетные данные пользователя передаются на удаленный компьютер для проверки подлинности, предназначена для команд, требующих проверки подлинности на нескольких ресурсах, например для доступа к удаленному сетевому ресурсу. Этот механизм увеличивает риск безопасности при удаленной операции. Если удаленный компьютер скомпрометирован, переданные ему учетные данные можно использовать для управления сетевым сеансом.
В моем примере я буду использовать проверку подлинности Kerberos, напоминаю, что для этого у вас на удаленных компьютерах должна быть настроена служба WinRM и политика, определяющая с каких ip-адресов вы можете производить подключение к ней. В итоге команда принимает такой вид:
Restart-Computer -ComputerName w10-cl02, w10-cl03 -Force -WsmanAuthentication Kerberos
После ее выполнения удаленные компьютеры уходят в перезагрузку.
Get-Service Status from Remote Computer using PowerShell
You can use the Get-Service cmdlet to get the status of services not only on the local but also on remote computers. To do this, use the –ComputerName parameter. You can use the NetBIOS, FQDN name, or an IP address as a computer name. Connection to remote computers is established not through PowerShell Remoting (WinRM), but through Service Manager (similar to the sc.exe command).
get-service wuauserv -ComputerName remotePC1
You can check the status of the services on multiple remote computers at once (their names must be separated with commas).
get-service spooler -ComputerName remotePC1,remotePC2, remotePC3| format-table Name,Status,Machinename –autosize
You can also check the health of the service on a list of remote computers from a plain text file:
$list = get-content “c:\ps\comp_list.txt” Get-Service -Computername $list -Name spooler | Select-Object MachineName,Name,Displayname,Status | Sort-Object Status
Or you can check the service state on all computers in a specific Active Directory OU:
$Computers = (Get-ADComputer -SearchBase ‘OU=Servers,OU=UK,DC=theitbros,DC=com’).names foreach ($computer in $computers) { Get-Service -ComputerName $computer.Name -Name wuauserv | Where-Object {$_.status -eq "running"} | select status,name,machinename }
To restart a service on a remote computer, use the following command:
Get-Service wuauserv -ComputerName server1| Restart-Service
To access remote computers from within PowerShell Core, you must use PowerShell Remoting over WinRM. For example, you can poll service status on multiple remote computers using the Invoke-Command. For example:
$cred = Get-Credential Invoke-Command -ComputerName dc03,dc02 {get-service wuauserv} -Credential $cred
Работа с сетью в Windows PowerShell
Для администрирования сети в Windows PowerShell существуют такие командлеты как:
- Disable-NetAdapter – командлет отключает сетевой адаптер;
- Enable-NetAdapter – данный командлет включает сетевой адаптер;
- Rename-NetAdapter — переименовывает сетевой адаптер;
- Restart-NetAdapter — перезапускает сетевой адаптер;
- Get-NetIPAddress – выводит информацию о конфигурации IP-адреса;
- Set-NetIPAddress — изменяет конфигурацию IP-адреса;
- New-NetIPAddress — создает и настраивает IP-адрес;
- Remove-NetIPAddress — удаляет IP-адрес и его конфигурацию;
- Get-NetRoute — выводит таблицу маршрутизации IP;
- Set-NetRoute — изменяет таблицу маршрутизации IP;
- New-NetRoute — создает запись в таблице маршрутизации IP;
- Remove-NetRoute — удаляет одну или несколько записей (IP маршрутов) из таблицы маршрутизации IP;
- Get-NetIPv4Protocol — выводит информацию о конфигурации протокола IPv4;
- Get-NetIPv6Protocol — выводит информацию о конфигурации протокола IPv6;
- Get-NetIPInterface — выводит информацию о свойствах интерфейса IP;
- Get-NetTCPSetting — показывает информацию о настройках и конфигурации TCP;
- Test-Connection – командлет посылает ICMP пакеты к одному или нескольким компьютерам, т.е. «пингует» компьютеры.
Получаем статус службы на удаленных компьютерах
До этого нас интересовало получение информации о статусе служб на локальном компьютере. Однако управление службами осуществляется на удаленных компьютерах. Если посмотреть справку по Get-Service, то можно увидеть наличие у этого командлета параметра –Computername.
В данном случае подключение к удаленным компьютерам осуществляется без включения функции удаленного управления PowerShell. Если вы можете управлять службами, используя инструменты командной строки (sc.exe или консоль управления Service Manager), вы можете использовать PowerShell. Давайте взглянем на пример:
Любая команда, которую я демонстрировал, можно использовать для передачи удаленному компьютеру. Даже нескольким компьютерам, если у вас есть соответствующие права на удаленном компьютере. Если вы используете PowerShell v3, то можно легко выбрать одну службу на множестве компьютеров.
Удаленное выполнение PowerShell с помощью Invoke-Command
Командлет Invoke-Command позволяет выполнить команду на одном или нескольких удаленных компьютерах.
Например, для запуска одиночной команды на удаленном компьютере можно использовать такую команду:
Invoke-Command -ComputerName 10.10.10.12 -ScriptBlock {$PSVersionTable.PSVersion} Major Minor Build Revision PSComputerName ----- ----- ----- -------- -------------- 5 1 19041 610 192.168.98.12
Либо с авторизацией
Invoke-Command -ComputerName 10.10.10.12 -Credential Domain\UserName -ScriptBlock {$PSVersionTable.PSVersion}
Эта команда выведет в вашу консоль значение версии PowerShell, установленной на удаленном компьютере, имя которого указано в параметре . В блоке указывается команда, которую нужно запустить на удаленном компьютере.
Можно задать несколько команд в блоке , их нужно разделить точкой с запятой. Например, следующая команда выведет текущий часовой пояс и изменит его на другой:
Invoke-Command -ComputerName 110.10.10.12 -ScriptBlock {Get-TimeZone| select DisplayName;Set-TimeZone -Id "Russian Standard Time"} DisplayName PSComputerName RunspaceId ----------- -------------- ---------- (UTC+03:00) Москва, Санкт-Петербург 10.10.10.12 a5f90193-b5d0-42f3-9cee-d2ec7378b513
позволяет выполнять не только отдельные команды, но и запускать скрипты PowerShell. Для этого используется аргумент (вместо –ScriptBlock). При этом вы указываете путь к локальному PS1 файлу скрипта на вашем компьютере (вам не нужно копировать файл скрипт на удаленный компьютер):
Invoke-Command -ComputerName HostName -FilePath c:\Path\to\file\ScriptName.ps1
Получение обязательных и зависимых служб
Командлет Get-Service имеет два параметра, очень полезных для управления службами. Параметр DependentServices получает службы, зависящие от текущей службы. Параметр RequiredServices получает службы, от которых зависит текущая служба.
Эти параметры просто выводят значения свойств DependentServices и ServicesDependedOn (alias=RequiredServices) объекта System.ServiceProcess.ServiceController, выводимые командой Get-Service, при этом упрощая команды и делая информацию проще для восприятия.
Следующая команда позволяет получить службы, требуемые службой LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -RequiredServices Status Name DisplayName ------ ---- ----------- Running MRxSmb20 SMB 2.0 MiniRedirector Running bowser Bowser Running MRxSmb10 SMB 1.x MiniRedirector Running NSI Network Store Interface Service
Следующая команда позволяет получить службы, для которых требуется служба LanmanWorkstation.
PS> Get-Service -Name LanmanWorkstation -DependentServices Status Name DisplayName ------ ---- ----------- Running SessionEnv Terminal Services Configuration Running Netlogon Netlogon Stopped Browser Computer Browser Running BITS Background Intelligent Transfer Ser...
Кроме того, можно получить список всех служб, связанных зависимостями. Именно это делает следующая команда, использующая командлет Format-Table для отображения свойств Status, Name, RequiredServices и DependentServices служб компьютера.
Get-Service -Name * | where {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto
Создание сервисов с New-Service
Для создания сервиса необходимо указать два параметра — это имя и путь до бинарного файла:
В PS 5.1 не предусмотрена команда удаления, она появилась в версии 6.1, которая устанавливается отдельно и может работать иначе. Для удаления сервисов, а так же частичного изменения, используется WMI. Указывайте все возможные параметры, что бы в последующем не лезть в WMI.
Параметры, которые в последующем нельзя будет изменить через PS:
- DisplayName — полное отображаемое имя.
- Credential — учетная запись, под которой будет происходить запуск.
- DependsOn — от кого будет зависеть.
При объявлении переменной $credential у нас запросятся учетные данные (логин/пароль). По умолчанию сервис работает под текущим аккаунтом. Я создавал сервис на доменном компьютере и пока я не ввел FQDN вид [email protected] я получал ошибку:
Service ‘Testing Services In Powershell (TestService1)’ cannot be created due to the following error: The account name is invalid or does not exist, or the password is invalid for the account name specified
Кроме этого есть параметры, которые возможно изменить через команды выше:
- Description — описание.
- StartupType — тип запуска.
Работа со службами и процессами
PowerShell, конечно же, умеет управлять службами и процессами в Windows, для этого существуют такие командлеты как:
- Get-Process – выводит информацию о запущенных процессах на компьютере;
- Start-Process – запускает один или несколько процессов на компьютере;
- Stop-Process — останавливает один или несколько запущенных процессов;
- Get-Service – выводит информацию о службах;
- Restart-Service – перезапускает службу;
- Start-Service – запускает службу;
- Stop-Service — останавливает службу;
- Suspend-Service – приостанавливает работу службы;
- Set-Service – с помощью данного командлета можно изменить свойства службы, например, описание, отображаемое имя и режим запуска. Также его можно использовать для запуска, остановки или приостановки службы.
Что такое Windows PowerShell?
PowerShell разработан на основе среды CRL и платформы .NET Framework и в отличие от командной строки, которая принимает и возвращает текст, Windows PowerShell работает с объектами. У каждого объекта в PowerShell есть свойства и методы, которые можно использовать для управления этими объектами.
В Windows PowerShell Microsoft разработала концепцию командлетов (cmdlets), которая представляет собой систему именования команд «Глагол-Существительное». Данная система позволяет системным администраторам быстрей освоить и упростить работу с PowerShell.
С помощью Windows PowerShell можно:
- Получать доступ к файловой системе;
- Управлять реестром;
- Управлять службами;
- Управлять процессами;
- Настраивать операционную систему;
- Устанавливать программное обеспечение;
- Устанавливать роли и компоненты сервера;
- Осуществлять администрирование и конфигурирование ролей и компонентов сервера;
- Писать и использовать сценарии для автоматизации управления и администрирования;
- Выполнять другие задачи системных администраторов.
Windows PowerShell содержит многие часто используемые утилиты и команды, запускаемые из командной строки, например ipconfig, ping и другие. Сделано это для того, чтобы облегчить переход системных администраторов с командной строки на PowerShell.
Также для удобства многие часто используемые команды и утилиты в PowerShell имеют синонимы (Alias), например cls — это синоним командлета Clear-Host, dir синоним Get-ChildItem (полный список синонимов можно посмотреть путем запуска командлета Get-Alias).
Для упрощения поиска нужной команды в PowerShell есть специальный командлет Get-Command, с помощью которого можно осуществлять поиск, как по глаголу, так и по существительному. Все команды в Windows PowerShell сгруппированы в модули (например, Hyper-V, NetTCPIP), что также упрощает поиск нужной команды.
После того как нужная команда найдена, можно посмотреть инструкцию по работе с этой командой, т.е. справку, для этих целей есть специальный командлет Get-Help, например следующая команда покажет справку по командлету Get-Command:
Get-Help Get-Command
Справка в Windows PowerShell может быть краткой, детальной (параметр -Detailed), полной (параметр -Full), а также можно выводить только примеры (параметр — Examples). Следующая команда покажет только примеры использования командлета Get-Command:
Get-Help Get-Command -Examples
Справка PowerShell обновляемая, т.е. ее можно обновить командой Update-Help.