Disconnect-PSSession
Отключает от сеанса.
Синтаксис
Disconnect-PSSession
[-Session] <PSSession[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-Name <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
-InstanceId <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Disconnect-PSSession
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Этот командлет доступен только на платформе Windows.
Командлет Disconnect-PSSession
отключает сеанс PowerShell (PSSession), например один, запущенный с помощью командлета New-PSSession
, от текущего сеанса. В результате PSSession находится в отключенном состоянии. Вы можете подключиться к отключенной psSession из текущего сеанса или из другого сеанса на локальном компьютере или другом компьютере.
Командлет Disconnect-PSSession
отключает только открытые сеансы PSSessions , подключенные к текущему сеансу. Disconnect-PSSession
не может отключить неисправные или закрытые psSessions или интерактивные операции PSSessions, запущенные с помощью командлетаEnter-PSSession
, и он не может отключить psSessions, подключенные к другим сеансам.
Чтобы повторно подключиться к отключенной PSSession, используйте Connect-PSSession
командлеты или Receive-PSSession
командлеты.
При отключении PSSession команды в PSSession продолжают выполняться до тех пор, пока они не завершаются, если не истекает время ожидания PSSession или команды в PSSession блокируются полным выходным буфером. Чтобы изменить время ожидания простоя, используйте параметр IdleTimeoutSec . Чтобы изменить режим буферизации выходных данных, используйте параметр OutputBufferingMode , можно также использовать параметр InDisconnectedSession командлета Invoke-Command
для выполнения команды в отключенном сеансе.
Дополнительные сведения о функции отключенных сеансов см. в about_Remote_Disconnected_Sessions.
Этот командлет впервые появился в Windows PowerShell 3.0.
Примеры
Пример 1. Отключение сеанса по имени
Эта команда отключает UpdateSession
PSSession на компьютере Server01 от текущего сеанса. Команда использует параметр Name для идентификации PSSession.
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
Выходные данные показывают, что попытка отключения оказалась успешной. Состояние сеанса и Disconnected
доступностьNone
, указывающая, что сеанс не занят и может быть повторно подключен.
Пример 2. Отключение сеанса с определенного компьютера
Эта команда отключает ITTask
PSSession на компьютере Server12 от текущего сеанса. Сеанс ITTask
был создан в текущем сеансе и подключается к компьютеру Server12. Команда использует Get-PSSession
командлет для получения сеанса и командлета Disconnect-PSSession
, чтобы отключить его.
PS> Get-PSSession -ComputerName Server12 -Name ITTask |
Disconnect-PSSession -OutputBufferingMode Drop -IdleTimeoutSec 86400
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Server12 Disconnected ITTasks None
Команда Disconnect-PSSession
использует параметр OutputBufferingMode для задания выходного режима Drop
. Это гарантирует, что выполнения скрипта, запущенного в данном сеансе, будет продолжено, даже если выходной буфер сеанса заполнен. Поскольку скрипт записывает выходные данные в отчет, находящийся в общей папке, другие выходные данные могут быть потеряны без последствий.
Команда также использует параметр IdleTimeoutSec для расширения времени ожидания простоя сеанса до 24 часов. Это позволит данному или другим администраторам восстановить подключение к сеансу, убедиться, что скрипт был выполнен, и устранить неполадки, если потребуется.
Пример 3. Использование нескольких PSSessions на нескольких компьютерах
В этой серии команд показано, как Disconnect-PSSession
командлет может использоваться в корпоративном сценарии. В данном случае новый специалист запускает скрипт в сеансе на удаленном компьютере и сталкивается с проблемой. Специалист отключается от сеанса, чтобы более опытный менеджер смогу подключиться к сеансу и устранить проблему.
PS> $s = New-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
PS> Invoke-Command $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Get-PSSession -Name ITTask -ComputerName Srv1 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> Get-PSSession -ComputerName Srv1, Srv2, Srv30 -Name ITTask
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
2 ITTask Srv2 Opened Microsoft.PowerShell Available
3 ITTask Srv30 Opened Microsoft.PowerShell Available
PS> Get-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 ITTask Srv1 Disconnected Microsoft.PowerShell None
PS> $s = Connect-PSSession -ComputerName Srv1 -Name ITTask -Credential Domain01\User01
PS> Invoke-Command -Session $s {dir $HOME\Scripts\PatchStatusOutput.ps1}
PS> Invoke-Command -Session $s {mkdir $HOME\Scripts\PatchStatusOutput}
PS> Invoke-Command -Session $s -FilePath \\Server01\Scripts\Get-PatchStatus.ps1
PS> Disconnect-PSSession -Session $s
Специалист начинается с создания сеансов на нескольких удаленных компьютерах и выполнения скрипта в каждом сеансе. Первая команда использует New-PSSession
командлет для создания сеанса ITTask
на трех удаленных компьютерах. Команда сохраняет сеансы в переменной $s
. Вторая команда использует параметр FilePath командлета Invoke-Command
для запуска скрипта в сеансах переменной $s
.
Скрипт, запущенный на компьютере Srv1, создает непредвиденные ошибки. Технический специалист обращается к своему менеджеру и просит помощи. Менеджер направляет технику отключиться от сеанса, чтобы он смог исследовать. Вторая команда использует Get-PSSession
командлет для получения ITTask
сеанса на компьютере Srv1 и командлета Disconnect-PSSession
, чтобы отключить его. Эта команда не влияет на ITTask
сеансы на других компьютерах.
Третья команда использует Get-PSSession
командлет для получения ITTask
сеансов. В выходных данных показано, что ITTask
сеансы на компьютерах Srv2 и Srv30 не пострадали от команды для отключения.
Менеджер входит на свой домашний компьютер, подключается к своей корпоративной сети, запускает PowerShell и использует Get-PSSession
командлет для получения ITTask
сеанса на компьютере Srv1. Он использует учетные данные технического специалиста для доступа к сеансу.
Затем менеджер использует Connect-PSSession
командлет для подключения к ITTask
сеансу на компьютере Srv1. Сеанс сохраняется в переменную $s
.
Диспетчер использует Invoke-Command
командлет для выполнения некоторых диагностических команд в сеансе в переменной $s
. Он признает, что сценарий завершился сбоем, так как он не обнаружил требуемый каталог.
Менеджер использует MkDir
функцию для создания каталога, а затем перезапускает Get-PatchStatus.ps1
скрипт и отключается от сеанса. Менеджер сообщает о своих выводах техническому специалисту, предполагает, что он повторно подключитесь к сеансу, чтобы завершить задачи, и просит его добавить команду в Get-PatchStatus.ps1
сценарий, который создает необходимый каталог, если он не существует.
Пример 4. Изменение значения времени ожидания для PSSession
В этом примере показано, как исправить значение свойства IdleTimeout сеанса, чтобы его можно было отключить.
Свойство времени ожидания простоя имеет важное значение для отключенных сеансов, поскольку определяет, как долго отключенный сеанс будет храниться до удаления. Время ожидания простоя можно настроить при создании сеанса, а также при отключении. Значения по умолчанию для времени ожидания простоя сеанса задаются в $PSSessionOption
переменной предпочтения на локальном компьютере и в конфигурации сеанса на удаленном компьютере. Значения, заданные для сеанса, имеют приоритет над значениями, заданными в конфигурации сеанса, но значения сеанса не могут превышать квоты, заданные в конфигурации сеанса, например значение MaxIdleTimeoutMs .
PS> $Timeout = New-PSSessionOption -IdleTimeout 172800000
PS> $s = New-PSSession -Computer Server01 -Name ITTask -SessionOption $Timeout
PS> Disconnect-PSSession -Session $s
Disconnect-PSSession : The session ITTask cannot be disconnected because the specified
idle timeout value 172800(seconds) is either greater than the server maximum allowed
43200 (seconds) or less that the minimum allowed60(seconds). Choose an idle time out
value that is within the allowed range and try again.
PS> Invoke-Command -ComputerName Server01 {Get-PSSessionConfiguration Microsoft.PowerShell} |
Format-List -Property *
Architecture : 64
Filename : %windir%\system32\pwrshplugin.dll
ResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
MaxConcurrentCommandsPerShell : 1000
UseSharedProcess : false
ProcessIdleTimeoutSec : 0
xmlns : http://schemas.microsoft.com/wbem/wsman/1/config/PluginConfiguration
MaxConcurrentUsers : 5
lang : en-US
SupportsOptions : true
ExactMatch : true
RunAsUser :
IdleTimeoutms : 7200000
PSVersion : 3.0
OutputBufferingMode : Block
AutoRestart : false
SecurityDescriptorSddl : O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)
MaxMemoryPerShellMB : 1024
MaxIdleTimeoutms : 2147483647
Uri : http://schemas.microsoft.com/powershell/microsoft.powershell
SDKVersion : 2
Name : microsoft.powershell
XmlRenderingType : text
Capability : {Shell}
RunAsPassword :
MaxProcessesPerShell : 15
ParentResourceUri : http://schemas.microsoft.com/powershell/microsoft.powershell
Enabled : true
MaxShells : 25
MaxShellsPerUser : 25
Permission : BUILTIN\Administrators AccessAllowed
PSComputerName : localhost
RunspaceId : aea84310-6dbf-4c21-90ac-13980039925a
PSShowComputerName : True
PS> $s.Runspace.ConnectionInfo
ConnectionUri : http://Server01/wsman
ComputerName : Server01
Scheme : http
Port : 80
AppName : /wsman
Credential :
ShellUri : http://schemas.microsoft.com/powershell/Microsoft.PowerShell
AuthenticationMechanism : Default
CertificateThumbprint :
MaximumConnectionRedirectionCount : 5
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
UseCompression : True
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
NoEncryption : False
UseUTF16 : False
OutputBufferingMode : Drop
IncludePortInSPN : False
Culture : en-US
UICulture : en-US
OpenTimeout : 180000
CancelTimeout : 60000
OperationTimeout : 180000
IdleTimeout : 172800000
PS> Disconnect-PSSession $s -IdleTimeoutSec 43200
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 ITTask Server01 Disconnected Microsoft.PowerShell None
PS> $s.Runspace.ConnectionInfo.IdleTimeout
43200000
Первая команда использует New-PSSessionOption
командлет для создания объекта параметра сеанса. Он использует параметр IdleTimeout для задания времени ожидания простоя в 48 часов (172800000
миллисекундах). Команда сохраняет объект параметра сеанса в переменной $Timeout
.
Вторая команда использует New-PSSession
командлет для создания сеанса ITTask
на компьютере Server01. Команда сохраните сеанс в переменной $s
. Значение параметра SessionOption — это 48-часовое время ожидания простоя в переменной $Timeout
.
Третья команда отключает ITTask
сеанс в переменной $s
. Команда завершается ошибкой, так как значение времени ожидания простоя сеанса превышает квоту MaxIdleTimeoutMs в конфигурации сеанса. Так как время ожидания простоя не используется, пока сеанс не отключен, это нарушение может оставаться незамеченным во время использования сеанса.
Четвертая команда использует Invoke-Command
командлет для выполнения Get-PSSessionConfiguration
команды конфигурации сеанса Microsoft.PowerShell
на компьютере Server01. Команда использует Format-List
командлет для отображения всех свойств конфигурации сеанса в списке. В выходных данных показано, что свойство MaxIdleTimeoutMS , которое устанавливает максимально допустимое значение IdleTimeout для сеансов, использующих конфигурацию сеанса, составляет 43200000
миллисекунда (12 часов).
Пятая команда получает значения параметра сеанса сеанса в переменной $s
. Значения многих параметров сеанса являются свойствами свойства ConnectionInfo свойства Runspace сеанса. Выходные данные показывают, что значение свойства IdleTimeout сеанса равно 172800000
миллисекундам (48 часов), которое нарушает квоту MaxIdleTimeoutMs в конфигурации сеанса в 12 часов. Чтобы устранить этот конфликт, можно использовать параметр ConfigurationName для выбора другой конфигурации сеанса или использования параметра IdleTimeout для уменьшения времени ожидания простоя сеанса.
Шестая команда отключает сеанс. В нем используется параметр IdleTimeoutSec , чтобы задать время ожидания простоя максимальное значение 12-часового значения.
Седьмая команда получает значение свойства IdleTimeout отключенного сеанса, которое измеряется в миллисекундах. Выходные данные подтверждают успешное выполнение команды.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Id
Отключается от сеансов с указанным идентификатором сеанса. Введите один или несколько идентификаторов (разделенных запятыми) или используйте оператор диапазона (..
) для указания диапазона идентификаторов.
Чтобы получить идентификатор сеанса, используйте Get-PSSession
командлет. Идентификатор экземпляра хранится в свойстве идентификатора сеанса.
Тип: | Int32[] |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-IdleTimeoutSec
Изменяет значение времени ожидания простоя отключенной PSSession. Введите значение в секундах. Минимальное значение равно 60
(1 минуте).
Время ожидания простоя определяет время ожидания отключения PSSession на удаленном компьютере. По истечении времени ожидания удаляется psSession .
Отключенные psSessions считаются неактивными с момента отключения, даже если команды выполняются в отключенном сеансе.
Значение по умолчанию для времени ожидания простоя сеанса задается значением свойства IdleTimeoutMs конфигурации сеанса. Значение по умолчанию — 7200000
миллисекунда (2 часа).
Значение этого параметра имеет приоритет над значением свойства IdleTimeout переменной $PSSessionOption
предпочтения и значением времени ожидания простоя по умолчанию в конфигурации сеанса. Однако это значение не может превышать значение свойства MaxIdleTimeoutMs конфигурации сеанса. Значение по умолчанию maxIdleTimeoutMs равно 12 часам (43200000
миллисекундам).
Тип: | Int32 |
Position: | Named |
Default value: | 60 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-InstanceId
Отключается от сеансов с указанными идентификаторами экземпляров.
Идентификатор экземпляра — это GUID, однозначно определяющий сеанс на локальном или удаленном компьютере. Идентификатор экземпляра уникален даже для нескольких сеансов на различных компьютерах.
Чтобы получить идентификатор экземпляра сеанса, используйте Get-PSSession
командлет. Идентификатор экземпляра хранится в свойстве InstanceID сеанса.
Тип: | Guid[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-Name
Отключается от сеансов с указанными понятными именами. Разрешено использовать подстановочные знаки.
Чтобы получить понятное имя сеанса, используйте Get-PSSession
командлет. Понятное имя хранится в свойстве Name сеанса.
Тип: | String[] |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-OutputBufferingMode
Определяет порядок управления выходным потоком команды в отключенном сеансе при заполнении . Значение по умолчанию — Block
.
Если команда в отключенном сеансе возвращает данные и заполняет выходной буфер, значение этого параметра определяет, продолжится ли выполнение этой команды в отключенном сеансе. Значение Block
приостанавливает команду до повторного подключения сеанса. Значение Drop
позволяет выполнить команду, хотя данные могут быть потеряны. При использовании значения перенаправьте выходные Drop
данные команды на файл на диске.
Допустимые значения:
Block
: при заполнении выходного буфера выполнение приостанавливается до очистки буфера.Drop
: при заполнении выходного буфера выполнение продолжается. Новые выходные данные сохраняются вместо наиболее старых.None
: режим буферизации выходных данных не указан. Значение свойства OutputBufferingMode конфигурации сеанса используется для отключенного сеанса.
Тип: | OutputBufferingMode |
Position: | Named |
Default value: | Block |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Session
Отключается от указанных PSSessions. Введите объекты PSSession , например возвращаемые командлетом New-PSSession
. Вы также можете передать объект Disconnect-PSSession
PSSession в .
Командлет Get-PSSession
может получить все psSessions, которые завершаются на удаленном компьютере, включая PSSessions, которые отключены и PSSessions, подключенные к другим сеансам на других компьютерах. Disconnect-PSSession
отключает только PSSession , подключенные к текущему сеансу. Если выполнить передачу других psSessions в, команда завершается Disconnect-PSSession
ошибкой Disconnect-PSSession
.
Тип: | PSSession[] |
Position: | 1 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-ThrottleLimit
Задает ограничение регулирования для Disconnect-PSSession
команды.
Предел регулирования — это максимальное количество одновременных подключений, которые могут быть установлены для выполнения этой команды. Если этот параметр опущен или введите значение 0
по умолчанию, 32
используется.
Предел регулирования применяется только к текущему командлету, а не к сеансу или компьютеру.
Тип: | Int32 |
Position: | Named |
Default value: | 32 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Сеанс можно передать в этот командлет.
Выходные данные
Этот командлет возвращает объект, представляющий сеанс, который он отключен.
Примечания
PowerShell включает следующие псевдонимы для Disconnect-PSSession
:
- Windows:
dnsn
Этот командлет доступен только на платформах Windows.
Командлет
Disconnect-PSSession
работает только в том случае, если локальные и удаленные компьютеры работают под управлением PowerShell 3.0 или более поздней версии.Если вы используете
Disconnect-PSSession
командлет в отключенном сеансе, команда не влияет на сеанс и не создает ошибок.Отключенные сеансы обратного цикла с интерактивными маркерами безопасности (созданные с параметром EnableNetworkAccess ) можно повторно подключить только с компьютера, на котором был создан сеанс. Это ограничение защищает компьютер от вредоносного доступа.
При отключении PSSession состояние сеанса —
Disconnected
нет.Значение свойства State относительно текущего сеанса. Поэтому значение
Disconnected
означает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключен от всех сеансов. Он может быть подключен к другому сеансу. Чтобы определить, можно ли подключить или повторно подключиться к сеансу , используйте свойство Availability .Значение
None
доступности указывает, что можно подключиться к сеансу. ЗначениеBusy
указывает, что подключение к PSSession невозможно, так как оно подключено к другому сеансу.Дополнительные сведения о значениях свойства State сеансов см. в разделе "Перечисление RunspaceState".
Дополнительные сведения о значениях свойства доступности сеансов см. в разделе "Перечисление RunspaceAvailability".
Связанные ссылки
PowerShell