PowerShell Logo Small


This is the built-in help made by Microsoft for the command 'Register-PSSessionConfiguration', in PowerShell version 5 - as retrieved from Windows version 'Microsoft Windows Server 2012 R2 Standard' PowerShell help files on 2016-06-23.

For PowerShell version 3 and up, where you have Update-Help, this command was run just before creating the web pages from the help files.


Creates and registers a new session configuration.


Register-PSSessionConfiguration [-Name] <String> [-AccessMode {Disabled | Local | Remote}] [-ApplicationBase [<String>]] [-Force] [-MaximumReceivedDataSizePerCommandMB
[<Double]>]] [-MaximumReceivedObjectSizeMB [<Double]>]] [-ModulesToImport [<Object[]>]] [-NoServiceRestart] [-ProcessorArchitecture {x86 | amd64}] [-PSVersion [<Version>]]
[-RunAsCredential [<PSCredential>]] [-SecurityDescriptorSddl [<String>]] [-SessionType {DefaultRemoteShell | Workflow}] [-SessionTypeOption [<PSSessionTypeOption>]]
[-ShowSecurityDescriptorUI] [-StartupScript [<String>]] [-ThreadApartmentState {STA | MTA | Unknown}] [-ThreadOptions {Default | UseNewThread | ReuseThread |
UseCurrentThread}] [-TransportOption [<PSTransportOption>]] [-UseSharedProcess] [-Confirm] [-WhatIf] [<CommonParameters>]
Register-PSSessionConfiguration [-Name] <String> [-AssemblyName] <String> [-ConfigurationTypeName] <String> [-AccessMode {Disabled | Local | Remote}] [-ApplicationBase
[<String>]] [-Force] [-MaximumReceivedDataSizePerCommandMB [<Double]>]] [-MaximumReceivedObjectSizeMB [<Double]>]] [-ModulesToImport [<Object[]>]] [-NoServiceRestart]
[-ProcessorArchitecture {x86 | amd64}] [-PSVersion [<Version>]] [-RunAsCredential [<PSCredential>]] [-SecurityDescriptorSddl [<String>]] [-SessionTypeOption
[<PSSessionTypeOption>]] [-ShowSecurityDescriptorUI] [-StartupScript [<String>]] [-ThreadApartmentState {STA | MTA | Unknown}] [-ThreadOptions {Default | UseNewThread |
ReuseThread | UseCurrentThread}] [-TransportOption [<PSTransportOption>]] [-UseSharedProcess] [-Confirm] [-WhatIf] [<CommonParameters>]
Register-PSSessionConfiguration [-Name] <String> [-AccessMode {Disabled | Local | Remote}] [-Force] [-MaximumReceivedDataSizePerCommandMB [<Double]>]]
[-MaximumReceivedObjectSizeMB [<Double]>]] [-NoServiceRestart] [-ProcessorArchitecture {x86 | amd64}] [-RunAsCredential [<PSCredential>]] [-SecurityDescriptorSddl
[<String>]] [-ShowSecurityDescriptorUI] [-StartupScript [<String>]] [-ThreadApartmentState {STA | MTA | Unknown}] [-ThreadOptions {Default | UseNewThread | ReuseThread |
UseCurrentThread}] [-TransportOption [<PSTransportOption>]] [-UseSharedProcess] -Path <String> [-Confirm] [-WhatIf] [<CommonParameters>]

Search powershellhelp.space


The Register-PSSessionConfiguration cmdlet creates and registers a new session configuration on the local computer. This is an advanced cmdlet that is designed to be used
by system administrators to create custom sessions for remote users.

Every Windows PowerShell session (PSSession) uses a session configuration, also known as an "endpoint." When users create a session that connects to the computer, they can
select a session configuration or use the default session configuration that is registered when you enable Windows PowerShell remoting. Users can also set the
$PSSessionConfigurationName preference variable, which specifies a default configuration for remote sessions created in the current session.

The session configuration defines the environment for the remote session. The configuration can determine which commands and language elements are available in the session,
and it can include settings that protect the computer, such as those that limit the amount of data that the session can receive remotely in a single object or command. The
security descriptor (ACL) of the session configuration determines which users have permission to use the session configuration.

You can define the elements of configuration by using an assembly that implements a new configuration class and by using a script that runs in the session. Beginning in
Windows PowerShell 3.0, you can also use a session configuration file to define the session configuration.

For information about session configurations, see about_Session_Configurations (http://go.microsoft.com/fwlink/?LinkID=145152). For information about session configuration
files, see about_Session_Configuration_Files (http://go.microsoft.com/fwlink/?LinkID=236023).



Online Version: http://go.microsoft.com/fwlink/p/?linkid=289605
WSMan Provider




-------------------------- EXAMPLE 1 --------------------------

PS C:\>Register-PSSessionConfiguration -Name NewShell -ApplicationBase c:\MyShells\ -AssemblyName MyShell.dll -ConfigurationTypeName MyClass

This command registers the NewShell session configuration. It uses the AssemblyName and ApplicationBase parameters to specify the location of the MyShell.dll file, which
specifies the cmdlets and providers in the session configuration. It also uses the ConfigurationTypeName parameter to specify a new class that further configures the session.

To use this configuration, type "new-pssession -configurationname newshell".

-------------------------- EXAMPLE 2 --------------------------

PS C:\>Register-PSSessionConfiguration -name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1

This command registers the MaintenanceShell configuration on the local computer. The command uses the StartupScript parameter to specify the Maintenance.ps1 script.

When a user uses a New-PSSession command and selects the MaintenanceShell configuration, the Maintenance.ps1 script runs in the new session. The script can configure the
session, including importing modules, adding Windows PowerShell snap-ins, and setting the execution policy for the session. If the script generates any errors, including
non-terminating errors, the New-PSSession command fails.

-------------------------- EXAMPLE 3 --------------------------

PS C:\>$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FA;SA;GWGX;;WD)"
PS C:\>Register-PSSessionConfiguration -name AdminShell -SecurityDescriptorSDDL $sddl -MaximumReceivedObjectSizeMB 20 -StartupScript C:\scripts\AdminShell.ps1

This example registers the AdminShell session configuration.

The first command saves a custom SDDL in the $sddl variable.

The second command registers the new shell. The command uses the SecurityDescritorSDDL parameter to specify the SDDL in the value of the $sddl variable and the
MaximumReceivedObjectSizeMB parameter to increase the object size limit. It also uses the StartupScript parameter to specify a script that configures the session.

As an alternative to using the SecurityDescriptorSDDL parameter, you can use the ShowSecurityDescriptorUI parameter, which displays a property sheet that you can use to set
permissions for the session configuration. When you click "OK" in the property sheet, the tool generates an SDDL for the session configuration.

-------------------------- EXAMPLE 4 --------------------------

The first command uses the Register-PSSessionConfiguration cmdlet to register the MaintenanceShell configuration. It saves the object that the cmdlet returns in the $s
PS C:\>$s = Register-PSSessionConfiguration -name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1

The second command displays the contents of the $s variable.
PS C:\>$s

WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Plugin
Name Type Keys
---- ---- ----
MaintenanceShell Container {Name=MaintenanceShell}

The third command uses the GetType method and its FullName property to display the type name of the object that Register-PSSessionConfiguration returns.
PS C:\>$s.GetType().FullName

TypeName: Microsoft.WSMan.Management.WSManConfigContainerElement

The fourth command uses the Format-List cmdlet to display all the properties of the object that Register-PSSessionConfiguration returns in a list. The PSPath property shows
that the object is stored in a directory of the WSMan: drive.
PS C:\>$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

The fifth command uses the Get-ChildItem cmdlet to display the items in the WSMan:\LocalHost\PlugIn path. These include the new MaintenanceShell configuration and the two
default configurations that come with Windows PowerShell.
PS C:\>dir WSMan:\LocalHost\Plugin

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

This example shows that a Register-PSSessionConfiguration command returns a WSManConfigContainerElement. It also shows how to find the container elements in the WSMan: drive.

-------------------------- EXAMPLE 5 --------------------------

PS C:\>Register-PSSessionConfiguration -Name WithProfile -StartupScript Add-Profile.ps1

# Add-Profile.ps1
. c:\users\admin01\documents\windowspowershell\profile.ps1

This command creates and registers the WithProfile session configuration on the local computer. The command uses the StartupScript parameter to direct Windows PowerShell to
run the specified script in any session that uses the session configuration.

The content of the specified script, Add-Profile.ps1, is also displayed. The script contains a single command that uses dot sourcing to run the user's CurrentUserAllHosts
profile in the current scope of the session.

For more information about profiles, see about_Profiles. For more information about dot sourcing, see about_Scopes.

-------------------------- EXAMPLE 6 --------------------------

The first pair of commands use the New-PSSessionConfigurationFile cmdlet to create two session configuration files. The first command creates a no-Language file. The second
command creates a restricted-language file. Other than the value of the LanguageMode parameter, the session configuration files are equivalent.
PS C:\>New-PSSessionConfigurationFile -Path .\NoLanguage.pssc -LanguageMode NoLanguage
PS C:\>New-PSSessionConfigurationFile -Path .\RestrictedLanguage.pssc -LanguageMode Restricted

The second pair of commands use the configuration files to create session configurations on the local computer.
PS C:\>Register-PSSessionConfiguration -Path .\NoLanguage.pssc -Name NoLanguage -Force
PS C:\>Register-PSSessionConfiguration -Path .\RestrictedLanguage.pssc -Name RestrictedLanguage -Force

The third pair of command creates two sessions, each of which uses one of the session configurations that was created in the previous command pair.
PS C:\>$NoLanguage = New-PSSession -ComputerName Srv01 -ConfigurationName NoLanguage
PS C:\>$RestrictedLanguage = New-PSSession -ComputerName Srv01 -ConfigurationName RestrictedLanguage

The seventh command uses the Invoke-Command cmdlet to run an If statement in the no-Language session. The command fails, because the language elements in the command are not
permitted in a no-language session.
PS C:\>Invoke-Command -Session $NoLanguage {if ((Get-Date) -lt "1January2014") {"Before"} else {"After"} }
The syntax is not supported by this runspace. This might be because it is in no-language mode.
+ CategoryInfo : ParserError: (if ((Get-Date) ...") {"Before"} :String) [], ParseException
+ FullyQualifiedErrorId : ScriptsNotAllowed
+ PSComputerName : localhost

The eighth command uses the Invoke-Command cmdlet to run the same If statement in the restricted-language session. Because these language elements are permitted in the
restricted-language session, the command succeeds.
PS C:\>Invoke-Command -Session $RestrictedLanguage {if ((Get-Date) -lt "1January2014") {"Before"} else {"After"} }

The commands in this example compare a no-language session to a restricted-language session. The example shows the effect of using the LanguageMode parameter of
New-PSSessionConfigurationFile to limit the types of commands and statements that users can run in a session that uses a custom session configuration.

To run the commands in this example, start Windows PowerShell with the "Run as administrator" option. This option is required to run the Register-PSSessionConfiguration
cmdlet .