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

Синтаксис

New-PSSession [[-ComputerName] <string[]>] [-ApplicationName <string>] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-Port <int>] [-SessionOption <PSSessionOption>] [-UseSSL] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [[-Session] <PSSession[]>] [-Name <string[]>] [-ThrottleLimit <int>] [<CommonParameters>]

New-PSSession [-ConnectionURI] <Uri[]> [-AllowRedirection] [-Authentication {<Default> | <Basic> | <Negotiate> | <NegotiateWithImplicitCredential> | <Credssp> | <Digest> | <Kerberos>}] [-CertificateThumbprint <string>] [-ConfigurationName <string>] [-Credential <PSCredential>] [-Name <string[]>] [-SessionOption <PSSessionOption>] [-ThrottleLimit <int>] [<CommonParameters>]

Описание

Командлет New-PSSession создает сеанс Windows PowerShell (PSSession) на локальном или удаленном компьютере. При создании сеанса PSSession Windows PowerShell создает постоянное подключение к удаленному компьютеру.

Используйте сеанс PSSession для выполнения нескольких команд, работающих с общими данными, например функцией или значением переменной. Для выполнения команд в сеансе PSSession используйте командлет Invoke-Command. Чтобы использовать сеанс PSSession для интерактивного взаимодействия с удаленным компьютером, используйте командлет Enter-PSSession. Дополнительные сведения см. в разделе about_PSSessions.

Параметр ComputerName командлета Enter-PSSession или командлета Invoke-Command позволяет выполнять команды на удаленном компьютере без создания сеанса PSSession. При использовании параметра ComputerName Windows PowerShell создает временное подключение, которое используется для интерактивного сеанса или выполнения заданной команды и затем закрывается.

Параметры

-AllowRedirection

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

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

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

Значение по умолчанию равно 5. Дополнительные сведения см. в описании параметра SessionOption, а также в разделе New-PSSessionOption.

Обязательно?

false

Позиция?

named

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

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

false

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

false

-ApplicationName <string>

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

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

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

Обязательно?

false

Позиция?

named

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

WSMAN

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

true (ByPropertyName)

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

false

-Authentication <AuthenticationMechanism>

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

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

Дополнительные сведения о значениях этого параметра см. в описании перечисления System.Management.Automation.Runspaces.AuthenticationMechanism в библиотеке MSDN по адресу https://go.microsoft.com/fwlink/?LinkID=144382 (на английском языке).

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

Обязательно?

false

Позиция?

named

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

Default

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

false

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

false

-CertificateThumbprint <string>

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

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

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

Обязательно?

false

Позиция?

named

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

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

false

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

false

-ComputerName <string[]>

Создает постоянное подключение (сеанс PSSession) к заданному компьютеру. Если введены несколько имен компьютеров, командлет New-PSSession создает несколько сеансов PSSession, по одному для каждого из компьютеров. По умолчанию используется значение "Локальный компьютер".

Введите имя NetBIOS, IP-адрес или полное доменное имя одного или нескольких удаленных компьютеров. Чтобы указать локальный компьютер, введите имя компьютера, "localhost" или точку (.). Если пользователь и удаленный компьютер находятся в разных доменах, необходимо использовать полное доменное имя. Кроме того, можно передать имя компьютера (в кавычках) командлету New-PSSession по конвейеру.

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

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

Обязательно?

false

Позиция?

1

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

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

true (ByValue, ByPropertyName)

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

false

-ConfigurationName <string>

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

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

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

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

Обязательно?

false

Позиция?

named

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

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

true (ByPropertyName)

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

false

-ConnectionURI <Uri[]>

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

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

<Транспорт>://<Имя_компьютера>:<Порт>/<Имя_приложения>

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

http://localhost:80/WSMAN

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

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

Обязательно?

true

Позиция?

1

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

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

true (ByPropertyName)

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

false

-Credential <PSCredential>

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

Введите имя пользователя, например "User01", "Domain01\User01" или "User@Domain.com", или введите объект PSCredential, например объект, возвращаемый командлетом Get-Credential.

При вводе имени пользователя появится приглашение ввести пароль.

Обязательно?

false

Позиция?

named

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

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

true (ByPropertyName)

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

false

-Name <string[]>

Задает понятное имя сеанса PSSession.

Это имя можно использовать для идентификации сеанса PSSession при использовании других командлетов, например Get-PSSession или Enter-PSSession. Имя не должно быть уникальным в рамках компьютера или текущего сеанса.

Обязательно?

false

Позиция?

named

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

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

false

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

false

-Port <int>

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

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

1. winrm delete winrm/config/listener?Address=*+Transport=HTTP

2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port=&quot;&lt;номер-порта&gt;&quot;}

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

Обязательно?

false

Позиция?

named

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

80

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

false

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

false

-Session <PSSession[]>

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

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

Для результирующих сеансов PSSession устанавливаются те же имена компьютеров, имена приложений, URI подключений, порты, имена конфигураций, ограничения скорости и значения параметра SSL, что и для исходных, но у результирующих сеансов другие отображаемые имена, идентификаторы и идентификаторы экземпляров (GUID).

Обязательно?

false

Позиция?

1

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

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

true (ByValue, ByPropertyName)

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

false

-SessionOption <PSSessionOption>

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

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

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

Обязательно?

false

Позиция?

named

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

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

false

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

false

-ThrottleLimit <int>

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

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

Обязательно?

false

Позиция?

named

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

32

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

false

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

false

-UseSSL

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

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

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

Обязательно?

false

Позиция?

named

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

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

false

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

false

<CommonParameters>

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

Ввод и вывод

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

Входные данные

System.String, System.URI, System.Management.Automation.Runspaces.PSSession

Можно передать объект ComputerName (строку), ConnectionURI (URI) или Session (PSSession) командлету New-PSSession по конвейеру.

Выходные данные

System.Management.Automation.Runspaces.PSSession

Примечания

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

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

По окончании работы с сеансом PSSession используйте командлет Remove-PSSession для удаления сеанса PSSession и освобождения занятых им ресурсов.

Пример 1

C:\PS>$s = new-pssession

Описание
-----------
Эта команда создает новый сеанс PSSession на локальном компьютере и сохраняет объект PSSession в переменной $s.

Теперь этот сеанс PSSession можно использовать для выполнения команд на локальном компьютере.






Пример 2

C:\PS>$Server01 = new-pssession -ComputerName Server01

Описание
-----------
Эта команда создает новый сеанс PSSession на компьютере Server01 и сохраняет его в переменной $Server01. 

При создании нескольких сеансов PSSession присваивайте их переменным с понятными именами. Это упростит управление сеансами PSSession в последующих командах.






Пример 3

C:\PS>$s1, $s2, $s3 = new-session -computername server1,server2,server3

Описание
-----------
Эта команда создает три новых сеанса PSSession, по одному на каждом из компьютеров, указанных параметром ComputerName. 

Команда использует оператор присваивания (=) для присвоения новых сеансов PSSession массиву переменных $s1, $s2 и $s3. Она присваивается сеанс PSSession с компьютером Server01 переменной $s1, сеанс PSSession с компьютером Server02 — переменной $s2, и сеанс PSSession с компьютером Server03 — переменной $s3.

При присвоении нескольких объектов массиву переменных Windows PowerShell присваивает каждый объект соответствующей переменной в массиве. Если количество объектов превосходит количество переменных, все оставшиеся объекты присваиваются последней переменной. Если количество переменных превышает количество объектов, значения лишних переменные остаются неопределенными (NULL).






Пример 4

C:\PS>new-pssession -computername Server01 -port 8081 -useSSL -ConfigurationName E12

Описание
-----------
Эта команда создает новый сеанс PSSession на компьютере Server01, который подключается к порту сервера 8081 и использует протокол SSL. Для нового сеанса PSSession используется альтернативная конфигурация сеанса "Е12".

Перед назначением порта необходимо настроить прослушиватель WinRM на удаленном компьютере на прослушивание порта 8081. Дополнительные сведения см. в описании параметра Port.






Пример 5

C:\PS>new-pssession -session $s -credential domain01\user01

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

Эта команда использует параметр Session командлета New-PSSession для задания сеанса PSSession, сохраненного в переменной $s. Для выполнения команды используются учетные данные пользователя "Domain1\Admin01".






Пример 6

C:\PS>$global:s = new-pssession -computername server1.domain44.corpnet.fabrikam.com -credential domain01\admin01

Описание
-----------
В этом примере показано, как создать сеанс PSSession в глобальной области на компьютере, принадлежащем к другому домену.

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

Чтобы создать сеанс PSSession в глобальной области, создайте новый сеанс PSSession и затем сохраните PSSession в переменной, которая отображается в глобальную область. В этом примере переменная $s отображается в глобальную область.

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






Пример 7

C:\PS>$rs = get-content c:\test\servers.txt | new-PSsession -throttleLimit 50

Описание
-----------
Эта команда создает сеанс PSSession на каждом из 200 компьютеров, указанных в файле Servers.txt, и сохраняет результирующий сеанс PSSession в переменной $rs. Для сеансов PSSession указано ограничение скорости, равное 50.

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






Пример 8

C:\PS>$s = new-PSSession -URI http://Server01:91/NewSession -credential domain01\user01

Описание
-----------
Эта команда создает сеанс PSSession на компьютере Server01 и сохраняет его в переменной $s. В ней используются параметр URI для указания транспортного протокола, удаленного компьютера, порта и альтернативной конфигурации сеанса. Кроме того, в ней используется параметр Credential для указания учетной записи пользователя, который располагает разрешением для создания сеанса на удаленном компьютере.






Пример 9

C:\PS>$s = new-PSSession -computername (import-csv servers.csv) -credential domain01\admin01 -throttlelimit 16

C:\PS> invoke-command -session $s -scriptblock {get-process powershell} -AsJob

Описание
-----------
Эти команды создают группу сеансов PSSession и запускают фоновое задание в рамках каждого сеанса PSSession. 

Первая команда создает сеанс PSSession на каждом из компьютеров, указанных в файле Servers.csv. Она создает сеансы PSSession с помощью командлета New-PSSession. В качестве значения параметра ComputerName используется команда, которая импортирует файл Servers.csv и считывает его содержимое с помощью командлета Import-Csv. 

Эта команда использует параметр Credential для создания сеансов PSSession в соответствии с разрешением администратора домена и параметр ThrottleLimit для ограничения команды до 16 одновременных подключений. Команда сохраняет сеансы PSSession в переменной $s.
   
Вторая команда использует параметр AsJob командлета Invoke-Command для запуска фонового задания, которое выполняет команду "Get-Process PowerShell" в каждом из сеансов, сохраненных в переменной $s. 

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






Пример 10

C:\PS>new-PSSession -ConnectionURI https://management.exchangelabs.com/Management

Описание
-----------
Эта команда создает новый сеанс PSSession, который подключается к компьютеру, заданному с помощью URI, а не имени компьютера.






Пример 11

C:\PS>$so = New-WSManSessionOption -SkipCACheck

PS C:\> new-pssession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -credential server01\admin01

Описание
-----------
В этом примере демонстрируется создание и использование параметра SessionOption. 

Первая команда создает параметр сеанса с помощью командлета New-WSManSessionOption. Результирующий объект SessionOption сохраняется в параметре $so.

Вторая команда использует параметр в рамках нового сеанса. Команда создает новый сеанс с помощью командлета New-PSSession. Значением параметра SessionOption является объект SessionOption, сохраненный в переменной $so.






См. также




Содержание