Не удается подключиться к серверу с помощью удаленного взаимодействия Windows PowerShell

Обновлено: 30.06.2024

Хотя в Windows PSRemoting включен по умолчанию, он не включен постоянно. Если вам нужно либо проверить, включен ли PSRemoting, либо включить PSRemoting в Windows, это руководство для вас.

Это руководство расскажет вам о различных способах включения PSRemoting на локальных и удаленных компьютерах под управлением обеих ОС Windows.

Начнем!

Оглавление

Включение PSRemoting делает многое

Если вы впервые знакомитесь с PowerShell Remoting, вы можете подумать, что включение — это всего лишь одна команда. Возможно, вы видели ссылки на PowerShell-командлет Enable-PSRemoting и думаете, что когда вы его запустите, он просто где-то немного перевернется. Вы ошибаетесь.

Когда вы слышите о включении PSRemoting, для этого в фоновом режиме должно выполняться множество задач. Поскольку для правильной работы PowerShell Remoting требуется, чтобы другие системы работали, у него есть несколько зависимостей.

Например, в Windows, когда вы запускаете командлет Enable-PSRemoting без параметров, он выполняет все следующие задачи:

Разве вы не рады, что вам не нужно делать все это вручную? Зачем упоминать об этом, если все это делает командлет Enable-PSRemoting? Потому что будут случаи, когда что-то не работает, и вам нужно устранить неполадки, которые происходят.

Настройки PSRemoting по умолчанию в Windows

Поскольку PSRemoting появился в Windows, он включен по умолчанию, но не везде и не во всех версиях ОС Windows.

Во всех клиентских операционных системах Windows функция PSRemoting всегда отключена.

В Windows Server PSRemoting включен иногда, но не всегда, в зависимости от того, в каком сетевом профиле работает Windows. Ниже вы найдете удобную таблицу, которая поможет вам определить, включена ли ваша ОС Windows PSremoting или нет.

< tr>
Операционная системаСетевой профильPSRemoting
Windows Server 2008 R2Домен/ЧастныйОтключено
Windows Server 2008 R2Общедоступный Отключено
Windows Server 2012 и новееДомен/ЧастныйВключено
Windows Server 2012 и новееОбщедоступноВключено в той же подсети

Линукс, с другой стороны, прост. PSRemoting даже не вещь! Даже PowerShell не установлен по умолчанию. Если вы хотите запустить PSRemoting в Linux, вам придется его настроить.

Хватит говорить, давайте покажем вам, как на самом деле начать использовать PSRemoting!

Предпосылки

Если вы собираетесь следовать примерам в этом разделе, убедитесь, что у вас есть следующее:

  • Компьютер с Windows Server 2008 R2 или более поздней версии
  • Локальный пользователь или пользователь домена Active Directory в группе локальных администраторов

Локальное включение PSRemoting

Один из самых простых способов включить PSRemoting — использовать встроенную команду Enable-PSRemoting. Эта команда, как вы узнали выше, позволяет настроить множество различных служб для поддержки удаленного взаимодействия PowerShell.

Использование командлета Enable-PSRemoting

В серверной ОС, такой как Windows Server 2019, правило брандмауэра для общедоступных сетей разрешает удаленные подключения с других устройств в той же сети. В клиентской ОС, такой как Windows 10, вы получите сообщение об ошибке, указывающее, что вы являетесь общедоступной сетью.

Если вы не знаете, под каким сетевым профилем работает Windows, выполните следующую команду:

Использовать PSRemoting следует только в доверенной сети, так как по сути он запускает веб-сервер для прослушивания удаленных подключений.

Get-NetConnectionProfile

Получить-NetConnectionProfile

Если вас устраивает запуск PSRemoting в сетевом профиле, отличном от частного или домена, вы можете пропустить проверку сетевого профиля, используя параметр SkipNetworkProfileCheck. Использование этого параметра откроет порты WinRM в брандмауэре Windows.

Использование параметра SkipNetworkProfileCheck откроет брандмауэр Windows для удаленного взаимодействия PowerShell в вашем текущем сетевом профиле, но разрешит удаленные подключения только с компьютеров в той же подсети.

Два параметра, которые можно использовать вместе с Enable-PSRemoting, работают рука об руку. Это параметры -Force и -Confirm. Вы можете использовать -Force, чтобы пропустить все подсказки, которые обычно выдает команда Enable-PSRemoting. Вы также можете использовать -Confirm:$false, чтобы получить тот же результат.

Использование команды winrm quickconfig

Удаленное включение PSRemoting

До сих пор вы узнали, что вы можете включить PSRemoting, выполнив команду на локальном компьютере.Это приводит нас к сценарию с курицей и яйцом. PSRemoting позволяет запускать команды на удаленных компьютерах, но как выполнить команду удаленно без PSRemoting?

Три способа; утилита PSexec, WMI и групповая политика.

Использование Psexec

PSExec — это удобная утилита, позволяющая выполнять удаленные команды, как это делает PSRemoting. Однако PSexec использует другой метод связи, который вы можете использовать в своих интересах!

С помощью PSexec вы можете запустить Enable-PSRemoting со своего локального компьютера с помощью следующей команды. Приведенная ниже команда вызывает psexec и подключается к серверу ServerB. Затем он запускает процесс PowerShell и выполняет команду Enable-PSRemoting с параметром -Force, чтобы пропустить обычные запросы.

Этот вариант удобен для одноразовых случаев, когда вам нужно включить PSRemoting на удаленной системе, но не подходит для включения PSRemoting на множестве систем и требует загрузки psexec.

Использование WMI

Иногда PSexec не работает. Многие программы безопасности блокируют psexec, но не беспокойтесь, у вас тоже есть WMI!

Использование PowerShell и командлета Invoke-CimMethod. С помощью командлета Invoke-CimMethod вы можете указать PowerShell подключиться к удаленному компьютеру через DCOM и вызвать методы.

К счастью для вас, в WMI есть классы Win32_Process, которые позволяют вам вызывать процессы. Вызывая метод Create для Win32_Process , Invoke-CimMethod подключается к удаленному компьютеру, вызывает PowerShell и запускает Enable-PSRemoting, как показано ниже.

В приведенном ниже примере создается хеш-таблица для сеансового соединения, в которой указаны имя сервера, учетные данные и протокол. Затем в следующей хэш-таблице устанавливаются параметры для Invoke-CimMethod. После их запуска создается сеанс CIM по протоколу DCOM, который запускает процесс PowerShell, который, в свою очередь, запускает команду Enable-PSRemoting.

В случае, если вы используете это в среде домена, а пользователь, выполняющий команды, имеет права администратора на целевом сервере, строку Credential = Get-Credential можно исключить.< /em>

Использование групповой политики

Последний и, возможно, лучший способ включения WinRM на большом количестве компьютеров – это использование групповой политики. При использовании групповой политики вы можете создать один объект групповой политики и применить эту политику одновременно к тысячам компьютеров.

Для использования групповой политики все компьютеры должны находиться в домене Active Directory.

Чтобы использовать групповую политику для одновременного включения WinRM на многих компьютерах, вам потребуется установить три разных элемента конфигурации:

  1. Включите службу WinRM.
  2. Откройте порт брандмауэра Windows для WinRm.
  3. Создание прослушивателя WinRM и разрешение подключений к нему.

Сначала подключитесь к контроллеру домена по протоколу RDP или, что еще лучше, установите пакет средств администрирования удаленного сервера (RSAT) на рабочую станцию, присоединенную к домену. Теперь у вас должна быть доступна консоль управления групповыми политиками (GPMC).

Включение службы WinRM

Чтобы включить службу WinRM на всех целевых компьютерах:

  1. Откройте консоль управления групповыми политиками и создайте объект групповой политики. Находясь в новом объекте групповой политики, перейдите в раздел «Конфигурация компьютера» —> «Параметры Windows» —> «Параметры безопасности» —> «Системные службы»
  2. .
  3. Выберите Удаленное управление Windows (WS-Management).
  4. На панели конфигурации установите флажок Определить этот параметр политики.
  5. Выберите переключатель «Автоматически», чтобы служба WinRm запускалась автоматически при загрузке.
  6. Нажмите "ОК", чтобы подтвердить настройку.

Открытие порта брандмауэра Windows

Затем вам нужно открыть порт WinRM на всех целевых компьютерах. Продолжая редактировать созданный выше объект групповой политики:

  1. Перейдите к Конфигурация компьютера —> Параметры Windows —> Параметры безопасности —> Брандмауэр Защитника Windows в режиме повышенной безопасности.
<р>2. Щелкните Новое правило для входящих подключений, чтобы создать новое правило для входящих подключений.

<р>3. На первой странице выберите «Предопределенные» и выберите «Удаленное управление Windows», как показано ниже.

Удаленное управление Windows

Удаленное управление Windows

<р>4. На следующей странице установите флажок для правила Домен/Частная сеть, если только вы не знаете, что в вашей среде используются общедоступные сети и вам нужно разрешить удаленные подключения из них.

Правило домена/частной сети

Правило домена/частной сети

<р>5. На следующей странице оставьте значение по умолчанию Разрешить подключение и нажмите Готово, чтобы создать правило.

Создание списка прослушивателя и фильтра WinRM

Во время редактирования объекта групповой политики WinRM:

  1. Перейдите к Конфигурации компьютера —> Административные шаблоны —> Компоненты Windows —> Удаленное управление Windows (WinRM) —> Служба WinRM.
<р>2. Выберите Включено для параметра Разрешить удаленное управление службами через WinRM.

<р>3. В разделе Разрешить удаленное управление сервером через WinRM укажите звездочку ( * ) для фильтра IPv4 и фильтра IPv6, как показано ниже.

Обратите внимание, что вы можете указать несколько хостов, разделенных запятой, в каждом списке фильтров, если заранее знаете, какие хосты будут подключаться ко всем целевым компьютерам.

Разрешить удаленное управление сервером через WinRM

Разрешить удаленное управление сервером через WinRM

<р>4. Нажмите OK, чтобы подтвердить новейшую настройку объекта групповой политики.

Применение объекта групповой политики

На данный момент объект групповой политики должен быть создан и готов к работе. Последняя задача, которую вам необходимо выполнить, — это применить этот объект групповой политики ко всем целевым компьютерам, на которых вы хотите включить WinRM. В этом руководстве вы не узнаете, как назначать объекты групповой политики целевым компьютерам.

Если вы не знаете, как назначить объект групповой политики набору компьютеров в Active Directory, прочтите эту статью

.

Дальнейшие шаги

В этом руководстве вы узнали, как включить PSRemoting разными способами. То, как вы включите PSRemoting, будет сильно зависеть от вашей среды, и я надеюсь, что описал ваш сценарий здесь.

Теперь возьмите то, что вы узнали, начните использовать PSRemoting в своей среде!

Ненавидите рекламу? Хотите поддержать писателя? Получите многие из наших руководств в виде руководства по ATA.

Ещё от ATA Learning & Partners

Резервное копирование Office 365 для чайников

Лучшее руководство по защите данных Microsoft Office 365. Изучите готовые функции безопасности.

Руководства ATA

ATA известна своими высококачественными письменными учебными пособиями в виде сообщений в блогах. Поддержите ATA с помощью электронных книг ATA Guidebook PDF, доступных в автономном режиме и без рекламы!

Я пытаюсь установить RDS на сервер Windows 2012 r2 для размещения нескольких приложений. Я не могу получить сообщение об этой ошибке ниже.


Я погуглил эту ошибку и попробовал следующее, но это все равно не работает.

Enable-PSRemoting -force
Set-Item WSMan:localhostShellMaxMemoryPerShellMB 1000

ipconfig28

Защитите свои конечные точки от киберпреступников

2022-03-24 14:00:00 UTC Веб-семинар Веб-семинар: Cisco — защитите свои конечные точки от кибер-преступников Подробности о событии Просмотреть все события

21 ответ

Матье Коэн

Ваш брандмауэр Windows все еще работает?

ipconfig28

Матье Коэн написал:

Ваш брандмауэр Windows все еще работает?

Neally

Этот человек является проверенным специалистом

Точно

Работает ли служба winrm на обоих серверах?

ipconfig28

Возможно, проблема именно в этом. Есть только один сервер.

Neally

Этот человек является проверенным специалистом

Точно

Итак. вы пытаетесь дистанционно управлять.. собой?

