Как запускать команды PowerShell на удаленных компьютерах
PowerShell Remoting позволяет запускать команды PowerShell или получать доступ к полным сеансам PowerShell в удаленных системах Windows. Это похоже на SSH для доступа к удаленным терминалам в других операционных системах.
PowerShell по умолчанию заблокирован, поэтому вам придется включить PowerShell Remoting перед его использованием. Этот процесс установки немного сложнее, если вы используете рабочую группу вместо домена - например, в домашней сети - но мы проведем вас через нее.
Включите PowerShell Remoting на ПК, к которому вы хотите получить удаленный доступ
Ваш первый шаг - включить PowerShell Remoting на ПК, к которому вы хотите устанавливать удаленные подключения. На этом ПК вам нужно открыть PowerShell с правами администратора..
В Windows 10 нажмите Windows + X, а затем выберите PowerShell (Admin) в меню «Опытный пользователь»..
В Windows 7 или 8 нажмите Пуск, а затем введите «powershell». Щелкните правой кнопкой мыши результат и выберите «Запуск от имени администратора».
В окне PowerShell введите следующий командлет (имя PowerShell для команды) и нажмите Enter:
Включить-PSRemoting -Force
Эта команда запускает службу WinRM, настраивает ее автоматический запуск в вашей системе и создает правило брандмауэра, разрешающее входящие подключения. -сила
часть командлета указывает PowerShell выполнять эти действия, не запрашивая вас для каждого шага.
Если ваши компьютеры являются частью домена, это все, что вам нужно сделать. Вы можете пропустить тестирование вашего соединения. Если ваши компьютеры являются частью рабочей группы, которая, вероятно, находится в домашней или малой сети, у вас есть немного больше работы по настройке, чтобы сделать.
Примечание. Ваш успех в настройке удаленного взаимодействия в доменной среде полностью зависит от настроек вашей сети. Удаленное взаимодействие может быть отключено или даже включено автоматически групповой политикой, настроенной администратором. У вас также могут отсутствовать разрешения, необходимые для запуска PowerShell от имени администратора. Как всегда, проконсультируйтесь с вашими администраторами, прежде чем пытаться что-либо подобное. У них могут быть веские причины не допускать практику, или они могут захотеть настроить ее для вас..
Настройте свою рабочую группу
Если ваши компьютеры не находятся в домене, вам нужно выполнить еще несколько шагов для настройки. Вы должны были уже включить Remoting на ПК, к которому вы хотите подключиться, как мы описали в предыдущем разделе.
Примечание. Чтобы PowerShell Remoting работал в среде рабочей группы, необходимо настроить сеть как частную, а не общедоступную сеть. Чтобы узнать больше о разнице - и как перейти в частную сеть, если у вас уже есть общедоступная сеть, ознакомьтесь с нашим руководством по частным и общедоступным сетям..
Далее вам необходимо настроить параметр TrustedHosts на ПК, к которому вы хотите подключиться. а также ПК (или ПК), к которому вы хотите подключиться, чтобы компьютеры доверяли друг другу. Вы можете сделать это одним из двух способов.
Если вы находитесь в домашней сети и хотите доверять любому компьютеру для удаленного подключения, вы можете ввести следующий командлет в PowerShell (опять же, вам нужно будет запустить его от имени администратора).
Set-Item wsman: \ localhost \ client \rusthosts *
Звездочка является символом подстановки для всех компьютеров. Если вместо этого вы хотите ограничить компьютеры, которые могут подключаться, вы можете заменить звездочку на список разделенных запятыми IP-адресов или имен компьютеров для утвержденных компьютеров..
После выполнения этой команды вам нужно перезапустить службу WinRM, чтобы ваши новые настройки вступили в силу. Введите следующий командлет и нажмите Enter:
Рестарт-Сервис WinRM
И помните, вам нужно будет запустить эти два командлета на ПК, к которому вы хотите подключиться, а также на любых ПК, с которых вы хотите подключиться.
Проверьте соединение
Теперь, когда ваши компьютеры настроены для PowerShell Remoting, пришло время проверить соединение. На ПК, с которого вы хотите получить доступ к удаленной системе, введите следующий командлет в PowerShell (заменив «КОМПЬЮТЕР» именем или IP-адресом удаленного ПК), а затем нажмите Enter:
Тест-WsMan КОМПЬЮТЕР
Эта простая команда проверяет, работает ли служба WinRM на удаленном ПК. Если он завершится успешно, вы увидите информацию о службе WinRM на удаленном компьютере в окне, означающем, что WinRM включен и ваш компьютер может обмениваться данными. Если команда не выполнена, вы увидите сообщение об ошибке.
Выполнить одну удаленную команду
Чтобы запустить команду в удаленной системе, используйте Invoke-Command
Командлет использует следующий синтаксис:
Invoke-Command -ComputerName COMPUTER -ScriptBlock COMMAND -credential USERNAME
«КОМПЬЮТЕР» представляет имя или IP-адрес удаленного ПК. «КОМАНДА» - это команда, которую вы хотите выполнить. «ИМЯ ПОЛЬЗОВАТЕЛЯ» - это имя пользователя, для которого вы хотите выполнить команду, как на удаленном компьютере. Вам будет предложено ввести пароль для имени пользователя.
Вот пример. Я хочу просмотреть содержимое каталога C: \ на удаленном компьютере с IP-адресом 10.0.0.22. Я хочу использовать имя пользователя «wjgle», поэтому я бы использовал следующую команду:
Invoke-Command -ComputerName 10.0.0.22 -ScriptBlock Get-ChildItem C: \ -credential wjgle
Начать удаленный сеанс
Если у вас есть несколько командлетов, которые вы хотите запустить на удаленном ПК, вместо того, чтобы многократно вводить командлет Invoke-Command и удаленный IP-адрес, вы можете вместо этого запустить удаленный сеанс. Просто введите следующий командлет и нажмите Enter:
Enter-PSSession -ComputerName COMPUTER -Credential USER
Снова замените «КОМПЬЮТЕР» на имя или IP-адрес удаленного ПК и замените «ПОЛЬЗОВАТЕЛЬ» на имя учетной записи пользователя, которую вы хотите вызвать..
Ваше приглашение изменится, чтобы указать удаленный компьютер, к которому вы подключены, и вы можете выполнить любое количество командлетов PowerShell непосредственно в удаленной системе..