创建并注册新的会话配置。
语法
Register-PSSessionConfiguration [-AssemblyName] <string> [-ConfigurationTypeName] <string> [-ApplicationBase <string>] [-Name] <string> [-Force] [-MaximumReceivedDataSizePerCommandMB <double>] [-MaximumReceivedObjectSizeMB <double>] [-NoServiceRestart] [-ProcessorArchitecture <string>] [-SecurityDescriptorSDDL <string>] [-ShowSecurityDescriptorUI] [-StartupScript <string>] [-ThreadApartmentState {<STA> | <MTA> | <Unknown>}] [-ThreadOptions {<Default> | <UseNewThread> | <ReuseThread> | <UseCurrentThread>}] [-Confirm] [-WhatIf] [<CommonParameters>]
说明
Register-PSSessionConfiguration cmdlet 用于在本地计算机上创建并注册新的会话配置。这是一个高级 cmdlet,供系统管理员为其用户管理自定义会话配置时使用。
每个 Windows PowerShell 远程会话都使用一个会话配置。当用户创建连接到计算机的会话时,可以选择一个配置或使用在启用 Windows PowerShell 远程处理时注册的默认配置。用户还可以设置 $PSSessionConfigurationName 首选项变量,该变量为当前会话中创建的会话指定默认配置。
会话配置用于为会话配置环境。可以使用实现新配置类的程序集以及使用会话中运行的脚本来定义配置。配置可以确定哪些命令在会话中可用,它可以包含一些保护计算机的设置,例如限制会话可在单个对象或命令中远程接收到的数据量的设置。您还可以指定一个安全描述符,用于确定使用配置所需的权限。
参数
-ApplicationBase <string>
指定在 AssemblyName 参数值中指定的程序集文件 (*.dll) 的路径。当 AssemblyName 参数的值中不包含路径时使用此参数。默认值为当前目录。
是否为必需? |
false |
位置? |
named |
默认值 |
Current directory |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-AssemblyName <string>
指定定义配置类型的程序集文件 (*.dll) 的名称。您可以在此参数中或在 ApplicationBase 参数的值中指定该 .dll 的路径。
此参数在指定了 ConfigurationTypeName 参数时是必需的。
是否为必需? |
true |
位置? |
2 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ConfigurationTypeName <string>
指定用于此配置的 Microsoft .NET Framework 类型的完全限定名称。指定的类型必须实现 System.Management.Automation.Remoting.PSSessionConfiguration 类。
要指定实现配置类型的程序集文件 (.dll),请使用 AssemblyName 和 AssemblyBase 参数。
通过创建类型,您可以控制会话配置的更多方面,例如公开或隐藏 cmdlet 的某些参数或设置用户不能重写的数据大小和对象大小限制。
如果省略此参数,则将 DefaultRemotePowerShellConfiguration 类用于会话配置。
是否为必需? |
true |
位置? |
3 |
默认值 |
System.Management.Automation.Remoting.PSSessionConfiguration |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Force
禁止显示所有用户提示,并重新启动 WinRM 服务而不显示提示。重新启动服务将使配置更改生效。
若要阻止重新启动并禁止显示重新启动提示,请使用 NoServiceRestart 参数。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-MaximumReceivedDataSizePerCommandMB <double>
限制可在任何单个远程命令中发送给此计算机的数据量。输入以兆字节 (MB) 为单位的数据大小。默认值是 50 MB。
如果 ConfigurationTypeName 参数中指定的配置类型定义了数据大小限制,则使用该配置类型中的限制,而忽略此参数的值。
是否为必需? |
false |
位置? |
named |
默认值 |
50 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-MaximumReceivedObjectSizeMB <double>
限制可在任何单个对象中发送给此计算机的数据量。输入以兆字节 (MB) 为单位的数据大小。默认值是 10 MB。
如果 ConfigurationTypeName 参数中指定的配置类型定义了对象大小限制,则使用该配置类型中的限制,而忽略此参数的值。
是否为必需? |
false |
位置? |
named |
默认值 |
10 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Name <string>
指定会话配置的名称。此参数是必需的。
是否为必需? |
true |
位置? |
1 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-NoServiceRestart
不重新启动 WinRM 服务,并且禁止提示重新启动该服务。
默认情况下,当您输入 Register-PSSessionConfiguration 命令时,系统会提示您重新启动 WinRM 服务以使新的会话配置生效。在重新启动 WinRM 服务之前,新的会话配置不会生效。
若要重新启动 WinRM 服务并且不显示提示,请使用 Force 参数。若要手动重新启动 WinRM 服务,请使用 Restart-Service cmdlet。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ProcessorArchitecture <string>
指定配置的处理器体系结构。此值确定当使用配置时启动承载 Windows PowerShell 的进程的 32 位还是 64 位版本。有效值为 x86、AMD64 和 IA64。
默认值由承载会话配置的计算机的处理器体系结构确定。
是否为必需? |
false |
位置? |
named |
默认值 |
The processor architecture of the host computer. |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-SecurityDescriptorSDDL <string>
指定配置的安全描述符定义语言 (SDDL) 字符串。
此字符串确定使用新的会话配置所需要的权限。要在会话中使用某个会话配置,用户对该配置必须至少拥有“执行(Invoke)”权限。
如果安全描述符过于复杂,可考虑使用 ShowSecurityDescriptorUI 参数代替此参数。不能在同一个命令中同时使用这两个参数。
如果省略此参数,则将 WinRM 服务的根 SDDL 用于此配置。要查看或更改根 SDDL,请使用 WS-Management 提供程序。例如“get-item wsman:\localhost\service\rootSDDL”。有关 WS-Management 提供程序的详细信息,请键入“get-help wsman”。
是否为必需? |
false |
位置? |
named |
默认值 |
The value of the root SDDL |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ShowSecurityDescriptorUI
显示可帮助您为会话配置创建 SDDL 的属性表。在输入 Register-PSSessionConfiguration 命令并重新启动 WinRM 服务后,该属性表将显示出来。
在设置配置的权限时,需记住用户必须至少具有“执行(Invoke)”权限才能在会话中使用该会话配置。
不能在同一个命令中同时使用 SecurityDescriptorSDDL 参数和此参数。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-StartupScript <string>
指定 Windows PowerShell 脚本的完全限定路径。指定的脚本在使用会话配置的新会话中运行。
您可以使用该脚本进一步配置会话。如果脚本产生错误(甚至非终止错误),则不会创建会话,并且导致用户的 New-PSSession 命令失败。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ThreadApartmentState <ApartmentState>
确定会话中的线程的单元状态。有效值为 STA、MTA 和 Unknown。默认值为 Unknown。
是否为必需? |
false |
位置? |
named |
默认值 |
Unknown |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ThreadOptions <PSThreadOptions>
定义在会话中执行命令时如何创建和使用线程。有效值为 Default、ReuseThread、UseCurrentThread 和 UseNewThread。默认值为 UseCurrentThread。
是否为必需? |
false |
位置? |
named |
默认值 |
UseCurrentThread |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
None 不能通过管道将输入传递给此 cmdlet。 |
输出 |
Microsoft.WSMan.Management.WSManConfigContainerElement |
说明
若要在 Windows Vista、Windows Server 2008 以及更高版本的 Windows 上运行此 cmdlet,您必须使用“以管理员身份运行”选项启动 Windows PowerShell。
此 cmdlet 生成代表 Web Services for Management (WS-Management) 插件配置的 XML,并将该 XML 发送给 WS-Management,然后由 WS-Management 将该插件注册到本地计算机中(“new-item wsman:\localhost\plugin”)。
示例 1
C:\PS>register-pssessionConfiguration -name NewShell -applicationBase c:\MyShells\ -assemblyName MyShell.dll -configurationTypeName MyClass 说明 ----------- 此命令注册 NewShell 会话配置。它使用 ApplicationName 和 ApplicationBase 参数指定 MyShell.dll 文件的位置,该文件用于指定会话配置中的 cmdlet 和提供程序。该命令还使用 ConfigurationTypeName 参数指定可进一步配置会话的新类。 要使用此配置,用户可键入“new-pssession -configurationname newshell”。
示例 2
C:\PS>register-pssessionConfiguration -name MaintenanceShell -startupScript c:\ps-test\Maintenance.ps1 说明 ----------- 此命令用于在本地计算机上注册 MaintenanceShell 配置。该命令使用 StartupScript 参数来指定 Maintenance.ps1 脚本。 如果用户使用 New-PSSession 命令并选择 MaintenanceShell 配置,则 Maintenance.ps1 脚本将在新会话中运行。该脚本可以配置会话,包括导入模块、添加 Windows PowerShell 管理单元以及设置会话的执行策略。如果脚本产生任何错误(包括非终止错误),则 New-PSSession 命令将失败。
示例 3
C:\PS>$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FA;SA;GWGX;;WD)" C:\PS> register-pssessionconfiguration -name AdminShell -securityDescriptorSDDL $sddl -maximumReceivedObjectSizeMB 20 -startupScript c:\scripts\AdminShell.ps1 说明 ----------- 此示例注册 AdminShell 会话配置。 第一个命令将自定义 SDDL 保存在 $sddl 变量中。 第二个命令注册新的 shell。该命令使用 SecurityDescritorSDDL 参数指定 $sddl 变量值中的 SDDL,并使用 MaximumReceivedObjectSizeMB 参数增加对象大小限制。该命令还使用 StartupScript 参数指定用于配置会话的脚本。 作为使用 SecurityDescriptorSDDL 参数的替代方法,还可以使用 ShowSecurityDescriptorUI 参数,该参数将显示可用于为会话配置设置权限的属性表。当您单击属性表中的“确定”时,该工具会为会话配置生成一个 SDDL。
示例 4
C:\PS>$s = register-pssessionConfiguration -name MaintenanceShell -startupScript c:\ps-test\Maintenance.ps1 C:\PS> $s WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin Name Type Keys ---- ---- ---- MaintenanceShell Container {Name=MaintenanceShell} C:\PS> $s.getType().fullname TypeName: Microsoft.WSMan.Management.WSManConfigContainerElement C:\PS> $s | format-list -property * PSPath : Microsoft.WSMan.Management\WSMan::localhost\Plugin\MaintenanceShell PSParentPath : Microsoft.WSMan.Management\WSMan::localhost\Plugin PSChildName : MaintenanceShell PSDrive : WSMan PSProvider : Microsoft.WSMan.Management\WSMan PSIsContainer : True Keys : {Name=MaintenanceShell} Name : MaintenanceShell TypeNameOfElement : Container C:\PS> dir wsman:\localhost\plugin Name Type Keys ---- ---- ---- MaintenanceShell Container {Name=MaintenanceShell} microsoft.powershell Container {Name=microsoft.powershell} microsoft.powershell32 Container {Name=microsoft.powershell32} 说明 ----------- 此示例演示 Register-PSSessionConfiguration 将返回 WSManConfigContainerElement。另外,还演示了如何查找 WSMan: 驱动器中的容器元素。 第一个命令使用 Register-PSSessionConfiguration cmdlet 注册 MaintenanceShell 配置。该命令将 cmdlet 返回的对象保存在 $s 变量中。 第二个命令显示 $s 变量的内容。 第三个命令使用 GetType 方法及其 FullName 属性显示 Register-PSSessionConfiguration 所返回的对象的类型名称。 第四个命令使用 Format-List cmdlet 以列表形式显示 Register-PSSessionConfiguration 所返回的对象的所有属性。PSPath 属性显示该对象存储在 WSMan: 驱动器的一个目录中。 第五个命令使用 Get-ChildItem cmdlet 显示 WSMan:\LocalHost\PlugIn 路径中的项目。这些项目包括新的 MaintenanceShell 配置以及随 Windows PowerShell 一起提供的两个默认配置。
示例 5
C:\PS>register-pssessionconfiguration -name WithProfile -startupScript add-profile.ps1 # Add-Profile.ps1 . c:\users\admin01\documents\windowspowershell\profile.ps1 说明 ----------- 此命令在本地计算机上创建并注册 WithProfile 会话配置。该命令使用 StartupScript 参数指示 Windows PowerShell 在使用该会话配置的任何会话中运行指定的脚本。 另外,还将显示指定脚本 Add-Profile.ps1 的内容。该脚本只包含一个命令,该命令使用点“.”获得来源在会话的当前范围内运行用户的 CurrentUserAllHosts 配置文件。 有关配置文件的详细信息,请参阅 about_Profiles。有关使用点“.”获得来源的详细信息,请参阅 about_Scopes。
另请参阅