Я никогда раньше не видел этот экран, который вы разместили при настройке RDS?

Может быть, запустите 'winrm quickconfig', а затем просто повторите попытку развертывания (проверки).

ipconfig28

Нилли написал:

Итак. вы пытаетесь удаленно управлять.. собой?

Я никогда раньше не видел этот экран, который вы разместили при настройке RDS?

Может быть, запустите 'winrm quickconfig', а затем просто попробуйте развертывание (проверьте) еще раз.

Что я пытаюсь сделать, так это разместить несколько приложений, используя RDS, инструкции, которые я вывел на этот экран.

ipconfig28

Нилли написал:

Итак. вы пытаетесь удаленно управлять.. собой?

Я никогда раньше не видел этот экран, который вы разместили при настройке RDS?

Может быть, запустите 'winrm quickconfig', а затем просто попробуйте развертывание (проверьте) еще раз.

Только что сделал winrm quickconfig, и он говорит, что работает? Я так в растерянности

Матье Коэн

установите последнюю версию PowerShell. мы никогда не узнаем... но это действительно странная проблема.

ipconfig28

Это странно. Итак, что я только что сделал, так это удалил виртуальную машину, начиная с новой, и я получаю ту же ошибку.. Это не имеет смысла..

Установите следующие разделы реестра. Это должно решить вашу проблему :-)

Данные: 65 564 (десятичное число)

Данные: 65 564 (десятичное число)

ipconfig28

Сделал это, и это сработало, спасибо.

Перейдите в Диспетчер серверов и в разделе "Локальный сервер" включите "Удаленное управление". Это решило для меня.

GPO блокирует установку

открыть командную строку > winrm enumerate winrm/config/listener
Теперь вы можете установить

CarlosTech

у вас на сервере случайно нет 2 сетевых карт? там может быть какой-то сумасшедший DNS. Последние несколько месяцев RDWeb не приносил мне ничего, кроме проблем.

В качестве альтернативы вы можете добавить сервер в пул серверов и добавить роли со второго сервера (сделав это таким образом, я не получил сообщение, которое вы получаете)

Da_Schmoo

Этот человек является проверенным специалистом

Da_Schmoo

  • отметить 51 лучший ответ
  • thumb_up – 214 благодарных отзывов

Ветка двухлетней давности.

Да, старая тема, но актуальная. Для меня это была очень простая ошибка пользователя. Пользователь, с которым я вошел в систему, чтобы включить RDS, был пользователем домена, а не администратором домена. Добавился в группу администраторов домена, и ошибка исчезла.

Только что столкнулся с этим, я боролся с этим несколько часов, перепробовал все, что мог найти, хотя это старая тема, она все еще актуальна. Я обнаружил, что мне нужно разрешить IPv6-адреса в объекте групповой политики WinRM. После этого я смог удаленно подключиться и установить службы удаленных рабочих столов.

Я пытался развернуть его с нужного мне сервера и продолжал получать это сообщение об ошибке. Прочитав комментарии, я увидел попытку сделать это удаленно с другого сервера. Когда я попытался добавить новый сервер в пул, это не удалось. Когда я пропинговал его, он ответил с адресом IPv6, я настроил IPv6 так, чтобы он не отвечал в WinRM, поэтому он не работал. Я отредактировал объект групповой политики, чтобы разрешить подключение IPv6. Было необходимо добавить сервер в пул и развернуть службы удаленного рабочего стола.

Из-за различных ошибок PowerShell вы не можете настроить подключение сервера к целевой локальной среде Exchange в программном обеспечении CodeTwo. Вы можете столкнуться с одной из следующих ошибок:

Решение:

Ошибка подключения может быть вызвана разными причинами. Проблема обычно связана с неправильной или неполной конфигурацией исходной или целевой среды.Наиболее распространенные причины этих ошибок включают:

Вы также можете следовать этим инструкциям, чтобы имитировать удаленный сеанс PowerShell на вашем сервере, чтобы исключить вероятность того, что эта проблема вызвана вашим программным обеспечением CodeTwo.

Целевой сервер не принимает входящие подключения PowerShell

Свежеустановленные серверы Exchange могут быть не настроены на прием входящих подключений PowerShell. Чтобы исправить это и позволить вашему серверу настроить все необходимые службы, выполните следующую команду в PowerShell:

Обязательно запускайте эту команду с правами локального администратора.

Вы используете старую версию PowerShell либо в исходной, либо в целевой среде

Программное обеспечение CodeTwo работает лучше всего, если последняя доступная версия Windows PowerShell установлена ​​на машине, которая отправляет (мигрирует) данные, а также на целевом сервере Exchange, который получает данные. Чтобы проверить, какая версия PowerShell в настоящее время установлена ​​на любом из ваших компьютеров, запустите следующий командлет в PowerShell:

и проверьте значение PSVersion (рис. 1).

Проверка версии PowerShell в Windows 10


Рис. 1. Проверка версии PowerShell в Windows 10.

Если после выполнения этой команды вывод не отображается, это означает, что вы используете PowerShell 1.0 и необходимо обновление.

Настоятельно рекомендуется использовать последнюю версию PowerShell на обеих машинах. При необходимости обновите PowerShell до последней версии, доступной для вашей операционной системы, следуя инструкциям из этой статьи Microsoft.

Кроме того, если программное обеспечение было установлено на компьютере с одной из предыдущих итераций Windows (включая Windows 7, Windows Server 2008 R2 и более ранние версии), рекомендуется протестировать программное обеспечение на другом компьютере, подключенном к источнику. среда, в которой установлена ​​более новая версия операционной системы Windows. Если соединение на этом компьютере установлено успешно, вам следует подумать о переносе установки инструмента переноса туда.

Исходный сервер не может правильно пройти аутентификацию в целевой среде

Возможно, ваш компьютер не может разрешить полное доменное имя или DNS-имя сервера, к которому вы подключаетесь. Чтобы исправить это, вы можете попробовать одно из следующих решений:

  1. Если ваша исходная среда имеет физическое соединение со всей целевой средой (включая ее контроллеры домена и DNS-серверы), вы можете попробовать настроить исходный DNS-сервер так, чтобы он имел необходимую информацию для аутентификации подключений PowerShell.
  2. Если ваша исходная среда имеет доступ только к целевому серверу Exchange, но не к другим компьютерам в целевой среде, вам необходимо настроить подключение к этому серверу Exchange через IP-адрес. Однако вам необходимо убедиться, что:
    • машина, на которой установлено программное обеспечение, позволяет использовать обычную аутентификацию для протокола WinRM. Чтобы убедиться в этом, выполните следующую команду в командной строке: Если она возвращает Basic = false , выполните следующую команду, чтобы включить обычную аутентификацию:
    • на целевом сервере включена обычная проверка подлинности для подключений PowerShell.

Конфигурация WinRM запрещает подключение

Еще одна возможная причина появления этих ошибок — когда служба WinRM (удаленное управление Windows) не настроена на прием удаленного подключения PowerShell, которое пытается установить программа. Вы можете устранить эту проблему следующим образом:

