about_Session_Configurations

应用到: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

主题

about_Session_Configurations

简短说明

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

详细说明

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

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

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

从 Windows PowerShell 3.0 开始,你可以使用会话配置文件来定义会话配置的元素。通过此功能可以在不编写代码的情况下轻松自定义会话,以及找到会话配置的属性。若要创建会话配置文件,请使用 New-PSSessionConfiguration cmdlet。有关会话配置文件的详细信息,请参阅 about_Session_Configuration_Files (https://go.microsoft.com/fwlink/?LinkId=236023)。

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

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

关于会话配置

每个 Windows PowerShell 会话都会使用会话配置。这包括通过使用 New-PSSession 或 Enter-PSSession cmdlet 创建的持续会话以及 Windows PowerShell 在你使用 cmdlet(使用 Invoke-Command 等基于 WS-Management 的远程技术)的 ComputerName 参数时创建的临时会话。

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

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

默认情况下,仅计算机的管理员有权使用默认会话配置。但是,你可以更改安全描述符来允许所有人、没有人或仅选定用户使用你的计算机上的会话配置。在此处插入子节正文。

内置的会话配置

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

默认情况下会话使用 Windows 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

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

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

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

还可以在 Windows 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.workf... 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\Plugin


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

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

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

若要启用对计算机上的会话配置的远程访问,请使用 Enable-PSRemoting cmdlet。在此处插入子节正文。

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

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

例如,以下命令打开的属性页可允许你更改 Microsoft.PowerShell 默认会话配置的安全描述符。

        PS C:\> 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。

例如:

        PS C:\> Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI

创建新的会话配置

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

例如,以下命令创建的会话配置与 Microsoft.PowerShell 会话配置相同,不同的是前者将从远程命令接收到的数据限制为 20 兆字节 (MB)。(默认值为 50 MB)。在此处插入子节正文。

        PS C:\> 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_PSSession

about_Remote

about_Session_Configuration_Files

New-PSSession

Disable-PSSessionConfiguration

Enable-PSSessionConfiguration

Get-PSSessionConfiguration

New-PSSessionConfigurationFile

Register-PSSessionConfiguration

Set-PSSessionConfiguration

Test-PSSessionConfigurationFile

Unregister-PSSessionConfiguration