Как установить powershell в linux
PowerShell работает также и в Linux, но некоторые команды PowerShell отсутствуют в Linux. При запуске скриптов PowerShell в Linux возникнут проблемы в следующих случаях:
- в скрипте используются команды, которые отсутствуют в Linux версии PowerShell (например, из-за того, что связаны с настройками Windows или неприменимы для Linux по другим причинам)
- скрипт обращается к переменным окружения Windows
- в скрипте используются утилиты Windows, отсутствующие в Linux
Могут быть и другие причины проблем, но много всё равно работает.
Многие дистрибутивы Linux поддерживаются официально и простые инструкции по установке PowerShell в свой дистрибутив, а также установочные файлы вы найдёте здесь:
Как пользоваться PsExec exe Windows 10
Сама утилита не требует установки в систему, необходимо всего лишь скопировать ее в ту же папку, где находятся исполняемые файлы (например, C:\Windows). Также должны работать службы «Сервер» и «Рабочая станция», и должен быть доступен общий ресурс Admin$. После этого запуск можно осуществить из cmd или powershell. Принцип выглядит так: перед тем, как начать исполнение команды утилита распаковывает службу, которая называется psexesvc в системную папку system32 в файл psexesvc.exe, который находится в скрытой папке Admin$ (C:\Windows) на целевой системе. Когда копирование и установка службы завершается, происходит установка связи между утилитой и установленной службой для ввода и выполнения команд и получения результатов. При завершении работы утилита останавливает и удаляет службу с целевой системы.
Общий синтаксис выглядит следующим образом:
psexec \\имя_компьютера, имя_компьютера2,… @файл -u пользователь -p пароль -n s -l -s -e -x -i сеанс -c -f -v -w каталог -d -<приоритет> -a n,n,… программа аргументы_программы
Давайте вкратце рассмотрим некоторые из ключей, которые могут использоваться утилитой psexec:
Имя_компьютера Указывается имя компьютера, на котором необходимо выполнить команду.@файл Выполнение программы произойдет на компьютерах, имена которых указаны в текстовом файле.-a Указывает процессоры, на которых запускается выполнение программы, по умолчанию нумерация идет с 1.-d При указании этого ключа не будет производится ожидание завершения выполнения команды.-e Не будет производится загрузка определенного (указываемого) профиля.-i При указании этого ключа выполняемая программа получит доступ к рабочему столу на целевой системе (по умолчанию без указания ключа идет работа в консоли).-l С указанием этого ключа предоставляются права группы «Пользователи».-n Задает задержку подключения к целевой системе (в секундах).-p Ключ предназначен для указания пароля для пользователя.-u Ключ предназначен для указания пользователя на целевой системе.-v Позволяет копировать указанный файл на удаленную систему, если он новее существующего.-приоритет Задает приоритет для процесса. Варианты приоритетов указаны от низшего к высшему (реального времени): -low, -belownormal, -abovenormal, -high или -realtime.программа Необходимо указать имя программы, которую требуется запустить.аргументы_программы Аргументы для команды, которая будет запущена на удаленной системе.
Например, трассировка маршрута до узла www.microsoft.com на удаленном компьютере pc1 будет выглядеть следующим образом:
psexec \\pc1 tracert microsoft.com
Случай, когда необходимо выполнить одновременное выключение компьютеров pc1 и pc2:
psexec pc1, pc2 shutdown –f –r –t 0
Имена компьютеров могут также быть перечислены в списке в текстовом файле, например, pcs_list.txt. Тогда команда принимает вид:
psexec @c:\pcs_list.txt shutdown –f –r –t 0
Разумеется, что утилита принимает разный вид в зависимости от выполняемой задачи. В данной статье рассмотрены только самые простые случаи. В том случае, если требуется вызвать полную информацию обо всех ключах, то можно выполнить команду psexec.
WMIC
Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ? реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.
Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:
Использовать список компьютеров также можно командой /node:»@computers.txt».
Еще при помощи WMI можно запускать программы – синтаксис предельно прост:
К сожалению, в отличие от Psexec, получить вывод в консоли не получится ? придется выводить результаты команды в файл.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего wmic. При необходимости логин и пароль можно задать явно.
Удаленное управление компьютером с помощью PsExec
Psexec будет очень полезна для решения задач связанных с удаленным администрированием. Она позволяет удаленно выполнять команды командной строки Windows и незаметно устанавливать программы на любой компьютер в сети со воего компьютера. Для наглядности рассмотрим работу программы на некоторых примерах.
Для того чтобы psexec смог беспрепятственно подключиться к удаленной рабочей станции с Windows версии 7 и позднее, на этих самых удаленных компьютерах должны быть включены административные ресурсы C$ D$ IPC$ Admin$.
Для включения административных шар добавляем в реестр запись: reg add «HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem» /v «LocalAccountTokenFilterPolicy» /t REG_DWORD /d 1 /f
Например нужно узнать конфигурацию сетевого интерфейса компьютера в сети.
Запускаем коммандную строку CMD и набираем комманду
psexec \172.16.0.121 ipconfig
Можно запустить исполняемый файл со своего компьютера на удаленный или даже несколько удаленных ПК. Ключ /c использовался, чтобы указать путь к файлу на локальной машине.
Если psexec нужно выполнить на большом числе компьютерах, то при помощи праметра @ можно указать текстовый файл, в котором будет указан список ip адресов компьютеров:
psexec @ip-list.txt cmd -c c:patch.bat
При помощи PsExec можно поменять пароль учетной записи в удаленной системе
Параметры запуска Psexec
Указывает программе PsExec, что нужно запустить приложение на всех компьютерах, перечисленных в заданном текстовом файле.
-a
Процессоры, на которых можно запустить приложение, отделяются запятыми, при этом процессоры нумеруются, начиная с 1. Например, чтобы запустить приложение на процессорах втором и четвертом, введите «-a 2,4»
-c
Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.
-d
Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.
-e
Указанный профиль учетной записи не загружается.
-f
Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.
-i
Запускаемая программа получает доступ к рабочему столу указанного сеанса в удаленной системе. Если сеанс не задан, то процесс выполняется в консольном сеансе.
-l
При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.
-n
Позволяет задать задержку подключения к удаленным компьютерам (в секундах).
-p
Позволяет указать необязательный пароль для имени пользователя. Если этот параметр опущен, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.
-s
Удаленный процесс запускается из системной учетной записи.
-u
Позволяет указать необязательное имя пользователя для входа в удаленную систему.
-v
Указанный файл копируется в удаленную систему вместо уже имеющегося только при условии, что номер его версии выше или он более новый.
-w
Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).
-x
Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе).
Назначенные задания
Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).
Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ? «Настройка ? Параметры панели управления ? Назначенные задания».
Создание нового назначенного задания.
Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».
Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ? например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.
Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:
В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.
Запускаем немедленную задачу только один раз.
При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ? Конфигурация Windows ? Файлы».
Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.
PsService
Эта утилита позволяет вам иметь дело со службами Windows из командной строки. Это действительно довольно легко использовать — синтаксис работает так:
Список команд можно найти, посмотрев на справку /? вариантов, но есть несколько вариантов, которые вы найдете больше, чем остальные.
- query — Запрашивает статус сервиса
- config — Запрашивает конфигурацию
- setconfig — устанавливает конфигурацию
- start — запускает службу
- stop — останавливает службу
- restart — останавливает, а затем перезапускает службу
- пауза — приостановка обслуживания
- продолжение — Продолжает приостановленный сервис
- зависимость — перечисляет сервисы, которые зависят от указанного
- find — ищет экземпляр службы в сети
- security — сообщает о разрешениях безопасности, назначенных службе.
В частности, начало | остановить | пауза | перезапустить | Опции cont действительно просты и понятны. Например, в следующей команде вы можете заменить «запуск» любой из этих других команд.
Другие параметры можно использовать для запроса дополнительной информации об услуге или изменения конфигурации.
Примечание: встроенная утилита sc.exe имеет массу полезных функций, которые перекрываются с этой утилитой. Основное отличие заключается в том, что PsService немного более удобна для пользователя.
How to create an interactive shell with a connection to a remote system
So far, we have been executing commands remotely. After executing the command, the connection to the remote system was closed. It is like a session connection. With PsExec we can get a remote shell or command line (similar to SSH in Linux). PsExec connects remotely and provides us with the MS-DOS shell. To get the remote shell, we specify the cmd.exe command on the remote system.
But let’s start by looking at information about the current system and user:
echo %USERNAME% whoami cmd /C ver
Now create a shell to another computer:
.\psexec \\HACKWARE-SERVER -u Администратор -p Aa1 cmd.exe
First, note that the command prompt has changed (instead of PowerShell, it has become CMD).
Now look at the information about the current user and system:
echo %USERNAME% whoami ver
As you can see, we are now on the command line of another computer – this is an interactive shell.
The local user is hackware-mial\mial, and after connecting, the user becomes hackware-server\administrator. The local system has version 10.0.18363.720, and the remote system has version 10.0.17763.1039.
Что нужно для PsExec
Для работы PsExec на удалённом компьютере не требуется никакого программного обеспечения — то есть на компьютере, которым вы будете управлять, не нужно устанавливать никакую клиентскую часть. Но нужно соблюдение некоторых условий, чтобы PsExec работала, поэтому если первая попытка не удалась, то проверьте следующие требования.
1. На обеих машинах, т.е. удалённом компьютере (которым будем управлять) и локальном компьютере (с которого будем управлять), должен быть включён общий доступ к файлам и принтерам. Для их включения смотрите статью «SMB: настройка общей сетевой папки в Windows».
2. В современных Windows 10 у меня PsExec работала только с учётной записью «Администратор», видимой по той причине, что необходимы административные общие ресурсы (подробнее о них смотрите в статье «Как включить административные общие ресурсы в ОС Windows 10, 8 или 7 (C$, D$, $admin и другие)»).
На серверах Windows учётная запись «Администратор» включена по умолчанию.
В более старых версиях Windows, видимо, достаточно включения общего сетевого ресурса $admin для предоставления доступа к папке \Windows\. В Windows 10 папки $admin как сетевого ресурса нет вовсе.
3. Проверьте, что сетевой доступ к файлам и принтерам включён в файерволе. Для этого нажмите Win+r, введите там firewall.cpl.
Во вкладке «Разрешение взаимодействия с приложениями или компонентами в брандауэре защитника Windows»
найдите «Общий доступ к файлам и принтерам» и убедитесь, что стоит галочка в столбце «Частная» — если его там нет, то нажмите кнопку «Изменить параметры», поставьте галочку и нажмите ОК.
4. Убедитесь, что оба компьютера принадлежат к одной и той же рабочей группе (Workgroup).
5. Убедитесь, что вы правильно вводите пароль администратора удалённого компьютера.
Что такое PsExec и PsTools
На самом деле, PsExec это всего лишь один из инструментов из пакета PsTools. Программа PsExec используется чаще всего, поэтому обычно упоминается она, но в данной инструкции будут рассмотрены как примеры использования PsExec, так и примеры использования других инструментов из пакета PsTools.
Состав PsTools:
- PsExec используется для удалённого выполнения команд или получения шелла (оболочки) на удалённой системе
- PsFile используется для вывода списка удалённо открытых файлов
- PsGetSid используется для отображения идентификатора безопасности для удалённого компьютера или пользователя
- PsInfo используется для получения подробной информации об удалённой системе
- PsKill используется для остановки процесса в удалённой системе по имени или идентификатору
- PsList используется для детального отображения процессов в удалённой системе
- PsLoggedOn используется для вывода списка зарегистрированных пользователей в удалённых системах
- PsLogList, используемый для отображения журналов событий на удалённых системах
- PsPasswd используется для изменения заданного пароля пользователя в удалённой системе
- PsPing используется для пинга из удалённой системы
- PsServervice используется для перечисления и управления службами Windows в удалённой системе
- PsShutdown используется для выключения, выхода из системы, приостановки и перезапуска удалённой системы Windows
- PsSuspend используется для приостановки и возобновления процессов в удалённой системе Windows
- PsUptime используется для отображения времени работы удалённой системы
Psexec в домене
Возникла задача выполнить кое-какую операцию с помощью командной строки на другом компьютере, само собой идти к пользователю запускать командную строку и вбивать команды- не наш метод, нам надо не вставая с кресла запустить командную строку удаленного компьютера и выполнить необходимые действия в командной строке. Конечно, подобное действие можно выполнить с помощью программ удаленного подключения, но это не всегда удобно и требует наличия подобной программы у вас и у пользователя (клиент- сервер). Процедуру по подключению к командной строки другого компьютера, можно выполнить значительно просто, с помощью команды PSEXEC.
PsExec — это утилита командной строки, с возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах Windows и удаленно запускать различные команды.
На этом установка PSEXEC можно считать оконченной.
Разберем синтаксис команды:
psexec | @файл]]]] программа
компьютер Указывает программе PsExec, что нужно запустить приложение на заданном компьютере или компьютерах. Если имя компьютера не указано, то программа PsExec запустит приложение в локальной системе, если же вместо имени компьютера задан символ «звездочка» (\*), то программа PsExec запустит приложение на всех компьютерах текущего домена.
@файл Указывает программе PsExec, что нужно запустить приложение на всех компьютерах, перечисленных в заданном текстовом файле.
-a Процессоры, на которых можно запустить приложение, отделяются запятыми, при этом процессоры нумеруются, начиная с 1. Например, чтобы запустить приложение на процессорах втором и четвертом, введите «-a 2,4»
-c Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.
-d Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.
-e Указанный профиль учетной записи не загружается.
-f Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.
-i Запускаемая программа получает доступ к рабочему столу указанного сеанса в удаленной системе. Если сеанс не задан, то процесс выполняется в консольном сеансе.
-l При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.
-n Позволяет задать задержку подключения к удаленным компьютерам (в секундах).
-p Позволяет указать необязательный пароль для имени пользователя. Если этот параметр опущен, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.
-s Удаленный процесс запускается из системной учетной записи.
-u Позволяет указать необязательное имя пользователя для входа в удаленную систему.
-v Указанный файл копируется в удаленную систему вместо уже имеющегося только при условии, что номер его версии выше или он более новый.
-w Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).
-x Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе).
-приоритет (приоритет) Позволяет задавать для процесса различные приоритеты: -low (низкий), -belownormal (ниже среднего), -abovenormal (выше среднего), -high (высокий) или -realtime (реального времени).
программа Имя запускаемой программы.
аргументы Передаваемые аргументы (обратите внимание, что пути файлов должны указываться как локальные пути в целевой системе). Примеры работы команды PSEXEC:
Примеры работы команды PSEXEC:
1) Для того чтобы запустить командную строку другого компьютера, необходимо ввестиpsexec \ cmd
например:psexec \WIN782 cmd
после этого можете вводить необходимые вам команды.
2) Для того чтобы запустить какою либо программу (в данном примере test.exe) на удаленном компьютере необходимо выполнить команду, (эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме).
psexec \ -c test.exe
например:psexec \WIN782 -c test.exe
3) Если в удаленной системе такая программа уже установлена и находится не в системном каталоге, укажите полный путь к этой программе
Logging
This library uses the builtin Python logging library and can be used to find
out what is happening in the pypsexec process. Log messages are logged to the
named logger as well as where is each python script
in the directory.
A way to enable the logging in your scripts through code is to add the
following to the top of the script being used;
import logging logger = logging.getLogger("pypsexec") logger.setLevel(logging.DEBUG) # set to logging.INFO if you don't want DEBUG logs ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - ' '%(message)s') ch.setFormatter(formatter) logger.addHandler(ch)
These logs are generally useful when debugging issues as they give you a more
step by step snapshot of what it is doing and what may be going wrong. The
debug level will also print out a human readable string of each SMB packet that
is sent out from the client but this level can get really verbose.
Pass The Hash (use a hash instead of a password)
Specifying a password on the command line is bad for security. And the use of interactive input does not allow the use of psexec.exe in scripts. The way out of this situation is to use a password hash.
PsExec cannot directly use the hash (although this is erroneously stated in some instructions). To use the Pass The Hash with PsExec, you need to use the Windows Credential Editor or Mimikatz or Metasploit.
Pass The Hash example with PsExec. First at Mimikatz:
sekurlsa::pth /user:USERNAME /domain:WORKGROUP /ntlm:NTLM_HASH
PsExec then starts without a username and password.
PsExec.exe \\192.168.1.2 cmd.exe
Examples of NTLM hashes and where to get them in the article “How to hack a Windows password”.
Установка программы через командную строку
Сейчас мы будем пробовать управлять программами более удобным и очень похожим способом на то, как это выполняется в среде Linux. И в этом нам поможет специальный сервис Chocolatey, пакетный менеджер для Windows. Клиент Chocolatey представляет собой утилиту, предназначенную для работы в консоли. Давайте сразу попробуем её установить. Для установки откроем терминал с правами администратора. Нажмите правой кнопкой мыши на меню Пуск и нажмите пункт «Командная строка» (с правами администратора). Теперь скопируем следующий код:
Вставляем и нажимаем клавишу Enter. Теперь нужно закрыть консоль, чтобы данные по переменным освежились.
На сервисе Chocolatey собран большой каталог утилит и приложений: на данный момент более 2000 утилит. Посмотреть их можно на официальном сайте https://chocolatey.org/packages. Итак, пришло время узнать, как установить любую программу через командную строку:
Снова открываем терминал от имени администратора. Копируем текст, представленный справа от программы на сайте https://chocolatey.org/packages. Например, для установки браузера Google Chrome представлен следующий код:
Копируем его и вставляем в терминал. Не забываем после кода с сайта писать комбинацию -y. Жмём Enter. Теперь осталось дождаться завершения установки браузера. После чего можно закрыть окно терминала.
Как можно было заметить, браузер Google Chrome очень быстро установился. Нам не пришлось кликать никакие кнопки, выбирать место сохранения файлов (по умолчанию используется диск C). Кстати, начинающим пользователям можно сделать в блокноте набор своих любимых приложений, чтобы каждый раз не заходить на сервис Chocolatey. Чтобы удалить программу через командную строку, введите код uninstall, затем — название программы. Например, choco unistall ccleaner.
ВНИМАНИЕ. Сервис работает только с теми пакетами, что устанавливаются через него
То есть если какое-либо ПО недоступно для установки через Chocolatey, то и удалить вы не сможете его таким способом.
Как включить учётную запись администратора
В моих тестах на последних Windows 10 и Windows Server 2019 команда PsExec работает только с учётной записью Администратор. Поэтому в этом разделе описано, как активировать пользователя Администратор, который по умолчанию присутствует в Windows, но в обычных, не серверных версиях, этот пользователь отключён.
Пользователя Администратор должен быть активен только на удалённом компьютере, где будут выполняться команды с помощью PsExec. На локальном компьютере учётная запись Администратор не требуется.
1. Нажмите клавиши Win+r, чтобы открыть окно запуска команды.
2. Введите lusrmgr.msc и нажмите Enter.
3. Откройте Пользователи.
4. Щёлкните правой кнопкой мыши Администратор и выберите Свойства.
5. Снимите флажок «Отключить учётную запись» и нажмите ОК.
6. Снова щёлкните правой кнопкой мыши учётную запись администратора и выберите «Задать пароль».
7. Укажите пароль для учётной записи администратора и нажмите «ОК».
PsInfo
Эта команда перечисляет много полезной информации о системе, включая время работы, что очень весело. Вы можете запустить его локально, чтобы протестировать его, просто набрав psinfo в командной строке, предполагая, что ваши инструменты SysInternals находятся в пути.
Если вы хотите получить гораздо больше информации из PsInfo, и я знаю, что вы это делаете, то вы можете использовать следующие параметры для добавления информации о диске (-d) и исправлений (-h), а также списка установленных приложений и их версий ( -s).
Это дает намного больше информации, даже на почти пустой виртуальной машине:
Вы также можете запустить PsInfo удаленно, добавив имя компьютера и, возможно, имя пользователя переключается … но есть одна большая проблема: он не будет работать, если не включена служба удаленного реестра. Перейдите в конец статьи, где мы поговорим о том, как включить его на удаленном компьютере.
What are PsExec and PsTools
In fact, PsExec is just one of the tools in the PsTools package. The PsExec program is used most often, therefore it is usually mentioned, but this instruction will cover both examples of using PsExec and examples of using other tools from the PsTools package.
PsTools Composition:
- PsExec is used to remotely execute commands or obtain a shell on a remote system.
- PsFile is used to list remotely opened files.
- PsGetSid is used to display the security identifier for a remote computer or user.
- PsInfo is used to get detailed information about the remote system.
- PsKill is used to stop a process on a remote system by name or identifier.
- PsList is used to display processes in a remote system in detail.
- PsLoggedOn is used to list registered users on remote systems.
- PsLogList used to display event logs on remote systems.
- PsPasswd is used to change a given user password on a remote system.
- PsPing is used to ping from a remote system
- PsServervice is used to list and manage Windows services on a remote system.
- PsShutdown is used to shut down, log off, pause and restart a remote Windows system.
- PsSuspend is used to pause and resume processes on a remote Windows system.
- PsUptime is used to display the runtime of a remote system.
PsExec
Одним из отличных решений поставленной в заголовке задачи является использование программы PsExec от великого Марка Руссиновича.
Программа работает по клиент-серверному принципу: на локальной машине выполняется клиент, который посылает команды серверу на удаленном компьютере. Особенностью этой программы является то, что серверная часть устанавливается автоматически непосредственно перед выполнением команды, а затем удаляется. Таким образом для выполнения команд на удаленных машинах достаточно иметь на них административные права.
Если PsExec запускается от имени администратора, который входит в тот же домен, что и удаленны компьютер, то никаких учетных данных даже вводить не нужно. В противном случае, их можно указать в командной строке, либо PsExec сама их запросит. PsExec работает на ОС начиная с Windows 2000 и заканчивая 64-битным Windows Server 2008 R2.
Очень полезными в PsExec являются следующие возможности:
- Выполнение команды на группе компьютеров. Пример: следующая команда позволяет принудительно применить самые свежие групповые политики: psexec @group.txt gpupdate /force
- Выполнение команд от имени системной учетной записи. Пример: следующая команда заставит удаленную систему принудительно проверить обновления: psexec \computer -s wuauclt /detectnow
- Копирование выполняемой программы на удаленный компьютер перед выполнением. Пример: следующая команда позволит обновить членство данного компьютера в группе безопасности Active Directory (токен доступа) без перезагрузки: psexec \computer -c -s klist.exe purge
Трудно переоценить пользу этой программы, если использовать скрипты и возможности консольных команд, встроенных в Windows.