Убедитесь, что ваш исходный сервер может подключиться к целевому

  1. Откройте PowerShell на целевом сервере и выполните следующий командлет, чтобы просмотреть все доверенные узлы, которые могут подключаться к этому серверу. По умолчанию список доверенных хостов пуст.
    1. Если ваш исходный компьютер не указан в списке доверенных хостов, вы можете добавить его в список, запустив этот командлет:

    Отключить требование SSL

    Если не удается установить SSL-соединение, вы можете отключить требование SSL для соединений PowerShell. Для этого выполните следующие действия:

    1. Откройте диспетчер информационных служб Интернета (IIS).
    2. Перейдите к >Сайты >Веб-сайт по умолчанию >PowerShell.
    3. Дважды щелкните Настройки SSL (рис. 2).

    Доступ к настройкам SSL в IIS Менеджер


    Рис. 2. Доступ к настройкам SSL в диспетчере IIS.

    1. Снимите флажок «Требовать SSL» и выберите «Игнорировать клиентские сертификаты» (рис. 3). Примените изменения.

    Отключение требования SSL для PowerShell .


    Рис. 3. Отключение требования SSL для PowerShell.

    Имейте в виду, что отключение требования SSL должно выполняться только в изолированной среде, где нет угрозы перехвата переносимых данных по сети.

    Конфигурация сети препятствует подключению

    Если вы выполнили все описанные выше шаги, но по-прежнему не можете настроить подключение, еще раз проверьте конфигурацию вашей сети, включая все физические/программные брандмауэры. По умолчанию PowerShell использует следующие TCP-порты для связи:

    Моделирование удаленного сеанса PowerShell

    Вы можете попытаться вручную имитировать удаленный сеанс PowerShell, чтобы подключиться к целевому серверу так же, как это делает программное обеспечение. Это поможет вам проверить, связана ли проблема с программным обеспечением CodeTwo или с определенной конфигурацией вашей среды.

    Ситуация. При попытке добавить сервер лицензирования в службу Windows 2012 R2 RS может появиться следующее сообщение: Невозможно подключиться к серверу с помощью удаленного взаимодействия Windows Powershell.


    < /p>

    Мы устраняем проблему. Это переменные среды. Поиск в Интернете, мы находим, что некоторые люди имеют подобный случай. Изменение пути с %systemroot% на c:\windows решило проблему.

    В нашем случае переход с PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Файлы (x86)\Millennium 3;C:\Program Files (x86)\Microsoft Office\Office16;C:\Bat;

    в
    C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86 )\Millennium 3;C:\Program Files (x86)\Microsoft Office\Office16;C:\Bat;

    Примечание: отсутствие PATH= устраняет проблему.

    <р>1. Отключите IPv6 для теста.

    <р>2. Запустите Powershell, выполните эту команду: Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1000

    Затем перезапустите сервер.

    <р>3. Это может быть проблема с брандмауэром. отключить брандмауэр Windows или добавить правило «Удаленное управление Windows» в мой брандмауэр.

    <р>5. Проблема совместимости при установке роли служб удаленных рабочих столов в 2012 г. «Не удается подключиться к серверу с помощью удаленного взаимодействия Windows Powershell»

    <р>6. Мне помогло «Enable-PSRemoting -force».

    <р>7. Решена проблема - у DC и сервера RDS была разница во времени 3 часа. Время синхронизации сработало.

    <р>8. Если вы хотите добавить службу лицензирования TS, добавьте роль сервера. Если вы хотите добавить этот сервер в список серверов лицензирования RDS для получения клиентских лицензий удаленных рабочих столов, перейдите в раздел «Развертывание».

    <р>9. была такая же проблема, исправили ее, очистив прокси-сервер

    <р>10. Администратор домена ничего не может сделать, поэтому я добавил еще одну учетную запись администратора (с правами локального администратора), а затем запустил развертывание RDS из сеанса диспетчера серверов с повышенными правами.

    Если ключи не существуют, вы можете их создать, обязательно используя тип DWORD.

    Я установил для MaxFieldLength значение DEC 40000, а для MaxRequestBytes значение DEC 32768 и перезагрузил сервер. Проблема решена.

    <р>12. Решена проблема - у DC и сервера RDS была разница во времени 3 часа. Время синхронизации сработало.

    <р>13. Мой системный инженер обнаружил, что моя проблема была вызвана неправильной установкой системной переменной. Переменная Path была очищена, что мешало правильной работе Powershell Remoting. Он скопировал переменные с другого сервера, и теперь он работает корректно.

    <р>14. Если в сети есть настройка объекта групповой политики, влияющая на сервер, на котором вы пытаетесь установить RDS, и этот объект групповой политики управляет прослушивающими портами WinRM и неправильно настроен, вы получите эту ошибку.

    Запустите winrm enumerate winrm/config/listener на целевом сервере и, если ListeningOn = null, установите флажок GPO в этом поле с помощью gpresult /h result.html и result.html. Найдите в этих выходных данных объекта групповой политики компоненты Windows/Windows RemoteManagement (WinRM)/WinRM Service, а фильтр IPv4 и фильтр IPv6 должны содержать * или диапазон IP-адресов, включающий этот сервер. Если значение пустое или неправильный диапазон IP-адресов, вы получите исходное сообщение об ошибке!

    <р>15. В Диспетчере сервера/Удаленное управление уже включено. Мое исправление состояло в том, чтобы отключить, а затем снова включить удаленное управление. Затем я смог переустановить RDS.

    Читайте также: