Как через powershell подключиться к удаленному пк
Перейти к содержимому

Как через powershell подключиться к удаленному пк

  • автор:

Приемы работы с удаленными системами через PowerShell

Я часто работаю с командами на удаленных системах через PowerShell как во время пентестов, так и при решении повседневных задач. Запуска удаленных команд происходит через протокол WinRM (Windows Remote Management), который, насколько мне известно, поддерживается в Windows Vista SP 1, Windows 7, Windows Server 2008 и Windows Server 2012.

Автор: Scott Sutherland

Я часто работаю с командами на удаленных системах через PowerShell как во время пентестов, так и при решении повседневных задач. Запуска удаленных команд происходит через протокол WinRM (Windows Remote Management), который, насколько мне известно, поддерживается в Windows Vista SP 1, Windows 7, Windows Server 2008 и Windows Server 2012.

Первоначальные настройки

Перед тем как начать работу с удаленной системой, необходимо выполнить настройку.

1. Запустите консоль PowerShell от имени администратора и выполните следующую команду:

Команда выше разрешает запуск команд на удаленных системах. Если у вас возникли проблемы, используйте команды ниже:

2. Убедитесь в том, что служба WinRM запускается автоматически.

# Устанавливаем нужный режим

Set-Service WinRM -StartMode Automatic

# Проверяем, что служба запущена

Get-WmiObject -Class win32_service | Where-Object

3. Устанавливаем у всех хостов статус «достоверный» (можно сделать позже).

# Доверяем всем хостам

Set-Item WSMan:localhost\client\trustedhosts -value *

# Проверяем настройку достоверных хостов

Примеры работы с удаленными системами

Перед ознакомлением с примерами рекомендую вам прочитать прекрасную статью, посвященную работе с удаленными командами в PowerShell.

Запуск одиночной команды на удаленной системе

Команда "Invoke-Command" предназначена для запуска команд на удаленных системах. Можно работать от имени текущего пользователя, либо использовать стороннюю учетную запись, если вы работаете в системе, которая не является частью домена:

Invoke-Command –ComputerName MyServer1 -ScriptBlock
Invoke-Command –ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock

Если установлен модуль для работы с ActiveDirectory, становится возможным запуск команд на множестве систем при помощи каналов (pipeline):

Иногда на удаленной системе требуется запустить скрипт, хранящийся локально:

Invoke-Command -ComputerName MyServer1 -FilePath C:\pentest\Invoke-Mimikatz.ps1
Invoke-Command -ComputerName MyServer1 -FilePath C:\pentest\Invoke-Mimikatz.ps1 -Credentials demo\serveradmin

Если вы генерируете команды или функции динамически, которые затем передаются на удаленную систему можно использовать связку команд invoke-expression и invoke-command:

$MyCommand = "hostname"
$MyFunction = "function evil ;evil"
invoke-command -ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock
-ArgumentList $MyFunction

Организация интерактивной консоли на удаленной системе

Организовать интерактивную консоль в PowerShell на удаленной системе можно при помощи команды "Enter-PsSession" (немного похожа на SSH). Команда "Enter-PsSession" также запускается либо от имени текущего пользователя, либо при помощи альтернативной учетной записи:

Enter-PsSession –ComputerName server1.domain.com
Enter-PsSession –ComputerName server1.domain.com –Credentials domain\serveradmin

Закрытие сессии выполняется при помощи команды "Exit-PsSession":

Создание фоновых сессий

Еще одна полезная возможность позволяет создавать фоновые сессии (команда "New-PsSession"). Фоновые сессии могут оказаться полезны при запуске множества команд во множестве систем. Как и предыдущие команды, команда "New-PsSession" запускается от имени текущего пользователя, либо при помощи альтернативной учетной записи:

New-PSSession -ComputerName server1.domain.com
New-PSSession –ComputerName server1.domain.com –Credentials domain\serveradmin

