Source/Framework/SMOConnection.cs

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using SQL.SMO.Cmdlets;
using System;
 
namespace SQL.SMO.Framework
{
    public class SMOConnection : ISMOObject
    {
        private Server _srv;
 
        public string Name { get { return _srv.NetName; } }
        public bool Connected { get { return SharedCmdlet.CheckSession(true); } }
        public Version BuildNumber { get { return new Version(_srv.VersionString); } }
        public DatabaseEngineEdition DatabaseEngineEdition { get { return _srv.DatabaseEngineEdition; } }
        public int DatabaseCount { get { return _srv.Databases.Count; } }
        public DatabaseEngineType DatabaseEngineType { get { return _srv.DatabaseEngineType; } }
        public AvailabilityGroupCollection AvailabilityGroups { get { return _srv.AvailabilityGroups; } }
        public bool TcpEnabled { get { return _srv.TcpEnabled; } }
        public ServerStatus Status { get { return _srv.Status; } }
        public string SQLEngineServiceAccount { get { return _srv.ServiceAccount; } }
        public int ProcessorCount { get { return _srv.Processors; } }
        public int PhysicalMemory { get { return _srv.PhysicalMemory; } }
        public ServerLoginMode LoginMode { get { return _srv.LoginMode; } }
 
        public Type MSType => typeof(Server);
 
        internal SMOConnection(Server server) => _srv = server;
 
        public object ShowOriginal() => _srv;
    }
}