Разное

Powershell enter pssession: PowerShell Remoting — настройка и удаленное управление / Хабр

18.09.2020
PowerShell Remoting — настройка и удаленное управление / Хабр
Здесь минимум теории, в основном практическая часть. Описывается как настроить WinRM, как изменить профиль сетевого адаптера, дается скрипт по добавлению в TrustedHosts с фильтрацией, объясняется зачем нужны доверенные хосты, и рассматриваются поверхностно удаленные подключения так чтобы можно было сесть и сразу админить удаленные машины.

Наиболее простой путь сконфигурировать удаленное управление это выполнить Enable-PSRemoting в оболочке powershell с правами администратора. При этом произойдет следущее:

  • запустится служба WinRM (если запущена перезапустится)
  • служба WinRM перейдет в состояние — автоматический запуск при старте
  • будет создан прослушиватель WinRM для HTTP трафика на порту 5985 для всех локальных IP адресов
  • будет создано правило файрвола для прослушивателя WinRM. Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная», т.к. открывать порт на такой карточке не хорошо. Если у вас при конфигурировании вышла такая ошибка измените профиль это сетевушки командлетом
    Set-NetConnectionProfile
    и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола только из локальной сети.


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

для проверки куда можно подключаться используем:

get-item wsman:\localhost\Client\TrustedHosts

для разрешения подключаться ко всем
set-item wsman:localhost\client\trustedhosts -value *

Если вы открываете доступ для всех указав * то WinRM будет подключаться ко ВСЕМ машинам без проверки. Помните, что вы открываете самого себя для потенциального взлома из локальной сети. Лучше указывать адреса хостов куда вам нужно подключится, тогда WinRM будет отклонять все остальные адреса или имена. Если машина с которой ведется управление находится в домене она будет доверять всем машинам этого домена. Если она не в домене, или в другом домене, то нужно указать в TrustedHosts адрес или имя машины на которую мы будем подключаться.
Добавлять себя на машине к которой мы подключаемся не нужно.

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

######################################################################################
# добавляет NewHost в список TrustedHost с фильтрацией если такая строка уже есть
# можно дергать из командной строки указывая параметр напрямую например
# .\Add-TrustedHost.ps1 192.168.2.1
######################################################################################
param ( $NewHost = '192.168.2.89' )

Write-Host "adding host: $NewHost"

$prev = (get-item WSMan:\localhost\Client\TrustedHosts).value
if ( ($prev.Contains( $NewHost )) -eq $false)
{ 
    if ( $prev -eq '' ) 
    { 
        set-item WSMan:\localhost\Client\TrustedHosts -Value "$NewHost" 
    }
    else
    {
        set-item WSMan:\localhost\Client\TrustedHosts -Value "$prev, $NewHost"
    }
}

Write-Host ''
Write-Host 'Now TrustedHosts contains:'
(get-item WSMan:\localhost\Client\TrustedHosts).value

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

Есть разница указывать имя или адрес. Если в TrustedHosts будет только адрес то открыть сессию по имени не получится, и наоборот — если указать имя то прицепится по адресу не получится. Учитывайте это.

Часто встречается ссылка на команду

WinRM quickconfig

это не тоже самое что Enable-PSRemoting
в чем же разницаEnable-PSRemoting делает больше действий чем «winrm quickconfig». Командлет Set-WSManQuickConfig делает точно такие же действия как «winrm quickconfig». Enable-PSRemoting запускает Set-WSManQuickConfig когда ведет настройку системы

Set-WSManQuickConfig делает следущие действия:

  1. запускат WinRM сервис
  2. устанавливает автостарт службы WinRM в автоматический
  3. создает прослушиватель
  4. добавляет исключения файрвола

Enable-PSRemoting кроме этого делает еще следущее
  1. включает все зарегистрированные конфигурации сессий PowerShell для получения инструкций от удаленных машин
  2. регистрирует конфигурацию если она не зарегистрирована «Microsoft.PowerShell»
  3. регистрирует конфигурацию если она не зарегистрирована «Microsoft.PowerShell32» на 64 битных машинах
  4. убирает запрет «Deny Everyone» из дескриптора безопасности всех конфигураций сессий
  5. перезапускает сервис WinRM

источник
Enable-PSRemoting TechNet
Set-WSManQuickConfig TechNet



Удаленные подключения
1. Сессии 1-to-1
открываются командой
Enter-PSSession -ComputerName Test

Вы получите оболочку на удаленной машине. Подключится можно к самому себе указав localhost. Альтернативные кредиталы указываются с параметром -Credential, выход происходит командлетом Exit-PSSession

Ограничения следующие:

  • нельзя сделать второй прыжок — только 1 сессия, внутри сессии подключиться дальше нельзя
  • вы не можете использовать команды имеющие графический интерфейс. Если вы это сделаете оболочка повиснет, нажмите Ctrl+C чтобы отвисло
  • вы не можете запускать команды имеющие свой собственый шел, например nslookup, netsh
  • вы можете запускать скрипты если политика запуска на удаленной машине позволяет их запускать
  • нельзя прицепится к интерактивной сессии, вы заходите как «network logon», как будто прицепились к сетевому диску. Поэтому не запустятся логон скрипты, и вы можете не получить домашнюю папку на удаленной машине (лишний довод чтобы не мапать хом фолдеры логон скриптами)
  • вы не сможете взаимодействовать с юзером на удаленной машине даже если он туда залогинен. Не получится показать ему окошко или попечатать чтонибудь ему.

этот способ лучше всего для простых операций, зашел, подергал сервер и отключился. Если нужно удержать переменные в скопе, нужна длительная операция (много часов или дней), нужно больше возможностей по администрированию то нужно использовать технику попродвинутее.
Комментарий.
объекты переданные по сети обрезаются и перестают быть живыми. У них удаляются методы, свойства остаются. Вытащить объект на свою машину, поколдовать и засунуть обратно не получится. Если нужно больше пишите, допишу отдельно.

2. Сессии 1-to-many

Invoke-Command

определяем что будем исполнять так:
$sb = { команды для удаленной машины разделенные точкой с запятой }

передаем на удаленные машины Test1 и Test2
Invoke-Command -ComputerName Test1, Test2 -ScriptBlock $sb

за раз можно забросить на 32 машины. Если альтернативные кредиталы то используем параметр -Credential

Чтобы передать целиком скрипт вместо параметра -ScriptBlock пишем -FilePath, удаленной машине НЕ нужно иметь доступ к файлу, он будет разобран на запчасти, передан через HTTP и выполнен с той стороны.

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

для полноценного использования Invoke-Command надо уметь превращать строки в скрипт блоки. Например у вас есть команды которые зависят от какогото списка, вам нужно сгенерировать строку, превратить ее в ScriptBlock и отправить на удаленный комп:
$sb = [Scriptblock]::Create( $SomeString )

kuda78

В статье пропущен очень важный момент — передача параметров в скрипт на удаленной машине.

$deployRemote = {
param(
[string]$targetEnvName,
[string]$targetUsername)
$Global:ErrorActionPreference = «Stop»
#…
}

Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList ($targetEnvName, $targetUsername)


Да действительно пропущен. Сделал сознательно чтобы не загромождать обзор параметрами и описаниями. Спасибо. Параметр -ArgumentList работает как со скрипт блоками так и со сценариями

3. Сессии
Это когда с той стороны создается копия пошика постоянно висящая в памяти, и в нее отправляются команды. Как результат к ней можно переподключится, ченить долгое запустить на исполнение, цепляться из разных скриптов или разными юзерами. Например у вас есть набор скриптов решающих одну задачу по частям, каждый из них поочереди может подключатся к одной удаленной сессии, видеть результаты работы предыдущих команд, иметь одни загруженные модули, общие переменные, общее окружение, до тех пор пока сессия не будет принудительно закрыта.

Создание сессии происходит командлетом New-PSSession, результат можно поместить в переменную

$DC01 = New-PSSession -ComputerName DC01
$Controllers = New-PSSession DC01, DC02, DC03

использовать можно такие же параметры подключения как в Invoke-Command

Как использовать:
если 1-to-1

Enter-PSSession -Session $DC01

если 1-to-many
Invoke-Command -Sessions $Controllers -ScriptBlock {get-eventlog -logname security -newest 50}

посмотреть какие сессии открыты можно с помощью Get-PSSession, закрыть Remove-PSSession
закрыть вообще все сессии
Get-PSSession | Remove-PSSession

прицепится к сессии можно с помощью Connect-PSSession, отключиться через Disconnect-PSSession

Invoke-Command может создать сразу disconnected сессию, он отправляет команды на исполнение и отключатся, позже можно подключится и сгрузить результаты работы. Делается это параметром -Disconnected. Получение результатов через командлет Recieve-PSSession.

Сессии имеют очень много настроек, возможно даже создание сессий с обрезаным набором команд, модулей и т.п. Называется custom endpoints

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

В Powershell есть несколько методов удаленного подключения. Это через:

  • WMI
  • CIM
  • PS remoting/WinRM

Сегодня мы поговорим о PS remoting/WinRM. В его состав входит, в основном, два командлета — это:


Enter-PSSession -ComputerName CL1

Этот командлет устанавливает сессию c удаленным компьютером и мы сможем работать прям на нем. Если сравнивать с Linux, то это почти одно и то же:


ssh CL1

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


Invoke-Command -ComputerName AD,CL1 -ScriptBlock {Get-ComputerInfo}

Где:
-ComputerName — имена компьютеров (или одного)
-Scriptblock — скрипт или командлет в скобках {}

Если опять же сравнить с Linux ssh, то это почти одно и то же:


ssh [email protected] 'ifconfig'

Как настроить удаленное управление через Powershell?

Для того что бы суметь настроить нужно понять как это работает. Команды выше могут работать по протоколу HTTP (по порту 5985) и HTTPS (5986), за исключением версии Powershell 1.0, который работал в XP (там порт 80/443). По умолчанию у нас стоит HTTP, но и эти данные шифруются используя симметричный ключ AES-256. Сама аутентификация работает в 2 режимах NTLM и Kerberos(по умолчанию стоит он). Если у вас сеть с домен контроллером, т.е. есть Kerberos, то у вас должны работать команды выше. Если компьютеры в Workgroup, то они используют NTLM и для этого нужна дополнительная настройка.

Кроме того, если вы вместо имен используете IP, то вы в любом случае используете NTLM и это по умолчанию не работает.

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


Get-Service -Name "*WinRM*" | fl

Если не запушен:


Enable-PSRemoting

В этом случае мы ставим запуск сервиса автоматически и настраиваем winrm в дефолтной конфигурации. Этот сервис дает возможность принимать команды Powershell и устанавливать сеансы.

Если вы работаете под профилем сети «Public» (не «Domain» или «Private»), то нужно выполнить еще один командлет, разрешающий работать в таких сетях:


Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Если мы выполним такую команду:


Invoke-Command -ComputerName 192.168.3.100 -ScriptBlock {Get-Command}

Получим ошибку:
Connecting to remote server 192.168.3.100 failed with the following error message : The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided.

Которая говорит, что мы можем подключится по IP если используем HTTPS (для этого нужен сертификат) или добавить хост, к которому подключаемся в TrustedHost компьютера с которого хотим запустить команду. Для этого делаем:


Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.3.134

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


$cred = Get-Credential
Invoke-Command -ComputerName 192.168.3.134 -ScriptBlock {Get-ComputerInfo} -Credential $cred

Где:
$cred — это переменная, куда мы сохраняем данные с формы Get-Credential
-Credential — сюда мы передаем переменную

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

Теперь мы можем устанавливать множество сессий с помощью командлета:


New-PSSession -ComputerName 192.168.3.134 -Credential $cred

Получать ID этих сессий:


Get-PSSession

И подключаться по этим ID:


Enter-PSSession -Id 9

Или использовать с invoke существующую сессию, а командлет для удаленного компьютера запускать с файла:


$cred = Get-Credential
$s = New-PSSession -ComputerName 192.168.3.134 -Credential $cred
Invoke-Command -Session $s -FilePath c:\scripts\test.ps1

А так же, т.к. WinRM настроен, выполнять командлеты где есть ключ -ComputerName, сразу на нескольких компьютерах. Этот командлет пропингует AD сразу с нескольких компьютеров:


Test-Connection -Source CL1,CL2 -ComputerName AD -Credential $cred

Или же использовать методы описанные выше. 

Дополнительные ключи мы можем узнать по командлетам:


Get-Help Enter-PSSession -Examples
Get-Command -Noun PSSession

или по powershell invoke


Get-Help Invoke-Command -Examples

 

Теги: #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 от имени администратора и выполните следующую команду:

Enable-PSRemoting –force

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

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

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

Set-Service WinRM -StartMode Automatic

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

Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"}

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

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

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

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

Get-Item WSMan:\localhost\Client\TrustedHosts

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

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

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

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

Invoke-Command –ComputerName MyServer1 -ScriptBlock {Hostname}
Invoke-Command –ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock {Hostname}

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

Get-ADComputer -Filter * -properties name | select @{Name="computername";Expression={$_."name"}} |
Invoke-Command -ScriptBlock {hostname}

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

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 {write-host `"Getting evil...`";iex -command $MyCommand};evil"
invoke-command -ComputerName MyServer1 -Credentials demo\serveradmin -ScriptBlock
{Invoke-Expression -Command "$args"} -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»:

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 @{Name="ComputerName";Expression={$_."name"}}
| New-PSSession

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

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

Get-PSSession

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

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

Enter-PsSession –id 3

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

Exit-PsSession

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

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

Invoke-Command -Session (Get-PSSession) -ScriptBlock {Hostname}

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

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

Get-PSSession | Disconnect-PSSession

Заключение

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

  • Для запуска одиночной команды на удаленной системе используйте «Invoke-Command».
  • Для взаимодействия с одиночной системой используйте «Enter-PSSession».
  • Если вы хотите запускать множество команд во множестве систем, используйте фоновые сессии.

Надеюсь, эта статья оказалась для вас полезной.

Ссылки

Работа с удаленными сессиями Powershell

Не так давно пришлось потратить немного времени на настройку удаленного доступа через Powershell. Мне такой подход кажется очень хорошей альтернативной Remote Desktop Services в ряде случаев (перезапустить сервис на удаленном хостинге VDS, сделать резервные копии, посмотреть состояние системы и т.д.).

Возможность создания удаленных сеансов Powershell появилась в версии 2. Для этого используется командлет Enter-PSSession/Invoke-Command. Однако, перед их использованием следует подготовить среду.

Что делаем на сервере:

Шаг 1: Открываем консоль Powershell и разрешаем удаленные сессии командлетом Enable-PSRemoting с ключом Force.

Enable-PSRemoting -Force

Шаг 2: Убеждаемся в том, что служба WinRM запущена.

Start-Service WinRM

Шаг 3: Настраиваем правила в брэндмауэре, чтобы входящие подключения были возможны.

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

Шаг 1: Разрешить подключение к удаленным узлам. Для доступа к любым узлам можно воспользоваться следующей конструкцией:

Set-Item wsman:\localhost\client\trustedhosts * -Force

Шаг 2: Убедиться, что брэндмауэр не блокирует исходящие соединения.

Теперь для подключения к удаленному узлу через Powershell можно осуществлять так:

Enter-PSSession 192.168.1.160 -Credential VMNAME\User

Значения 192.168.1.160 и VMNAME\User необходимо заменить адресом удаленного узла и именем пользователя Windows на сервере.

Теперь удаленный доступ через Powershell работает. Однако, есть еще один ньюанс. Возможно, кто-либо из вас пользуется профилями в Powershell. Профили – это специальные скрипты, которые запускаются при запуске самой консоли. Здесь, например, можно определить все необходимые алиасы и выполнить предварительные действия.

Проблема заключается в том, что профили не запускаются при использовании удаленных сеансов. Решить это можно путем использования разных конфигураций подключения. Для этого первоначально необходимо зарегистрировать конфигурацию на удаленном сервере. Сделать это можно путем выполнения коммандлета Register-PSSessionConfiguration. При этом каждой конфигурации присваивается имя. Для каждой конфигурации можно задать путь до скрипта, который будет выполняться при старте сессии.

Register-PSSessionConfiguration -name Config1 -startupScript c:\scripts\Startup.ps1

После этого, при подключении к удаленному узлу, при использовании коммандлета Enter-PSSession следует указать имя конфигурации.

Enter-PSSession 192.168.1.160 -ConfigurationName Config1 -Credential VMNAME\User

Теперь можно не тратить ресурсы сервера на создание сессии подключения через Remote Desktop Services и удаленно управлять сервером, используя Powershell.

Enter-PSSession — PowerShell — SS64.com

Enter-PSSession — PowerShell — SS64.com

Запустите интерактивный сеанс с удаленным компьютером. Это позволяет запускать несколько команд.
По умолчанию только администраторы могут удаленно выполнять команды, поэтому сеанс, с которого вы запускаете Enter-PsSession, должен иметь права администратора (или делегированного администратора) на удаленном компьютере.

 Синтаксис
      Enter-PSSession [ -ComputerName ]  строка  [-ApplicationName  строка ]
         [-Аутентификация {По умолчанию | Основные | Вести переговоры | NegotiateWithImplicitCredential | Credssp | Дайджест | Kerberos}]
            [-Порт  Int32 ] [-UseSSL] [- CertificateThumbprint  строка ] [-ConfigurationName  строка ]
               [-Credential  PSCredential ] [-SessionOption  PSSessionOption ] [-EnableNetworkAccess] [ CommonParameters ]

      Enter-PSSession [[ -ConnectionUri ]  Uri ] [-AllowRedirection]
         [-Аутентификация {По умолчанию | Основные | Вести переговоры | NegotiateWithImplicitCredential | Credssp | Дайджест | Kerberos}]
            [-CertificateThumbprint  строка ] [-ConfigurationName  строка ] [-EnableNetworkAccess]
               [-Credential  PSCredential ] [-SessionOption  PSSessionOption ] [ CommonParameters ]

      Enter-PSSession [-VMId]  Guid  [-ConfigurationName  string ] -Credential  PSCredential  [ CommonParameters ]

      Enter-PSSession [-VMName]  строка  [-ConfigurationName  строка ] -Credential  PSCredential  [ CommonParameters ]

      Enter-PSSession [-ContainerId]  строка  [-ConfigurationName  строка ] [-RunAsAdministrator] [ CommonParameters ]

      Enter-PSSession [[-Id]  int ] [ CommonParameters ]

      Enter-PSSession [-InstanceId  Guid ] [ CommonParameters ]

      Enter-PSSession [-Name  строка ] [ CommonParameters ]

      Enter-PSSession [[-Session]  PSSession ] [ CommonParameters ]

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

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

    -ApplicationName  строка 
       Имя сегмента приложения URI соединения. Используйте -ApplicationName, чтобы указать
       имя приложения, когда вы не используете -ConnectionURI.

       Значением по умолчанию является значение переменной предпочтения $ PSSessionApplicationName в
       локальный компьютер. Если эта переменная не определена, значением по умолчанию является WSMAN.Это значение подходит для большинства применений. Для получения дополнительной информации см. About_Preference_Variables.

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

   -Аутентификация  Аутентификация 
       Механизм аутентификации, который будет использоваться на сервере. Возможные значения:
        
        Основные Отправить имя пользователя и пароль в виде открытого текста.По умолчанию Используйте метод аутентификации, реализованный протоколом WS-Management. Это по умолчанию.
        Схема дайджеста Challenge-response, использующая для запроса заданную сервером строку данных.
        Kerberos Аутентификация с использованием сертификатов Kerberos.
        Согласовать вызов-ответ, который согласовывает схему аутентификации.
                    например Протокол Kerberos или NTLM.
        NegotiateWithImplicitCredential Использовать учетные данные, кэшированные на компьютере PSSession.CredSSP Использовать аутентификацию поставщика услуг безопасности учетных данных (CredSSP), делегировать
                   учетные данные для удаленного компьютера. Это увеличивает риск безопасности, если удаленный
                   компьютер скомпрометирован, учетные данные могут быть использованы для управления сетевым сеансом.
                   (Windows Vista или более поздние версии.)

   -Сертификат Thumbprint  строка 
       Отпечаток сертификата цифрового сертификата открытого ключа (X509) учетной записи пользователя
       у которого есть разрешение на выполнение этого действия.Сертификаты используются при проверке подлинности клиента на основе сертификатов.
       Они могут быть сопоставлены только с локальными учетными записями пользователей; они не работают с учетными записями домена.

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

   -ComputerName  строка 
       Запустите интерактивный сеанс с указанным удаленным компьютером.
       Полное доменное имя, NetBIOS-имя или IP-адрес.Используйте имя локального компьютера, localhost или точку (.), Чтобы указать локальный компьютер.

       Чтобы использовать IP-адрес в значении параметра ComputerName, команда должна включать
       Параметр учетных данных. Кроме того, компьютер должен быть настроен для передачи HTTPS или IP-адрес
       удаленного компьютера должен быть включен в список WinRM TrustedHosts на локальном компьютере.
       Для получения дополнительной информации см. Справку about_Remote_Trou Troubleshooting.

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

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

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

       Значением по умолчанию является значение переменной предпочтения $ PSSessionConfigurationName на локальном компьютере.
       Если эта переменная предпочтения не задана, по умолчанию используется Microsoft.PowerShell.
       Для получения дополнительной информации см. About_Preference_Variables.-ConnectionURI  Uri 
        Указывает универсальный идентификатор ресурса (URI), который определяет конечную точку соединения для
        интерактивная сессия. URI должен быть полностью квалифицированным.

        Формат этой строки следующий:
              Транспорт : //  ComputerName :  Порт / ApplicationName 
        Значение по умолчанию следующее:
            HTTP: // локальный: 5985 / WSMAN

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

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

   -Credential  PSCredential 
       Учетная запись пользователя, которая имеет разрешение на выполнение этого действия. по умолчанию = текущий пользователь.например «User64», «Domain01 \ User64» или «[email protected]». Или объект PSCredential, такой как
       возвращается Get-Credential. Когда вы вводите имя пользователя, вам будет предложено ввести пароль.

   -Id  и 
       Идентификатор существующего сеанса. (из Get-PSSession)
       Enter-PSSession использует указанный сеанс для интерактивного сеанса.

   -InstanceId  Guid 
       Идентификатор экземпляра существующего сеанса. Enter-PSSession затем будет использовать
       указанный сеанс для интерактивного сеанса.Идентификатор экземпляра является GUID. Чтобы найти идентификатор экземпляра сеанса, используйте Get-PSSession.
       Вы также можете использовать параметры Session, Name или ID для указания существующего сеанса.
       Или вы можете использовать параметр ComputerName для запуска временного сеанса.

   -Имя  Строка 
       Дружественное имя существующего сеанса. Enter-PSSession затем будет использовать
       указанный сеанс для интерактивного сеанса.
       Если указанное имя соответствует более чем одному сеансу, команда завершится неудачно.Вы также можете использовать параметры Session, InstanceID или ID для указания существующего сеанса.
       Или вы можете использовать параметр ComputerName для запуска временного сеанса.
       Чтобы установить понятное имя для сеанса, используйте параметр Name в New-PSSession.

    -Порт  и 
       Сетевой порт на удаленном компьютере, используемый для этой команды.
       По умолчанию используется порт 80 (порт HTTP).
       Перед использованием альтернативного порта настройте прослушиватель WinRM на удаленном компьютере для прослушивания
       порт.Используйте следующие команды для настройки слушателя:
        1. winrm удалить winrm / config / listener? Address = * + Transport = HTTP
        2. winrm создать winrm / config / listener? Address = * + Transport = HTTP @ {Port = " номер порта "}
       Не используйте параметр Port, если это не нужно. Настройка порта в команде применяется к
       все компьютеры или сеансы, на которых выполняется команда.
       Параметр альтернативного порта может помешать выполнению команды на всех компьютерах.Сеанс  сеанс 
       Сеанс Windows PowerShell (PSSession) для использования в интерактивном сеансе.
       Этот параметр принимает объект сеанса.
       Вы также можете использовать параметры Name, InstanceID или ID для указания сеанса PSSession.
       Введите переменную, которая содержит объект сеанса или команду, которая создает или получает
       объект сеанса, такой как New-PSSession или Get-PSSession.
       Объекты сеанса также могут передаваться в Enter-PSSession.Отправьте только один сеанс PSSession с этим параметром. Если вы введете переменную, которая содержит больше
       чем один сеанс PSSession, команда не выполняется.
       Exit-PSSession или ключевое слово EXIT завершит интерактивный сеанс, но PSSession
       созданное вами остается открытым и доступным для использования.

   -SessionOption  PSSessionOption 
       Установите дополнительные параметры для сеанса. Введите созданный вами объект SessionOption
       используя New-PSSessionOption.Значения по умолчанию для параметров определяются значением $ PSSessionOption
       переменная предпочтения, если она установлена. В противном случае сеанс использует системные значения по умолчанию.
       Информацию о предпочтительной переменной $ PSSessionOption см. В разделе about_Preference_Variables.

   -UseSSL
       Используйте протокол Secure Sockets Layer (SSL) для установления соединения с удаленным компьютером.
       По умолчанию SSL не используется.
       WS-Management шифрует весь контент Windows PowerShell, передаваемый по сети.UseSSL - это дополнительная защита, которая отправляет данные через HTTPS-соединение вместо
       HTTP-соединение.
       Если вы используете этот параметр, но SSL недоступен для порта, используемого для команды, команда завершится неудачно. 

Стандартные псевдонимы для Enter-PSSession: etsn

Enter-PSSession запускает интерактивный сеанс с одним удаленным компьютером. Во время сеанса вводимые вами команды выполняются на удаленном компьютере, как если бы вы печатали непосредственно на удаленном компьютере.Вы можете иметь только один интерактивный сеанс за раз.

Используйте -ComputerName, чтобы указать имя удаленного компьютера или повторно подключиться к сеансу, предварительно настроенному с помощью New-PSSession.

Чтобы завершить интерактивный сеанс и отключиться от удаленного компьютера, используйте Exit-PSSession или введите «выход».

Примеры

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

 PS C:> Enter-PSSession 

Список процессов, запущенных на сервере 64, и создание файла журнала на удаленном сервере:

 PS C:> enter-pssession -computer Server64 
Server64 \ PS> get-process powershell> C: \ ps-test \ process.txt
Server01 \ PS> exit-pssession

Подключитесь к серверу svrDNS1 и загрузите модуль Active Directory, модуль не должен быть установлен на клиенте (запустите копию сервера):

 PS C:> PS C: \ powershell> Enter-PSSession "svrDNS1"
[serverDNS1]: PS C: \ Users \ simon \ Documents> Импорт-модуль ActiveDirectory
[serverDNS1]: PS C: \ Users \ simon \ Documents> Set-Location AD:
[serverDNS1]: PS AD: \> 

Подключение к пользователям $ logonserver:

 PS C:> PS C: \ powershell> Enter-PSSession ($ env: logonserver).заменить ("\\", "") 

«Настоящая проверка дружбы заключается в следующем: можете ли вы буквально ничего не делать с другим человеком? Можете ли вы наслаждаться теми моментами жизни, которые совершенно просты? » — Евгений Кеннеди

Связанные командлеты PowerShell:

Exit-PSSession — завершить интерактивный сеанс с удаленным компьютером.
New-PSSession — создать постоянное соединение с локальным или удаленным компьютером.
Invoke-Command — запуск одной команды на локальном или удаленном компьютере.


Copyright © 1999-2020 SS64.com
Некоторые права защищены ,
Невозможно войти / создать сеанс PSSession из linux на машину с Windows. · Проблема № 6647. · PowerShell / PowerShell · GitHub
. перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • Мобильный
    • Отзывы клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Исследуйте GitHub →
    учиться и внести свой вклад
    • Темы
    • Коллекции
    • Тенденции
    • Learning Lab
    • Руководства с открытым исходным кодом
    Общайтесь с другими
.

powershell — enter-pssession invoke-command, когда использовать?

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
  6. реклама Связаться с разработчиками по всему миру

Загрузка…

,

PowerShell — введите сессию PSSession для Windows

Переполнение стека
  1. Товары
  2. Клиенты
  3. Случаи использования
  1. Переполнение стека Публичные вопросы и ответы
  2. Команды Частные вопросы и ответы для вашей команды
  3. предприятие Частные вопросы и ответы для вашего предприятия
  4. работы Программирование и связанные с ним технические возможности карьерного роста
  5. Талант Нанимать технический талант
.

Отправить ответ

avatar
  Подписаться  
Уведомление о