Как выключить все компьютеры в домене
Обновлено: 04.07.2024
Для чего выводить компьютеры из домена?
И так если вы задались этим вопросом, то у вас как минимум есть домен Actvie Directory и вы хотели бы в нем навести порядок (Если не знаете, что такое Active Directory, то читайте об этом по ссылке слева). Наверняка многие пользователи могут спросить, зачем вообще проводить эту процедуру, на это есть ряд причин:
- Обычно операцию вывода из домена (Unjoin Windows) производят в ситуациях, когда компьютер может вылетать из домена, пример он не был активен более одного месяца, был банальный ремонт, а потом его решили ввести в эксплуатацию, в таких ситуациях люди ловят ошибку "отсутствуют серверы, которые могли бы обработать запрос".
- Просто для правильного соблюдения рекомендаций Microsoft, чтобы у вас не оставались лишние, ненужные объекты в AD, в противном случае, вам придется производить самостоятельный поиск неактивных компьютеров в Active Directory и вычищать все вручную.
- Третья причина, это переустановка сервера, например, обновление редакции, и если до этого вы правильно не вывели компьютер из домена, то при попытке ввести в домен Windows Server вы получите ошибку, что такой компьютер уже есть.
Методы исключения компьютера из домена
- Первый метод, это классический, через оснастку свойства системы
- Второй метод, это применимый для Windows 10 и Windows Server 2016
- Второй метод вывода компьютера из домена, это использование PowerShell
- Третий метод, это через утилиту netdom, но это для Windows Server платформ, хотя вам никто не мешает ее закачать отдельно, она идет в составе Windows Server 2003 Resource Kit Tools, про него я вам рассказывал в статье про утилиту Robocopy, принцип ее получения такой же.
Меры предосторожности
Перед тем как вы отсоедините нужный вам компьютер от домена Active Directory, убедитесь, что у вас на нем есть учетная запись, с административными правами и вы знаете от нее пароль, в противном случае, вам придется производить сброс пароля администратора на данной рабочей станцииВывод компьютера из домена классическим методом
Данный метод подойдет абсолютно для любой версии Windows, начиная с Vista. Тут все просто вы открываете всем известное окно выполнить (Сочетанием клавиш WIN и R) и пишите в нем вот такую команду sysdm.cpl и нажмите OK.
У вас откроется окно "Свойства системы - Имя компьютера"
Так же в него можно попасть и другим методом, через свойства значка "Этот компьютер". Щелкните по нему правым кликом и выберите свойства. В открывшемся окне "Система" выберите пункт "Изменить параметры"
В окне "Имя компьютера" нажмите кнопку "Изменить", далее в открывшемся окошке "Изменение имени компьютера или домена" деактивируйте поля "Является членом домена" и выставите рабочей группы.
Заполните поле имени рабочей группы и нажмите кнопку "OK", у вас появится окно:
После отсоединения от этого домена для входа на данный компьютер потребуется пароль локального администратора. Чтобы продолжить, нажмите кнопку "OK"Вам сообщат, что вы теперь являетесь членом рабочей группы. Будет произведена перезагрузка вашей рабочей станции, в моем примере, это Windows 10.
При правильном выводе компьютера из Active Directory, вы увидите, что в оснастке ADUC, данный компьютер будет отключен в контейнере, где он располагался. Об этом будет говорить стрелка вниз на его значке. Напоминаю, что это классический метод исключения из AD, подходит абсолютно для всех систем Windows.
Исключение из домена Windows 10 и Windows Server 2016
Данный метод, будет подходить исключительно для последних версий систем Windows 10 и Windows Server 2016, на момент написания статьи. В случае с десяткой, где интерфейс кардинально меняется от версии к версии, последовательность действий будет разниться.
Метод вывода для Windows 10 версий 1503-1511
Данный метод для Windows 10 Threshold и Threshold 2. Если не знаете, какая у вас версия, то вот вам статья, как определить версию Windows. Вам необходимо открыть параметры системы, делается, это либо через кнопку "Пуск" или же сочетанием клавиш WIN и I одновременно. Находим там пункт "Система".
В самом низу находим пункт "О Системе" и видим кнопку "Отключиться от организации", нажимаем ее.
В окне "Отключение от организации" просто нажмите продолжить.
У вас просто появится окно с предложением о перезагрузке, соглашаемся.
В оснастке ADUC данный компьютер так же был отключен.
Метод вывода для Windows 10 версий 1607 и выше
Данный метод будет рассмотрен для версии Windows 10 1803, так как я писал, что концепция изменилась, функционал перенесли в другое место. Вы все так же открываете "Параметры Windows 10", но уже переходите в пункт "Учетные записи"
Далее находите пункт "Доступ к учетной записи места работы или учебного заведения" и нажимаете отключиться.
У вас выскочит окно с уведомлением:
Вы действительно хотите удалить эту четную запись? Ваш доступ к ресурсам, таким как электронная почта, приложения, сеть и всему связанному содержимому также будет удалены. Ваша организация может также удалить некоторые данные, хранящиеся на этом устройстве.После подтверждения, у вас появится еще одно окно, в котором вас еще раз уведомят и захотят удостовериться в ваших действиях.
После отключения вы не сможете войти в систему этого компьютера с помощью учетной записи организации. Если установлен и запущен Bitlocker, обязательно сохраните копию ключа восстановления Bitlocker где-нибудь не на этом компьютереНажимаем кнопку "Отключить"
Открыв оснастку ADUC, я обратил внимание, что учетная запись компьютера, которого я вывел из домена, не отключилась, что очень странно, поэтому сделайте это в ручную.
Исключение из домена через PowerShell
Я вам не перестаю повторять, что PowerShell, просто обязан быть в вашем инструментарии системного администратора, он умеет если не все, то почти все. Открываем оснастку PowerShell от имени администратора и вводим команду:
Remove-Computer -UnjoinDomaincredential имя домена\логин учетной записи -PassThru -Verbose -RestartУ вас откроется форма с вводом пароля учетной записи,что вы указали для вывода рабочей станции из AD, указываем пароль и нажимаем "OK"
У вас спросят подтверждения на ваши действия, соглашаемся и вводим Y.
Все ваш Windows 10 с помощью PowerShell был выведен из состава домена Active Directory. В оснастке ADUC, данный компьютер был отключен, в отличии от предыдущего метода.
Исключение из домена через NETDOM.EXE
Напоминаю, что на клиентских Windows системах этой утилиты нет и ее нужно отдельно скачивать, она идет в составе Windows Server 2003 Resource Kit Tools. Сама команда вывода из домена выглядит вот так и запускается в cmd от имени администратора:
Подключаюсь к Домен Контроллеру и запускаю оснастку управления групповыми политиками:
Start — Control Panel — Administrative Tools — оснастка: Group Policy Management
после разворачиваем до уровня структуры Active Directory текущего домена : Group Policy Management — Forest: polygon.local — Domain — Polygon.local,
здесь создаем новую политику (Советую на каждую задачу создавать свою политику, так проще отслеживать что не работает и что работает) с именем, как обычно я именую все свои политики: через правый клик мышью на polygon.local → Create a GPO in this domain, and Link it here → GPO_Shutdown, т. к. политика у меня будет назначена на конкретные компьютеры (в последствии можно создать группу компьютеров и прилинковать ее к создаваемой политики), поэтому на вкладке Scope раздела Security Filter удаляем все, а назначаем имя вашей тестовой (пока) рабочей станции (в моем случае это W7X86) на которой будем тестировать работоспособность групповой политики, а позже уже добавим боевые компьютеры.
Теперь переходим к настройки данного шаблона групповой политики, на политике GPO_Shutdown через правый клик выбираем свойство → Edit и редактируем настройки ориентированные на компьютер (Computer Configuration)
GPO_Shutdown → Computer Configuration — Preferences — Control Panel Settings — Scheduled Tasks → далее правый клик на пустом месте справа, New → Scheduled task и приводим создаваемое задание к следующему виду:
Arguments: /s /c "ekonomim energy" /d p:0:0
Отмечаем пункт: Run As
User Name: POLYGON\ekzorchik
Confirm Password: 712mbddr@
отмечаем пункт: Enable (scheduled task runs at a specified time)
, где учетная запись ekzorchik — это учетная запись которая обладает правами «Администратора домена».
После переходим на вкладку: Schedule где указываем когда создаваемое задание прописанное групповой политикой на компьютерах локальной сети организации будет приведено в действие — мне нужно каждый день в 21.30
Scheduled Task: Daily
Start Time: 23:10:00 PM
Schedule Task Daily: Every 1 days
После нажимаем Apply и Ok и закрываем оснастку управления групповыми политиками.
Теперь чтобы политика применила на рабочую станцию, станцию пользователь должен перезагрузить, но вот всплывает на повестку дня еще одна задача — ждать когда же пользователь соизволит перезагрузить системы, станет ли не невмоготу работать на тормозящей или я как системный администратор помогу ему в этом единожды перед временем назначенным в этой политике.
Make sure that the default admin$ share is enabled on W7X86.
Проверяем на рабочей станции W7X86 что после перезагрузки политика успешно назначилась и в планировщике задания создалось задание столь необходимой важности:
(В представленных скриншотах у меня фигурирует время 23:19 это время когда я писал заметку и тестировал, но на работе у меня время точно соответствует времени об окончании рабочего дня для всех сотрудников: 21:30)
Пуск — Панель управления — Администрирование — Планировщик Заданий
C:\Users\alektest.POLYGON>gpresult /r
если же политики в выводе выше нет, то принудительно подгружаем ее:
C:\Users\alektest>gpupdate
Обновление политики пользователя завершено успешно.
Обновление политики для компьютера успешно завершено.
Перезагружаем рабочую станцию.
Если же ее и после этого нет, то значит у Вас скорее всего проблемы в домене, к примеру время на сервере и на рабочих станциях различно, к примеру не установлено обновление: Windows6.1-KB2998527-x86.msu
Как только наступило назначенное время рабочая станция успешно перезагружается.
Пуск — Панель управления — Администрирование — Просмотр событий — Журналы Windows — Система
Код события (Event ID): 1074
Дата: 07.10.2015 23:55:00
Но не заходить же на каждую станцию и проверять, а отработало ли задание — можно конечно же и так, к примеру поручить сотрудникам сделать выборочную проверку. А вообще можно и по другому, к примеру у Вас поднят сервис централизованного логирования (к примеру LogAnalyzer) и уже в нем, произвести сортировку по данному Event ID коду. Да может это все не зачем, все существующие компьютеры в домене Вы знаете и они же также стоят у Вас в инвентаризации, как это сделано у меня через GLPI. Надеюсь я этой заметкой помог не только себе, но и многим другим в решение аналогичной задачи. На этом все, с уважением автор блога — Олло Александр.
У меня появилась задача по организации оперативного выключения удаленных серверов в один клик. Причем выключать сервера должны разнообразные пользователи, в том числе и без знаний и понимания принципов работы сервера. То есть они должны просто нажать кнопку, чтобы сервер автоматически завершил свою работу.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.Причем выключать по сети нужно как windows серверы, так и linux различных дистрибутивов - ubuntu, centos, freebsd. То есть решение должно быть простое и надежное.
Дистанционное выключение Windows сервера
Начнем с самого сложного. На практике реализовать надежный способ выключения windows машин по сети для меня оказалось сложнее, чем linux. Методов и подходов к решению данной задачи много. Я пробовал разные варианты и остановился на одном, который мне показался самым надежным, он сработал без проблем во всех случаях во время тестирования.
Обязательным условием удаленного выключения сервера является сетевой доступ к нему по rdp. Вы можете находится в локальной сети с ним, подключиться по vpn или пробросить rdp соединение редиректом со шлюза. Не важно, главное попасть в систему по rdp.
Принцип работы удаленного отключения следующий:
- На компьютере или сервере создается пользователь, которому будет разрешено подключаться по rdp и завершать работу сервера.
- В автозагрузке этого пользователя будет скрипт для завершения работы.
- Пользователям, которые будут удаленно выключать сервер, дается специально подготовленный rdp клиент, который без всяких запросов будет подключаться нужным пользователем, у которого будет срабатывать скрипт на завершение работы.
Все достаточно просто, но на каждом этапе я сталкивался с проблемами, которые требовали не тривиального решения. Но обо все по порядку.
Итак, идем на север и создаем там простой bat файл следующего содержания:
Сохраняем файл и создаем пользователя, под которым будем выключать сервер. Не забудьте добавить этому пользователю разрешение подключаться по rdp. Если вы выключаете компьютер с десктопной системой, то прав обычного пользователя достаточно. Если же вам надо погасить Windows Server, то пользователя нужно либо сделать админа, либо дать ему права на разрешение выключение сервера через локальную политику безопасности. Живет эта политика по адресу - параметры безопасности - локальные политики - назначение прав пользователей - завершение работы системы.
Вот тут я напоролся на первые неприятности. Я назвал свой скрипт shutdown.bat и очень долго не мог понять, почему он не срабатывает. При вводе команды shutdown с параметрами в консоли все отлично работало, но скрипт не запускался. Оказывается, его нельзя называть таким именем. После того, как переименовал в shut.bat, все отлично заработало. Какая-то нелепая загвоздка, но мне пришлось потратить немало времени, пока я разобрался, в чем тут дело.
Дальше заходим нашим новым пользователем, чтобы создались стандартные папки профиля и кладем скрипт автовыключения сервера ему в автозагрузку - C:\Users\shut-user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.
Теперь нам нужно настроить автоматический вход пользователя по rdp, чтобы выполнить удаленное завершение работы. Причем пользователь должен заходить на сервер без запроса имени и пароля. Штатными средствами rdp клиента windows это сделать невозможно. Даже если вы сохраните параметры, то при переносе настроек на другой компьютер нужно будет снова вводить пароль. Мне это не подходило.
Я пробовал использовать старую портированную версию rdp 5.2. Это последняя версия, где пароль в зашифрованном виде можно было хранить в файле настроек. Но при переносе этого файла на другой компьютер, все равно выскакивало окно с вводом пароля. Добиться полного автоматизма не получалось.
Но решение было найдено. Существует любопытный проект Remote Desktop Plus, который является надстройкой над rdp. С помощью этой надстройки можно передать параметры в rdp через командную строку, в том числе и имя пользователя с паролем. Мне это полностью подходит. Скачиваем файлик rdp.exe либо с сайта автора проекта, либо с моего. Я скопировал на всякий случай эту очень полезную утилиту. Кладем его в папку и создаем в этой же папке rem-shut.bat файл следующего содержания:
10.10.5.14 | адрес удаленного сервера |
shut-user | пользователь rdp от имени которого будет происходить выключение |
pass123 | пароль пользователя |
640 480 | параметры разрешения экрана, можно не указывать |
Всего этого достаточно, чтобы выполнить дистанционное завершение работы на windows сервере. Пользователю необходимо передать 2 файла:
Важно, чтобы они лежали в одной папке. При запуске батника произойдет подключение rdp пользователя и выполнится скрипт завершения работы. Задача выполнена.
Удаленное выключение linux сервера
Здесь все оказалось значительно проще. Сразу же было найдено рабочее решение, которое позволяет без проблем удаленно выключить любой linux сервер. Задача решается стандартными средствами putty. Эту программу можно запускать из командной строки с параметрами. В качестве параметров можно указать файл с командами для выполнения, адрес сервера, пользователя и пароль.
Подготовим все необходимое. Сначала создаем простой текстовый документ shutdown.txt следующего содержания:
Дальше создаем bat файл serv-rem-shut.bat с таким содержимым:
shutdown.txt | текстовый файл с командой на отключение |
22 | номер порта ssh |
root | имя пользователя, от которого будет выполняться команда на удаленное выключение, лучше создать отдельного |
rootpass | пароль этого пользователя |
10.10.5.15 | адрес linux сервера |
Передаем пользователю 3 файла, сложенные в одну папку:
- putty.exe
- shutdown.txt
- serv-rem-shut.bat
Теперь при запуске скрипта serv-rem-shut.bat серверу по сети будет отправлена консольная команда на завершение работы. При этом не будет задано никаких вопросов. Сервер просто молча выключится.
Заключение
Вот такие нехитрые способы были мной придуманы и реализованы. Тут еще важно обеспечить доступ к локальной сети, в которой живут серверы. В моем случае openvpn позволяет выполнить удаленное выключение компьютеров даже через интернет.
Уверен, существует множество других возможностей погасить сервер удаленно. Буду рад, если в комментариях со мной кто-нибудь поделится своими идеями и опытом на этот счет.
Удаленное выключение компьютеров на ночь
Проблема
Требуется обеспечить принудительное выключение определенных клиентских компьютеров в ночное время. Все компьютеры являются членами домена Active Directory.
Теория
Как удаленно выключить компьютер?
Вариантов удаленного выключения существует довольно много:
- через графическую консоль Управление компьютером (Computer Manager), подключенную к удаленному компьютеру;
- через штатную утилиту shutdown.exe;
- с помощью сценария PowerShell;
- и т.п.
На мой взгляд, для автоматизации задачи массового принудительного удаленного выключения компьютеров лучше всего подходит утилита PsShutdown.exe, являющаяся частью пакета PsTools.
Вариант команды PsShutdown может быть таким:
Описание используемых ключей:
Как сделать выборку компьютеров?
Можно, конечно, вручную создать текстовый файл, в котором перечислить все компьютеры, которые следует выключать. А можно автоматизировать создание актуальной выборки на основе данных из Active Directory.
Проще всего сделать выборку с помощью утилиты dsquery.exe, присутствующей на серверах или в составе пакета RSAT.
Ниже приведен вариант выборки, создающей список всех компьютеров из контейнера Desktops в домене corp.gorbunov.pro:
C:>DSQUERY * "OU=Desktops,DC=corp,DC=gorbunov,DC=pro" -filter (objectCategory=computer) -attr name -l > C:\Scripts\Computers.txt
Финальное решение
Шаг 1
Создаем на сервере папку C:\Scripts, в которую копируем утилиту PsShutdown.exe.
Шаг 2
В папке C:\Scripts создаем пакетный файл под названием RemoteShutdown.bat.
Файл создает выборку C:\Scripts\Computers.txt и затем запускает массовое выключение компьютеров из выборки.
Для контроля работы файла RemoteShutdown.bat создается файл журнала RemoteShutdownLog.txt.
Листинг файла RemoteShutdown.bat:
DSQUERY * " OU=Desktops,DC=corp,DC=gorbunov,DC=pro " -filter ( objectCategory=computer ) -attr name -l > C:\Scripts\Computers.txt
C:\Scripts\PsShutdown -s -f -t 300 -c -n 10 -e p:0:0 -m "Night shutdown. Please contact Servicedesk if you have any questions. Servicedesk phone: 123-45-67." @C:\Scripts\Computers.txt > C:\Scripts\RemoteShutdownLog.txt
Для своей сети замените OU=Desktops,DC=corp,DC=gorbunov,DC=pro на путь к своему домену и контейнеру с компьютерами. Фильтр objectCategory=computer можно заменить на свой LDAP-запрос.
Для того, чтобы иметь возможность завершать работу ПК удаленно, вам не потребуется дополнительное ПО. Windows уже имеет в версиях «Профессиональная» и «Максимальная» все необходимые функции.
Откройте окно «Выполнить», нажав комбинацию клавиш «Win+R» на компьютере, которым вы хотите управлять. Введите «gpedit.msc» (без кавычек) и подтвердите нажатием «Enter».
В открывшемся окне в разделе «Конфигурация компьютера» перейдите к строке «Конфигурация Windows» и нажмите на строке «Параметры безопасности».
В правой части зайдите в «Локальные политики | Назначение прав пользователя» и дважды щелкните по «Принудительное удаленное завершение работы». Внизу нажмите на кнопку «Добавить пользователя или группу…» и в поле добавления имен напишите «Все» без кавычек.
Подтвердите все изменения, нажав «ОК». Перезагрузите ПК.
Теперь вы можете использовать свой компьютер для удаленного выключения другого компьютера из домашней сети. Для этого откройте «Выполнить», нажав «Win+R», введите «cmd» и подтвердите нажатием «Enter».
Введите команду «shutdown -s -t 10 -m \имя компьютера», чтобы выключить другой компьютер через десять секунд. Если необходимо задать временной промежуток в пять минут, то команда будет выглядеть так: «shutdown — s — t 300 -m \имя компьютера».
Вместо имени ПК можно указать IP-адрес, например: «shutdown -s — t 300 -m \192.168.1.12».
Читайте также: