关于会话配置

简短说明

介绍会话配置,用于确定可远程连接到计算机的用户以及他们可以运行的命令。

详细说明

会话配置(也称为“终结点”)是本地计算机上的一组设置,用于定义远程或本地用户连接到本地计算机上的 PowerShell 时创建的 PowerShell 会话的环境。

计算机的管理员可以使用会话配置来保护计算机并为连接到计算机的用户定义自定义环境。

管理员还可以使用会话配置来确定远程连接到计算机所需的权限。 默认情况下,只有管理员组的成员有权使用会话配置进行远程连接,但你可以更改默认设置,以允许所有用户或所选用户远程连接到计算机。

从 PowerShell 3.0 开始,可以使用会话配置文件来定义会话配置的元素。 此功能使无需编写代码即可轻松自定义会话,并发现会话配置的属性。 若要创建会话配置文件,请使用 New-PSSessionConfiguration cmdlet。 有关会话配置文件的详细信息,请参阅 about_Session_Configuration_Files

会话配置是用于管理的 Web 服务的一项功能, (基于 WS-Management) PowerShell 远程处理。 仅当使用 New-PSSession、Invoke-Command 或 Enter-PSSession cmdlet 连接到远程计算机时,才使用它们。

注意:若要管理会话配置,请使用“以管理员身份运行”选项启动 PowerShell。

关于会话配置

每个 PowerShell 会话都使用会话配置。 这包括使用 New-PSSession 或 Enter-PSSession cmdlet 创建的持久会话,以及 PowerShell 在使用基于 WS-Management 的远程处理技术的 cmdlet 的 ComputerName 参数(例如 Invoke-Command)时创建的临时会话。

管理员可以使用会话配置来保护计算机的资源,并为连接到计算机的用户创建自定义环境。 例如,可以使用会话配置来限制计算机在会话中接收的对象的大小、定义会话的语言模式,以及指定会话中可用的 cmdlet、提供程序和函数。

通过配置会话配置的安全描述符,可以确定谁可以使用会话配置连接到计算机。 用户必须对会话配置具有“执行”权限才能在会话中使用它。 如果用户没有在计算机上使用任何会话配置所需的权限,则用户无法远程连接到计算机。

默认情况下,只有计算机的管理员有权使用默认会话配置。 但是,你可以更改安全描述符,以允许每个人、任何人或仅选定的用户使用计算机上的会话配置。

内置会话配置

PowerShell 3.0 包括名为 Microsoft.PowerShell 和 Microsoft.PowerShell.Workflow 的内置会话配置。 在运行 64 位 Windows 版本的计算机上,PowerShell 还提供 Microsoft.PowerShell32(一种 32 位会话配置)。

默认情况下,Microsoft.PowerShell 会话配置用于会话,即当用于创建会话的命令不包含 New-PSSession、Enter-PSSession 或 Invoke-Command cmdlet 的 ConfigurationName 参数时。

默认会话配置的安全描述符仅允许本地计算机上的管理员组成员使用它们。 因此,除非更改默认设置,否则只有管理员组的成员才能远程连接到计算机。

可以使用 $PSSessionConfigurationName 首选项变量更改默认会话配置。 有关详细信息,请参阅 about_Preference_Variables。

在本地计算机上查看会话配置

若要获取本地计算机上的会话配置,请使用 Get-PSSessionConfiguration cmdlet。

例如,键入:

PS C:> Get-PSSessionConfiguration | Format-List -Property Name, Permission

Name       : microsoft.powershell
Permission : BUILTIN\Administrators AccessAllowed

Name       : microsoft.powershell.workflow
Permission : BUILTIN\Administrators AccessAllowed

Name       : microsoft.powershell32
Permission : BUILTIN\Administrators AccessAllowed

会话配置对象在 PowerShell 3.0 中展开,以显示使用会话配置文件配置的会话配置的属性。

例如,若要查看会话配置对象的所有属性,请键入:

PS C:> Get-PSSessionConfiguration | Format-List -Property *

还可以使用 PowerShell 中的 WSMan 提供程序查看会话配置。 WSMan 提供程序在会话中创建 WSMAN: 驱动器。

在 WSMAN: 驱动器中,会话配置位于插件节点中。 (所有会话配置都位于“插件”节点中,但插件节点中有一些项不是会话配置。)

例如,若要查看本地计算机上的会话配置,请键入:

PS C:> dir wsman:\localhost\plugin\microsoft*

WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin

Type       Keys                              Name
----       ----                              ----
Container  {Name=microsoft.powershell}       microsoft.powershell
Container  {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container  {Name=microsoft.powershell32}     microsoft.powershell32

查看远程计算机上的会话配置

若要查看远程计算机上的会话配置,请使用 Connect-WSMan cmdlet 将远程计算机的注释添加到本地计算机上的 WSMAN: 驱动器,然后使用 WSMAN: 驱动器查看会话配置。

例如,以下命令将 Server01 远程计算机的节点添加到本地计算机上的 WSMAN: 驱动器。

PS C:> Connect-WSMan server01.corp.fabrikam.com

命令完成后,可以导航到 Server01 计算机的节点以查看会话配置。

例如:

PS C:> cd wsman:

PS WSMan:> dir

ComputerName                                  Type
------------                                  ----
localhost                                     Container
server01.corp.fabrikam.com                    Container

PS WSMan:> dir server01\plugin\

WSManConfig: Microsoft.WSMan.Management\WSMan::server01.corp.fabrikam.com\Pl
ugin

Type       Keys                              Name
----       ----                              ----
Container  {Name=microsoft.powershell}       microsoft.powershell
Container  {Name=microsoft.powershell.wor... microsoft.powershell.workflow
Container  {Name=microsoft.powershell32}     microsoft.powershell32

更改会话配置的安全描述符

在 windows Server Windows Server 2012 及较新版本中,默认为远程用户启用内置会话配置。 在其他受支持的 Windows 版本中,必须更改会话配置的安全描述符以允许远程访问。

若要启用对计算机上的会话配置的远程访问,请使用 Enable-PSRemoting cmdlet。

此外,默认情况下,只有计算机上的管理员组成员对默认会话配置具有“执行”权限,但你可以更改默认会话配置和创建的任何会话配置的安全描述符。

若要授予其他用户远程连接到计算机的权限,请使用 Set-PSSessionConfiguration cmdlet 将这些用户的“执行”权限添加到 Microsoft.PowerShell 和 Microsoft.PowerShell32 会话配置的安全描述符中。

例如,以下命令将打开一个属性页,用于更改 Microsoft.PowerShell 默认会话配置的安全描述符。

Set-PSSessionConfiguration -name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

若要拒绝每个人对计算机上的所有会话配置的权限,请使用 Disable-PSSessionConfiguration cmdlet。 例如,以下命令禁用计算机上的默认会话配置。

PS C:> Disable-PSSessionConfiguration -Name Microsoft.PowerShell

若要阻止远程用户连接到计算机,但允许本地用户进行连接,请使用 Disable-PSRemoting cmdlet。 Disable-PSRemoting 向计算机上的所有会话配置添加“Network_Deny_All”条目。

PS C:> Disable-PSRemoting

若要允许远程用户使用计算机上的所有会话配置,请使用 Enable-PSRemoting 或 Enable-PSSessionConfiguration cmdlet。 例如,以下命令允许远程访问内置会话配置。

PS C:> Enable-PSSessionConfiguration -name Microsoft.Power*

若要对会话配置的安全描述符进行其他更改,请使用 Set-PSSessionConfiguration cmdlet。 使用 SecurityDescriptorSDDL 参数提交 SDDL 字符串值。 使用 ShowSecurityDescriptorUI 参数可显示有助于创建新的 SDDL 的用户界面属性表。

例如:

Set-PSSessionConfiguration -Name Microsoft.PowerShell `
  -ShowSecurityDescriptorUI

创建新的会话配置

若要在本地计算机上创建新的会话配置,请使用 Register-PSSessionConfiguration cmdlet。 若要定义新的会话配置,可以使用 C# 程序集、PowerShell 脚本和 Register-PSSessionConfiguration cmdlet 的参数。

例如,以下命令创建的会话配置与 Microsoft.PowerShell 会话配置相同,只不过它将从远程命令接收的数据限制为 20 MB (MB) 。 (默认值为 50 MB) 。

Register-PSSessionConfiguration -Name NewConfig `
  -MaximumReceivedDataSizePerCommandMB 20

创建会话配置时,可以使用其他会话配置 cmdlet 对其进行管理,它将显示在 WSMAN: 驱动器中。

有关详细信息,请参阅 Register-PSSessionConfiguration。

删除会话配置

若要从本地计算机中删除会话配置,请使用 Unregister-PSSessionConfiguration cmdlet。 例如,以下命令从计算机中删除 NewConfig 会话配置。

PS C:> Unregister-PSSessionConfiguration -Name NewConfig

有关详细信息,请参阅 Unregister-PSSessionConfiguration。

还原会话配置

若要还原意外 (注销) 删除的默认会话配置,请使用 Enable-PSRemoting cmdlet。

Enable-PSRemoting cmdlet 将重新创建计算机上不存在的所有默认会话配置。 它不会覆盖或更改现有会话配置的属性值。

若要还原默认会话配置的原始属性值,请使用 Unregister-PSSessionConfiguration 删除会话配置,然后使用 Enable-PSRemoting cmdlet 重新创建它。

选择会话配置

若要为会话选择特定的会话配置,请使用 New-PSSession、Enter-PSSession 或 Invoke-Command 的 ConfigurationName 参数。

例如,此命令使用 New-PSSession cmdlet 在 Server01 计算机上启动 PSSession。 命令使用 ConfigurationName 参数选择 Server01 计算机上的 WithProfile 配置。

PS C:> New-PSSession -ComputerName Server01 -ConfigurationName WithProfile

仅当当前用户有权使用 WithProfile 会话配置或可以提供具有所需权限的用户的凭据时,此命令才会成功。

还可以使用 $PSSessionConfigurationName 首选项变量更改计算机上的默认会话配置。 有关$PSSessionConfigurationName首选项变量的详细信息,请参阅 about_Preference_Variables。

关键 字

about_Endpoints about_SessionConfigurations

另请参阅

about_Preference_Variables

about_PSSessions

about_Remote

about_Session_Configuration_Files

New-PSSession

Disable-PSSessionConfiguration

Enable-PSSessionConfiguration

Get-PSSessionConfiguration

New-PSSessionConfigurationFile

Register-PSSessionConfiguration

Set-PSSessionConfiguration

Test-PSSessionConfigurationFile

Unregister-PSSessionConfiguration