Disconnect-PSSession
Отключается от сеанса.
Синтаксис
Session (по умолчанию)
Disconnect-PSSession
[-Session] <PSSession[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Name
Disconnect-PSSession
-Name <String[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceId
Disconnect-PSSession
-InstanceId <Guid[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <Int32>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Id
Disconnect-PSSession
[-Id] <Int32[]>
[-IdleTimeoutSec <Int32>]
[-OutputBufferingMode <OutputBufferingMode>]
[-ThrottleLimit <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. Отключение сеанса по имени
Эта команда отключает UpdateSessionPSSession на компьютере Server01 с текущего сеанса. Команда использует параметр имени для идентификации PSSession.
PS> Disconnect-PSSession -Name UpdateSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 UpdateSession Server01 Disconnected Microsoft.PowerShell None
В выходных данных показано, что попытка отключения была успешной. Состояние сеанса Disconnected, а доступностиNone, что означает, что сеанс не занят и может быть повторно подключен.
Пример 2. Отключение сеанса с определенного компьютера
Эта команда отключает ITTaskPSSession на компьютере 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
Запрашивает подтверждение перед запуском cmdlet.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | cf |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Id
Отключается от сеансов с указанным идентификатором сеанса. Введите один или несколько идентификаторов (разделенных запятыми) или используйте оператор диапазона (..) для указания диапазона идентификаторов.
Чтобы получить идентификатор сеанса, используйте командлет Get-PSSession. Идентификатор экземпляра хранится в свойстве идентификатора сеанса.
Свойства параметра
| Тип: | Int32[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Id
| Position: | 1 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-IdleTimeoutSec
Изменяет значение времени ожидания простоя отключенного PSSession. Введите значение в секундах. Минимальное значение — 60 (1 минуту).
Время ожидания простоя определяет время ожидания отключения PSSession на удаленном компьютере. По истечении времени ожидания удаляется PSSession.
Отключенные PSSessions считаются неактивными с момента отключения, даже если команды выполняются в отключенном сеансе.
Значение по умолчанию для времени ожидания простоя сеанса задается значением свойства IdleTimeoutMs конфигурации сеанса. Значение по умолчанию — 7200000 миллисекундах (2 часа).
Значение этого параметра имеет приоритет над значением свойства IdleTimeout переменной предпочтения $PSSessionOption и значения времени ожидания простоя по умолчанию в конфигурации сеанса. Однако это значение не может превышать значение свойства MaxIdleTimeoutMs конфигурации сеанса. Значение по умолчанию MaxIdleTimeoutMs составляет 12 часов (43200000 миллисекундах).
Свойства параметра
| Тип: | Int32 |
| Default value: | 60 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-InstanceId
Отключается от сеансов с указанными идентификаторами экземпляров.
Идентификатор экземпляра — это GUID, который однозначно идентифицирует сеанс на локальном или удаленном компьютере. Идентификатор экземпляра является уникальным, даже в нескольких сеансах на нескольких компьютерах.
Чтобы получить идентификатор экземпляра сеанса, используйте командлет Get-PSSession. Идентификатор экземпляра хранится в свойстве InstanceId сеанса.
Свойства параметра
| Тип: | Guid[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
InstanceId
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-Name
Отключается от сеансов с указанными понятными именами. Подстановочные символы разрешены.
Чтобы получить понятное имя сеанса, используйте командлет Get-PSSession. Понятное имя хранится в свойстве Name сеанса.
Свойства параметра
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | True |
| DontShow: | False |
Наборы параметров
Name
| Position: | Named |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-OutputBufferingMode
Определяет способ управления выходными данными команд в отключенном сеансе при заполнении выходного буфера. Значение по умолчанию — Block.
Если команда в отключенном сеансе возвращает выходные данные и заполняет выходной буфер, значение этого параметра фактически определяет, продолжает ли команда выполняться во время отключения сеанса. Значение Block приостанавливает команду до повторного подключения сеанса. Значение Drop позволяет выполнить команду, хотя данные могут быть потеряны. При использовании значения Drop перенаправьте выходные данные команды на файл на диске.
Допустимые значения:
-
Block. Если выходной буфер заполнен, выполнение приостанавливается до очистки буфера. -
Drop: если выходной буфер заполнен, выполнение продолжается. При сохранении новых выходных данных старые выходные данные удаляются. -
None: режим буферизации выходных данных не указан. Значение свойства OutputBufferingMode конфигурации сеанса используется для отключенного сеанса.
Свойства параметра
| Тип: | OutputBufferingMode |
| Default value: | Block |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Session
Отключается от указанных PSSessions. Введите объекты psSession, например объекты, возвращаемые командлетом New-PSSession. Можно также передать объект PSSession в Disconnect-PSSession.
Командлет Get-PSSession может получить все PSSessions, которые завершаются на удаленном компьютере, включая PSSessions, которые отключены и PSSessions, подключенные к другим сеансам на других компьютерах.
Disconnect-PSSession отключает только PSSession, подключенных к текущему сеансу. Если передать другие PSSessions в Disconnect-PSSession, команда Disconnect-PSSession завершается ошибкой.
Свойства параметра
| Тип: | |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Session
| Position: | 1 |
| Обязательно: | True |
| Значение из конвейера: | True |
| Значение из конвейера по имени свойства: | True |
| Значение из оставшихся аргументов: | False |
-ThrottleLimit
Задает ограничение регулирования для команды Disconnect-PSSession.
Ограничение регулирования — это максимальное количество одновременных подключений, которые можно установить для выполнения этой команды. Если этот параметр опущен или введите значение 0, используется значение по умолчанию 32.
Ограничение регулирования применяется только к текущей команде, а не к сеансу или к компьютеру.
Свойства параметра
| Тип: | Int32 |
| Default value: | 32 |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-WhatIf
Показывает, что произойдет, если командлет будет запущен. Командлет не запускается.
Свойства параметра
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | wi |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
PSSession
Сеанс можно передать в этот командлет.
Выходные данные
PSSession
Этот командлет возвращает объект, представляющий сеанс, который он отключен.
Примечания
PowerShell включает следующие псевдонимы для Disconnect-PSSession:
- Виндоус:
dnsn
Этот командлет доступен только на платформах Windows.
Командлет
Disconnect-PSSessionработает только в том случае, если локальные и удаленные компьютеры работают под управлением PowerShell 3.0 или более поздней версии.Если вы используете командлет
Disconnect-PSSessionв отключенном сеансе, команда не влияет на сеанс и не создает ошибок.Отключенные сеансы цикла с интерактивными маркерами безопасности (созданные с помощью параметра EnableNetworkAccess) можно повторно подключить только с компьютера, на котором был создан сеанс. Это ограничение защищает компьютер от вредоносного доступа.
При отключении PSSession состояние сеанса
Disconnected, а доступность Нет.Значение свойства состояния является относительным для текущего сеанса. Таким образом, значение
Disconnectedозначает, что PSSession не подключен к текущему сеансу. Однако это не означает, что PSSession отключен от всех сеансов. Он может быть подключен к другому сеансу. Чтобы определить, можно ли подключиться или повторно подключиться к сеансу, используйте свойство доступности.Значение доступности
Noneуказывает, что можно подключиться к сеансу. ЗначениеBusyуказывает, что подключение к PSSession невозможно, так как оно подключено к другому сеансу.Дополнительные сведения о значениях свойства состояния
сеансов см. в перечисления RunspaceState. Дополнительные сведения о значениях свойства доступности
сеансов см. в перечисления RunspaceAvailability.
Связанные ссылки
- Connect-PSSession
- Enter-PSSession
- Выход из PSSession
- Get-PSSession
- Get-PSSessionConfiguration
- New-PSSession
- New-PSSessionOption
- New-PSTransportOption
- Receive-PSSession
- Register-PSSessionConfiguration (регистрация конфигурации PS-сессии)
- Удалить-PSSession
- о PSSessions
- о_Удаленности
- о_удалённых_отключённых_сессиях