public static SftpSession AddToSftpSessionCollection(SftpClient sftpclient, SessionState pssession) { //Set initial variables var obj = new SftpSession(); var sftpSessions = new List<SftpSession>(); var index = 0; // Retrive existing sessions from the globla variable. var sessionvar = pssession.PSVariable.GetValue("Global:SFTPSessions") as List<SftpSession>; // If sessions exist we set the proper index number for them. if (sessionvar != null && sessionvar.Count > 0) { sftpSessions.AddRange(sessionvar); // Get the SessionId of the last item and count + 1 SftpSession lastSession = sftpSessions[sftpSessions.Count - 1]; index = lastSession.SessionId + 1; } // Create the object that will be saved obj.SessionId = index; obj.Host = sftpclient.ConnectionInfo.Host; obj.Session = sftpclient; sftpSessions.Add(obj); // Set the Global Variable for the sessions. pssession.PSVariable.Set((new PSVariable("Global:SFTPSessions", sftpSessions, ScopedItemOptions.AllScope))); return obj; }