You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OneShell is a connection/session manager for Systems/Services that can be accessed via PowerShell. It uses Profiles to implement this functionality, managing the system/service definitions, endpoints, credentials, etc. Connections can be made by OneShell via PowerShell Remoting (eg. Exchange Online, Skype Online, etc.) or via 'Local Connect' (eg. AzureAD via Import-Module and Connect-AzureAD) or a combination of these 2 techniques.
Currently, OneShell's connection/session management is limited to the following features:
auto connection to a user defined set of systems
on demand connection to user defined system(s)
auto grouping of sessions into session management groups for one to many management (eg. Invoke-Command -Session $SessionGroup).
on demand testing of connection
re-connection to one or more existing connections if needed (if testing shows the connection has failed)
The goal of this issue is to define implementation of these additional features:
multiple connections to the same system (for parallel operations, background jobs, etc.)
'clean' disconnection of an existing connection where possible (depending on service type support)
tracking of connections to service types to avoid or warn about potential conflicts (for example, connection operations that would clobber existing commands in the local PowerShell session)
get all OneShell connections
Improved session management groups
Improved/Robust support for Prefixing with 'LocalConnect' systems.
This is needed to manage imports of modules with command prefixing if the user requests it in their profile configuration or connect-oneshellsystem parameters. And to handle disconnection if the same module was previously imported for a different system.
Implementation Proposal Summary
Implementation will require new functions and new connection tracking mechanism(s). The proposed solution would include the following (more detail to follow below):
Module variable ManagedConnections array to track each Connection
New function Remove-OneShellSystemPSSession (would remove an imported session from being imported but not the session itself)
New function Get-OneShellConnection (or Get-OneShellSystemConnection)
Update function Import-OneShellSystemPSSession to update ManagedConnections entry(ies)
New function Disconnect-OneShellSystem to manage the 'cleanes' disconnection possible for a given ServiceType and connection type (PS Remoting or LocalConnect).
Implementation Proposal Detail
$Script:ManagedConnections
Array of PSCustomObject
Attributes
ManagedConnectionID (Incremented Int)
Identity (of the System from the OrgProfile)
Name (of the system from the OrgProfile)
OrgProfileIdentity
OrgProfileName
UserProfileIdentity
UserProfileName
PSSessionName (null for LocalConnect)
PSSessionID (null for LocalConnect)
Imported (bool for whether the PSSession is imported locally or import-module was used)
ImportedModuleName (the auto/random module name PS assigns to imported session modules)
ConnectionType (LocalConnect|PSRemoting)
PrefixApplied (at import - might be null)
EndpointIdentity (might be null)
First/Default Connection?
Update function Import-OneShellSystemPSSession
It needs to update a ManagedConnections entry attributes ImportedModuleName, Imported, Prefix
New function Remove-OneShellSystemPSSession
It needs to remove an imported session/session module but leave the session running for later import or disconnection. In other words, it's not doing the job of Remove-PSSession. Instead, it is reversing Import-PSSession (or in OneShell's case Import-OneShellSystemPSSession).
New function Get-OneShellConnection
Parameter Sets
all
byIdentity
byServiceType
other?
New function Disconnect-OneShellSystem
Parameter Sets
All
Identity (all connections for specified system(s) or scoped to ConnectionID)
ServiceType (all connections for a servicetype or scoped to ConnectionID)
ConnectionID (specific connection(s))
Description
branches depending on ConnectionType (LocalConnect or PSremoting)
PSRemoting steps
If imported, remove imported module
If disconnect command is defined in servicetype, run disconnect command in PSSession
Remove PSSession from local session and session management group(s)
LocalConnect steps
If disconnect command is defined in servicetype, run disconnect command locally
if not, optionally warn user (if warning is defined in servicetype). This is because certain connections can persist even through module removal (see MSOnline module for an example).
Autocompleters for parameters for all the above functions
for Identity to limit ConnectionIDs
for ConnectionID to limit Identities
for ServiceType to limit ConnectionIDs and Identities
The text was updated successfully, but these errors were encountered:
OneShell is a connection/session manager for Systems/Services that can be accessed via PowerShell. It uses Profiles to implement this functionality, managing the system/service definitions, endpoints, credentials, etc. Connections can be made by OneShell via PowerShell Remoting (eg. Exchange Online, Skype Online, etc.) or via 'Local Connect' (eg. AzureAD via Import-Module and Connect-AzureAD) or a combination of these 2 techniques.
Currently, OneShell's connection/session management is limited to the following features:
The goal of this issue is to define implementation of these additional features:
This is needed to manage imports of modules with command prefixing if the user requests it in their profile configuration or connect-oneshellsystem parameters. And to handle disconnection if the same module was previously imported for a different system.
Implementation Proposal Summary
Implementation will require new functions and new connection tracking mechanism(s). The proposed solution would include the following (more detail to follow below):
Implementation Proposal Detail
$Script:ManagedConnections
Update function Import-OneShellSystemPSSession
It needs to update a ManagedConnections entry attributes ImportedModuleName, Imported, Prefix
New function Remove-OneShellSystemPSSession
It needs to remove an imported session/session module but leave the session running for later import or disconnection. In other words, it's not doing the job of Remove-PSSession. Instead, it is reversing Import-PSSession (or in OneShell's case Import-OneShellSystemPSSession).
New function Get-OneShellConnection
Parameter Sets
New function Disconnect-OneShellSystem
Parameter Sets
Description
branches depending on ConnectionType (LocalConnect or PSremoting)
Autocompleters for parameters for all the above functions
The text was updated successfully, but these errors were encountered: