about_Session_Configurations
简短说明
介绍会话配置,用于确定可远程连接到计算机的用户以及他们可以运行的命令。
长说明
会话配置(也称为“终结点”)是本地计算机上的一组设置,用于定义在远程用户或本地用户连接到本地计算机上的 PowerShell 时创建的 PowerShell 会话的环境。
计算机管理员可以使用会话配置来保护计算机,并为连接到计算机的用户定义自定义环境。
管理员还可以使用会话配置来确定远程连接到计算机所需的权限。 默认情况下,只有管理员组的成员有权使用会话配置远程连接,但你可以更改默认设置以允许所有用户或所选用户远程连接到计算机。
从 PowerShell 3.0 开始,可以使用会话配置文件来定义会话配置的元素。 借助此功能,无需编写代码即可轻松自定义会话,并发现会话配置的属性。 若要创建会话配置文件,请使用 New-PSSessionConfiguration cmdlet。 有关会话配置文件的详细信息,请参阅 about_Session_Configuration_Files。
会话配置是基于 WSMAN 的 PowerShell 远程处理功能的一项功能。 它们仅在使用 New-PSSession
、 Invoke-Command
或 Enter-PSSession
cmdlet 连接到远程 Windows 计算机时使用。
若要管理 Windows 计算机上的会话配置,请使用“以管理员身份运行”选项启动 PowerShell。
关于会话配置
每个 PowerShell 会话都使用会话配置。 这包括使用 New-PSSession 或 Enter-PSSession cmdlet 创建的永久性会话,以及 PowerShell 在你使用 cmdlet(基于 WS 管理的远程处理技术)的 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 参数。
默认会话配置的安全描述符仅允许本地计算机上的 Administrators 组成员使用它们。 因此,除非更改默认设置,否则只有 Administrators 组的成员才能远程连接到计算机。
可以使用 $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 2012 和较新版本的 Windows Server 中,默认为远程用户启用内置会话配置。 在其他受支持的 Windows 版本中,必须更改会话配置的安全描述符以允许远程访问。
若要在计算机上启用对会话配置的远程访问,请使用 Enable-PSRemoting cmdlet。 此 cmdlet 创建两项会话配置:
- 名称定义为:"PowerShell." + "current PowerShell version"
- 名称为 "PowerShell.6",未绑定到任何特定的 PowerShell 版本。
此外,默认情况下,计算机上只有 Administrators 组的成员对默认会话配置具有“执行”权限,但你可以在默认会话配置和创建的任何会话配置上更改安全描述符。
若要授予其他用户远程连接到计算机的权限,请使用 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。 (默认值为 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
- Register-PSSessionConfiguration
- Set-PSSessionConfiguration
- Unregister-PSSessionConfiguration
- New-PSSessionConfigurationFile
- Test-PSSessionConfigurationFile