Example #1
0
        static void Main(string[] args)
        {
            Stopwatch steptimer     = new Stopwatch();
            Stopwatch totaltimer    = new Stopwatch();
            string    _appdir       = AppDomain.CurrentDomain.BaseDirectory;
            string    neoconfigfile = _appdir + @"\config\neoconfig.json";
            string    configfile    = _appdir + @"\config\cmconfig.json";
            bool      batchmode     = false;
            string    scanid        = ShortGuid.NewGuid().ToString();
            string    scannerid     = string.Empty;

            IDriver driver = null;

            totaltimer.Start();
            try
            {
                foreach (string arg in args)
                {
                    string[] param = arg.Split(new[] { ":" }, 2, StringSplitOptions.None);
                    switch (param[0].ToUpper())
                    {
                    case "/?":
                        ShowUsage();
                        Environment.Exit(0);
                        break;

                    case "/CONFIG":
                        configfile = param[1];
                        break;

                    case "/BATCH":
                        batchmode = true;
                        break;

                    default:
                        break;
                    }
                }
            }
            catch
            {
                Console.WriteLine("There is a problem with arguments: " + string.Join(" ", args));
                Console.WriteLine("");
                ShowUsage();
                Environment.Exit(1);
            }

            //load the config
            try
            {
                using (Configuration config = Configuration.LoadConfiguration(configfile))
                {
                    scannerid = config.ScannerID;
                    if (string.IsNullOrEmpty(config.Username))
                    {
                        Connector.Instance.Connect(config.SiteServer);
                    }
                    else
                    {
                        Connector.Instance.Connect(config.Username, config.Password, config.Domain, config.SiteServer);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("There was an error connecting to the server with your configuration");
                Console.WriteLine(e.Message);
                if (batchmode == false)
                {
                    Console.ReadLine();
                }
                Environment.Exit(1);
            }

            try
            {
                using (NeoConfiguration config = NeoConfiguration.LoadConfigurationFile(neoconfigfile))
                {
                    driver = Neo4jConnector.ConnectToNeo(config);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("There was an error loading your neo4j configuration");
                Console.WriteLine(e.Message);
                if (batchmode == false)
                {
                    Console.ReadLine();
                }
                Environment.Exit(2);
            }

            NeoWriter.ScanID = scanid;

            List <IDataCollector> collectors = new List <IDataCollector>
            {
                CmCollections.GetInstance(),
                                  CmLimitingCollections.GetInstance(),
                                  CmApplications.GetInstance(),
                                  CmPackages.GetInstance(),
                                  CmPackagePrograms.GetInstance(),
                                  CmTaskSequences.GetInstance(),
                                  CmUsers.GetInstance(),
                                  CmDevices.GetInstance(),
                                  CmDeviceAdConnections.GetInstance(),
                                  CmUserAdConnections.GetInstance(),
                                  CmCollectionMemberships.GetInstance(),
                                  CmApplicationsInTaskSequences.GetInstance(),
                                  CmSoftwareUpdate.GetInstance(),
                                  CmSoftwareUpdateSupersedence.GetInstance(),
                                  CmSoftwareUpdateGroupMembers.GetInstance(),
                                  CmDeployments.GetInstance()
            };

            NeoWriter.WriteHeaders();

            foreach (IDataCollector collector in collectors)
            {
                NeoWriter.WriteIDataCollector(collector, driver, true, true);
            }

            //cleanup
            Cleanup.CleanupCmObjects(driver);

            if (batchmode == true)
            {
                Console.Write("Exiting.");
                for (int i = 0; i < 3; i++)
                {
                    System.Threading.Thread.Sleep(500);
                    Console.Write(".");
                }
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine("Press any key to exit");
                Console.ReadLine();
            }
        }