Если установлен модуль для работы с ActiveDirectory, становится возможным единовременное создание фоновых сессий для множества систем (этот трюк можно выполнить различными способами). Ниже показан пример создания фоновых сессий для всех систем, входящих в домен. В примере создание сессий происходит в системе, не входящей в домен, при помощи альтернативной учетной записи домена.

New-PSDrive -PSProvider ActiveDirectory -Name RemoteADS -Root "
" -Server a.b.c.d -credential domain\user
cd RemoteADS:
Get-ADComputer -Filter * -Properties name | select @>
| New-PSSession

Вывод перечня фоновых сессий

Как только создано несколько фоновых сессий, можно просмотреть их перечень при помощи команды "Get-PsSession".

Взаимодействие с фоновыми сессиями

Первое время у меня было ощущение схожее с тем, как я работал с сессиями в MetaSploit. Однако фоновые сессии в PowerShell чуть более стабильны. Ниже показан пример взаимодействия при помощи идентификатора сессии:

Enter-PsSession –id 3

Для выхода из сессии используйте команду "Exit-PsSession". Сессия перейдет обратно в фоновый режим.

Запуск команд через фоновые сессии

Если вы хотите выполнить команду во всех активных сессиях, используйте связку команд "Invoke-Command" и "Get-PsSession".

Invoke-Command -Session (Get-PSSession) -ScriptBlock

Удаление фоновых сессий

Для удаления всех активных сессий используйте команду "Disconnect-PsSession"

Удаленные команды в PowerShell открывают огромные возможности, как для администраторов, так и для пентестеров. Вне зависимости от ситуации, как вы будете работать с удаленными системами, все сводится к следующему:

PowerShell
Рассеивание Powershell

Перенаправление PowerShell необходимо сначала включить на сервере, к которому вы хотите удаленно подключиться.

Эта команда выполняет следующие действия:

  • Выполняет командлет Set-WSManQuickConfig, который выполняет следующие задачи:
  • Запуск службы WinRM.
  • Устанавливает тип запуска в службе WinRM для Automatic.
  • Создает прослушиватель для приема запросов на любой IP-адрес, если он еще не существует.
  • Включает исключение брандмауэра для связи WS-Management.
  • Регистрирует конфигурации сеанса Microsoft.PowerShell и Microsoft.PowerShell.Workflow, если они еще не зарегистрированы.
  • Регистрирует конфигурацию сеанса Microsoft.PowerShell32 на 64-разрядных компьютерах, если она еще не зарегистрирована.
  • Включает все конфигурации сеанса.
  • Изменяет дескриптор безопасности всех конфигураций сеанса, чтобы разрешить удаленный доступ.
  • Перезагружает службу WinRM, чтобы сделать предыдущие изменения эффективными.

Только для не-доменных сред

Для серверов в домене AD аутентификация удаленного доступа PS выполняется через Kerberos («Default») или NTLM («Negotiate»). Если вы хотите разрешить удаленный доступ к серверу, отличному от домена, у вас есть два варианта.

Либо настройте WSMan-связь через HTTPS (для чего требуется генерация сертификата), либо включите базовую аутентификацию, которая отправляет ваши учетные данные через проводную base64-кодировку (это в основном то же самое, что и обычный текст, поэтому будьте осторожны с этим).

В любом случае вам придется добавить удаленные системы в список надежных хостов WSM.

Включение базовой проверки подлинности

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

Важно : вы должны сообщить своему клиенту, чтобы он доверял компьютеру, адресованному так, как вы хотите подключиться (например, если вы подключаетесь через IP-адрес, он должен доверять IP-адресу, а не имени хоста)

Подключение к удаленному серверу через PowerShell

Использование учетных данных с вашего локального компьютера:

Запрос учетных данных на удаленном компьютере

Выполнять команды на удаленном компьютере

После включения удаленного доступа Powershell (Enable-PSRemoting) Вы можете запускать команды на удаленном компьютере следующим образом:

Вышеупомянутый метод создает временный сеанс и закрывает его сразу после завершения команды или скриптового блока.

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

Затем вы можете использовать этот сеанс каждый раз, когда вы вызываете команды на удаленном компьютере:

Если вам нужно использовать разные учетные данные, вы можете добавить их с -Credential параметра -Credential Parameter:

Удаление предупреждения о сериализации

Замечания:

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

Если у вас есть методы на обычном объекте PS:

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

Чтобы использовать аргументы в качестве параметров для удаленного сценария, можно использовать параметр ArgumentList для Invoke-Command или использовать синтаксис $Using:

Использование ArgumentList с неназванными параметрами (то есть в том порядке, в котором они передаются скриптблоку):

Использование ArgumentList с именованными параметрами:

Использование $Using: syntax:

Лучшая практика для автоматической очистки PSSessions

Когда удаленный сеанс создается с помощью командлета New-PSsession , PSSession сохраняется до окончания текущего сеанса PowerShell. Это означает, что по умолчанию PSSession и все связанные ресурсы будут по-прежнему использоваться до окончания текущего сеанса PowerShell.

Несколько активных PSSessions могут стать нагрузкой на ресурсы, особенно для длинных или взаимосвязанных сценариев, которые создают сотни PSSessions в одном сеансе PowerShell.

Лучше всего явно удалить каждую PSSession после ее окончания. [1]

Следующий шаблон кода использует try-catch-finally для достижения вышеуказанного, объединяя обработку ошибок с надежным способом, чтобы все созданные PSSessions были удалены, когда они были использованы:

How do I start remote desktop from PowerShell?

How do I start an RDP session from powershell? I’m looking to avoid a custom script because I work at an MSP and end up remoting into machines across various domains in a day and so maintaining a selection of scripts across each is not trivial (unless you have a solution to that for me).

Josiah's user avatar

7 Answers 7

Same as in command line, you can launch the RDP client as so:

Raf's user avatar

From your desktop, you can start an RDP session pointing to a remote system with this:

Where $machinename is the name of the remote system. You will be prompted for credentials.

Here it is in function format. As alorc said. Paste this into your $profile

Connection settings are stored in .rdp files. There is no need to specify a computer name and list other settings in the code. Connect Hyper-V with settings from .rdp file:

Well, for the beauty of this whole process, create a .vbs file in the same folder that calls your .ps1 file in invisible mode.

Invoke-Command

Выполняет команды на локальном и удаленных компьютерах.

Синтаксис

Описание

Командлет Invoke-Command выполняет команды на локальном или удаленном компьютере и возвращает все выходные данные команд, включая ошибки. С помощью одной команды Invoke-Command можно выполнять команды на нескольких компьютерах.

Для выполнения одной команды на удаленном компьютере следует использовать параметр ComputerName. Чтобы выполнить последовательность команд, совместно использующих данные, создайте сеанс PSSession (постоянное подключение) на удаленном компьютере и используйте параметр Session командлета Invoke-Command для выполнения команды в рамках PSSession.

Также можно использовать Invoke-Command на локальном компьютере для анализа или выполнения строки или блока скрипта как команды. Windows PowerShell преобразует блок скрипта в команду и немедленно выполняет эту команду в рамках текущего сеанса вместо отображения текста строки в командной строке.

Перед использованием Invoke-Command для выполнения команд на удаленном компьютере ознакомьтесь с разделом about_Remote.

Параметры

-AllowRedirection

Разрешает перенаправление данного соединения на альтернативный URI.

При использовании параметра ConnectionURI удаленный узел может вернуть инструкцию с перенаправлением на другой URI. По умолчанию Windows PowerShell не перенаправляет соединения, но можно воспользоваться параметром AllowRedirection и разрешить перенаправление соединений.

Кроме того, можно ограничить число операций перенаправления подключения, присвоив соответствующее значение свойству MaximumConnectionRedirectionCount привилегированной переменной $PSSessionOption или свойству MaximumConnectionRedirectionCount значения параметра SessionOption. По умолчанию используется значение 5. Дополнительные сведения см. в описании параметра SessionOption и в разделе справки для командлета New-PSSessionOption.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ApplicationName <string>

Задает сегмент имени приложения в URI подключения. Этот параметр служит для указания имени приложения, если в команде не используется параметр ConnectionURI.

По умолчанию используется значение привилегированной переменной $PSSessionApplicationName на локальном компьютере. Если эта привилегированная переменная не определена, используется значение по умолчанию «WSMAN». Это значение подходит для большинства случаев. Дополнительные сведения см. в разделе about_Preference_Variables.

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

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ArgumentList <Object[]>

Значения локальных переменных в команде. Переменные в команде заменяются этими значениями перед выполнением команды на удаленном компьютере. Введите значения, разделенные запятыми. Значения связываются с переменными в порядке перечисления. Псевдоним ArgumentList — «Args».

Параметр ArgumentList может содержать как фактические значения, например «1024», так и локальные переменные, например «$max».

Чтобы использовать в команде локальные переменные, используйте следующий формат команды.

Ключевое слово «param» служит для перечисления локальных переменных, используемых в команде. Параметр ArgumentList содержит значения переменных в порядке их перечисления.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-AsJob

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

При использовании параметра AsJob команда возвращает объект, представляющий задание, а затем появляется командная строка. Можно продолжить работу в рамках данного сеанса, пока задание завершается. Чтобы управлять заданием, используйте командлеты Job. Чтобы получить результаты задания, используйте командлет Receive-Job.

Использование параметра AsJob аналогично использованию команды Invoke-Command для удаленного запуска команды Start-Job. Однако при использовании AsJob задание создается на локальном компьютере, хотя и выполняется на удаленном компьютере, а результаты удаленного задания автоматически возвращаются на локальный компьютер.

Дополнительные сведения о фоновых заданиях в Windows PowerShell см. в разделах about_Jobs и about_Remote_Jobs.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-Authentication <AuthenticationMechanism>

Задает механизм, используемый при проверке подлинности учетных данных пользователя. Допустимые значения: Default, Basic, Credssp, Digest, Kerberos, Negotiate и NegotiateWithImplicitCredential. По умолчанию используется значение «Default».

Проверка подлинности CredSSP доступна только в Windows Vista, Windows Server 2008 и более поздних версиях Windows.

Дополнительные сведения о значениях этого параметра см. в описании перечисления System.Management.Automation.Runspaces.AuthenticationMechanism в библиотеке MSDN.

ВНИМАНИЕ! Проверка подлинности CredSSP, при которой учетные данные пользователя передаются на удаленный компьютер, предназначена для команд, которые должны пройти процедуру проверки подлинности на нескольких ресурсах, например при доступе к удаленному общему сетевому ресурсу. Такой механизм повышает угрозы безопасности удаленных операций. Если безопасность удаленного компьютера нарушена, передаваемые ему учетные данные могут использоваться для управления сетевым сеансом.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-CertificateThumbprint <string>

Задает цифровой сертификат с открытым ключом (X509) учетной записи пользователя, который располагает разрешением для выполнения этого действия. Введите отпечаток сертификата.

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

Чтобы получить отпечаток сертификата, воспользуйтесь командой Get-Item или Get-ChildItem в Windows PowerShell на диске Cert:.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ComputerName <string[]>

Задает компьютеры, на которых выполняется команда. По умолчанию используется значение «Локальный компьютер».

При использовании параметра ComputerName Windows PowerShell создает временное подключение, которое используется только для запуска заданной команды и затем закрывается. Если требуется создать постоянное подключение, используйте параметр Session.

Введите имя NETBIOS, IP-адрес или полное доменное имя одного или нескольких компьютеров в виде списка разделенных запятыми значений. Чтобы указать локальный компьютер, введите имя компьютера, «localhost» или точку (.).

Для использования IP-адреса в значении параметра ComputerName в команду необходимо включить параметр Credential. Кроме того, необходимо настроить компьютер на использование транспорта HTTPS или включить IP-адрес удаленного компьютера в список TrustedHosts WinRM на локальном компьютере. Инструкции по добавлению имени компьютера в список TrustedHosts см. в статье «Добавление компьютера в список доверенных узлов» в разделе about_Remote_Troubleshooting.

Примечание. Чтобы включить локальный компьютер в значение параметра ComputerName под управлением Windows Vista и более поздних версий Windows, необходимо запускать Windows PowerShell командой «Запуск от имени администратора».

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ConfigurationName <string>

Задает конфигурацию нового сеанса PSSession.

Введите имя конфигурации или полный URI ресурса для конфигурации сеанса. Если указано только имя конфигурации, перед ним добавляется следующий URI схемы: https://schemas.microsoft.com/powershell.

Конфигурация сеанса находится на удаленном компьютере. Если указанная конфигурация сеанса не существует на удаленном компьютере, команда завершается с ошибкой.

По умолчанию используется значение привилегированной переменной $PSSessionConfigurationName на локальном компьютере. Если значение этой привилегированной переменной не установлено, используется значение по умолчанию «Microsoft.PowerShell». Дополнительные сведения см. в разделе about_Preference_Variables.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ConnectionURI <Uri[]>

Задает универсальный идентификатор ресурса (URI), определяющий конечную точку соединения. Значение URI должно быть указано полностью.

Строка имеет следующий формат:

По умолчанию используется следующее значение.

Допустимые значения сегмента транспорта в URI: HTTP и HTTPS. Если в команде не указан параметр ConnectionURI, для указания значений URI можно использовать параметры UseSSL, ComputerName, Port и ApplicationName.

Если конечный компьютер перенаправляет соединение на другой URI, Windows PowerShell предотвращает перенаправление, если в команде не задан параметр AllowRedirection.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-Credential <PSCredential>

Задает учетную запись пользователя, который располагает разрешением для выполнения этого действия. По умолчанию используется значение «Текущий пользователь».

Введите имя пользователя, например «User01» или «Domain01\User01», или введите переменную, содержащую объект PSCredential, например объект, создаваемый командлетом Get-Credential. При вводе имени пользователя появится приглашение ввести пароль.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-FilePath <string>

Выполняет заданный локальный скрипт на одном или нескольких удаленных компьютерах. Введите путь и имя файла скрипта или передайте путь к скрипту командлету Invoke-Command по конвейеру. Скрипт должен находиться на локальном компьютере или в каталоге, к которому можно получить доступ с локального компьютера. Чтобы указать значения параметров скрипта, используйте параметр ArgumentList.

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

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-HideComputerName

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

Этот параметр влияет только на выводимый результат. Это не изменяет объект.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-InputObject <psobject>

Задает входные данные команды. Введите переменную, содержащую объекты, либо получающую их команду или выражение.

При использовании параметра InputObject следует использовать в значении параметра ScriptBlock автоматическую переменную $input для представления входных объектов.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-JobName <string>

Задает понятное имя фонового задания. По умолчанию заданиям присваиваются имена «Job<n>», где <n> — порядковый номер. Этот параметр допустим только с параметром AsJob.

Если в команде используется параметр JobName, команда выполняется как задание, и Invoke-Command возвращает объект задания, даже если в команду не включен параметр AsJob.

Чтобы получить дополнительные сведения о фоновых заданиях Windows PowerShell, см. раздел about_Jobs.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-Port <int>

Задает сетевой порт на удаленном компьютере, используемый для данной команды. По умолчанию используется значение «Порт 80» (HTTP-порт).

Перед использованием альтернативного порта необходимо настроить прослушиватель WinRM на удаленном компьютере на прослушивание этого порта. Чтобы настроить прослушиватель, введите следующие две команды в командной строке Windows PowerShell.

remove-item -path wsman:\Localhost\listener\listener* -recurse

new-item -path wsman:\Localhost\listener -Transport http -Address * -port <номер_порта>

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

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ScriptBlock <scriptblock>

Задает выполняемые команды. Чтобы создать блок скрипта, заключите команды в фигурные скобки ( < >). Это обязательный параметр.

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

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-Session <PSSession[]>

Выполняет команду в указанных сеансах Windows PowerShell (PSSession). Введите переменную, содержащую объекты PSSession, либо команду, создающую или получающую объекты PSSession, например New-PSSession или Get-PSSession.

При создании сеанса PSSession Windows PowerShell создает постоянное подключение к удаленному компьютеру. Используйте сеанс PSSession для выполнения последовательности связанных команд, работающих с общими данными. Для выполнения одной команды или последовательности несвязанных команд следует использовать параметр ComputerName.

Для создания сеанса PSSession используйте командлет New-PSSession. Дополнительные сведения см. в разделе about_PSSessions.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-SessionOption <PSSessionOption>

Устанавливает расширенные параметры сеанса. Введите объект SessionOption, созданный с помощью командлета New-PSSessionOption.

Значения по умолчанию для параметров определяются значением привилегированной переменной $PSSessionOption, если оно задано. В противном случае в сеансе используются системные значения по умолчанию.

Описание параметров сеанса, включая значения по умолчанию, см. в разделе справки для командлета New-PSSessionOption. Дополнительные сведения о привилегированной переменной $PSSessionOption см. в разделе about_Preference_Variables.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-ThrottleLimit <int>

Задает максимальное количество одновременных соединений, которые могут быть установлены для выполнения данной команды. Если этот параметр не задан или для него введено значение 0, используется значение по умолчанию 32.

Ограничение скорости относится только к текущей команде, но не к сеансу или компьютеру.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

-UseSSL

Использует протокол SSL (Secure Sockets Layer) для установки подключения к удаленному компьютеру. По умолчанию SSL не используется.

Протокол WS-Management шифрует все передаваемое по сети содержимое Windows PowerShell. UseSSL — это дополнительная мера защиты, которая позволяет передавать данные по протоколу HTTPS, а не HTTP.

Если используется этот параметр, но установить SSL-соединение с портом, указанным в команде, не удается, команда завершается с ошибкой.

Значение по умолчанию

Принимать входные данные из конвейера?

Принимать подстановочные знаки?

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

Можно передать команду командлету Invoke-Command в блоке скрипта по конвейеру. Для представления входных объектов команды следует использовать автоматическую переменную $input.

System.Management.Automation.PSRemotingJob или результат, созданный выполненной командой

При использовании параметра AsJob командлет Invoke-Command возвращает объект задания. В противном случае он возвращает результат, созданный выполненной командой (значением параметра ScriptBlock).

Примечания

— Чтобы использовать параметр ComputerName командлета Invoke-Command для выполнения команды на локальном компьютере под управлением Windows Vista и более поздних версий Windows, необходимо запускать Windows PowerShell командой «Запуск от имени администратора».

— При выполнении команд на нескольких компьютерах Windows PowerShell подключается к компьютерам в том порядке, в котором они указаны в списке. Результаты выполнения команд отображаются в порядке поступления результатов от удаленных компьютеров, который может отличаться от порядка выполнения команд.

— Ошибки, возникающие при выполнении команд с помощью командлета Invoke-Command, отображаются в результатах выполнения команд. Ошибки, которые были бы прерывающими при локальном выполнении команды, обрабатываются как непрерывающие при удаленном выполнении команды. Такой подход позволяет избежать ситуации, в которой прерывающие ошибки на одном компьютере прервут выполнение команды на всех остальных компьютерах. Данное утверждение справедливо даже при удаленном выполнении команды на одном компьютере.

— Если удаленный компьютер не входит в домен, которому доверяет локальный компьютер, этот компьютер может оказаться неспособным выполнить проверку подлинности учетных данных пользователя. Чтобы добавить удаленный компьютер в список «доверенных узлов» в WS-Management, используйте следующую команду в поставщике WSMAN, где <Remote-Computer-Name> — имя удаленного компьютера:

set-item -path wsman:\Localhost\Client\TrustedHosts -value <имя_удаленного_компьютера>.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *