public static RunspaceInfo CreateFromPowerShell(
            ILogger logger,
            PowerShell pwsh,
            string localComputerName)
        {
            PowerShellVersionDetails psVersionDetails = PowerShellVersionDetails.GetVersionDetails(logger, pwsh);
            SessionDetails           sessionDetails   = SessionDetails.GetFromPowerShell(pwsh);

            bool isOnLocalMachine = string.Equals(sessionDetails.ComputerName, localComputerName, StringComparison.OrdinalIgnoreCase) ||
                                    string.Equals(sessionDetails.ComputerName, "localhost", StringComparison.OrdinalIgnoreCase);

            RunspaceOrigin runspaceOrigin = RunspaceOrigin.Local;

            if (pwsh.Runspace.RunspaceIsRemote)
            {
                runspaceOrigin = pwsh.Runspace.ConnectionInfo is NamedPipeConnectionInfo
                    ? RunspaceOrigin.EnteredProcess
                    : RunspaceOrigin.PSSession;
            }

            return(new RunspaceInfo(
                       pwsh.Runspace,
                       runspaceOrigin,
                       psVersionDetails,
                       sessionDetails,
                       isRemote: !isOnLocalMachine));
        }
 public RunspaceInfo(
     Runspace runspace,
     RunspaceOrigin origin,
     PowerShellVersionDetails powerShellVersionDetails,
     SessionDetails sessionDetails,
     bool isRemote)
 {
     Runspace                 = runspace;
     RunspaceOrigin           = origin;
     SessionDetails           = sessionDetails;
     PowerShellVersionDetails = powerShellVersionDetails;
     IsOnRemoteMachine        = isRemote;
 }
        public static RunspaceInfo CreateFromLocalPowerShell(
            ILogger logger,
            PowerShell pwsh)
        {
            PowerShellVersionDetails psVersionDetails = PowerShellVersionDetails.GetVersionDetails(logger, pwsh);
            SessionDetails           sessionDetails   = SessionDetails.GetFromPowerShell(pwsh);

            return(new RunspaceInfo(
                       pwsh.Runspace,
                       RunspaceOrigin.Local,
                       psVersionDetails,
                       sessionDetails,
                       isRemote: false));
        }