From 4faee356e61cf278498d312c25a4b153108239be Mon Sep 17 00:00:00 2001 From: Thomas Kurth Date: Sun, 9 Jun 2019 20:29:03 +0200 Subject: [PATCH] Initial Version --- .../App.config | 27 + .../ConsoleApp.csproj | 87 ++ .../DebugWindow.Designer.cs | 88 ++ .../DebugWindow.cs | 50 + .../DebugWindow.resx | 120 ++ .../Program.cs | 22 + .../Properties/AssemblyInfo.cs | 38 + .../Properties/Settings.Designer.cs | 62 + .../Properties/Settings.settings | 18 + .../log4net.config | 23 + .../packages.config | 4 + .../BusinessLogic.cs | 82 ++ .../BusinessLogic_Powershell.cs | 79 ++ IntuneConnectorForADExtender.Core/Core.csproj | 69 + .../ODJ-Extender-TestEventGenerator.ps1 | 17 + .../ODJ-Extender.ps1 | 285 ++++ .../Properties/AssemblyInfo.cs | 38 + .../log4net.config | 23 + .../packages.config | 5 + .../App.config | 27 + .../Program.cs | 25 + .../ProjectInstaller.Designer.cs | 63 + .../ProjectInstaller.cs | 35 + .../ProjectInstaller.resx | 129 ++ .../Properties/AssemblyInfo.cs | 38 + .../Properties/Settings.Designer.cs | 62 + .../Properties/Settings.settings | 18 + .../Service.Designer.cs | 40 + .../Service.cs | 34 + .../Service.csproj | 98 ++ .../Service.resx | 123 ++ .../log4net.config | 23 + .../packages.config | 4 + .../IntuneConnectorForADExtender.Setup.vdproj | 1236 +++++++++++++++++ IntuneConnectorForADExtender.sln | 41 + 35 files changed, 3133 insertions(+) create mode 100644 IntuneConnectorForADExtender.ConsoleApp/App.config create mode 100644 IntuneConnectorForADExtender.ConsoleApp/ConsoleApp.csproj create mode 100644 IntuneConnectorForADExtender.ConsoleApp/DebugWindow.Designer.cs create mode 100644 IntuneConnectorForADExtender.ConsoleApp/DebugWindow.cs create mode 100644 IntuneConnectorForADExtender.ConsoleApp/DebugWindow.resx create mode 100644 IntuneConnectorForADExtender.ConsoleApp/Program.cs create mode 100644 IntuneConnectorForADExtender.ConsoleApp/Properties/AssemblyInfo.cs create mode 100644 IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.Designer.cs create mode 100644 IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.settings create mode 100644 IntuneConnectorForADExtender.ConsoleApp/log4net.config create mode 100644 IntuneConnectorForADExtender.ConsoleApp/packages.config create mode 100644 IntuneConnectorForADExtender.Core/BusinessLogic.cs create mode 100644 IntuneConnectorForADExtender.Core/BusinessLogic_Powershell.cs create mode 100644 IntuneConnectorForADExtender.Core/Core.csproj create mode 100644 IntuneConnectorForADExtender.Core/ODJ-Extender-TestEventGenerator.ps1 create mode 100644 IntuneConnectorForADExtender.Core/ODJ-Extender.ps1 create mode 100644 IntuneConnectorForADExtender.Core/Properties/AssemblyInfo.cs create mode 100644 IntuneConnectorForADExtender.Core/log4net.config create mode 100644 IntuneConnectorForADExtender.Core/packages.config create mode 100644 IntuneConnectorForADExtender.Service/App.config create mode 100644 IntuneConnectorForADExtender.Service/Program.cs create mode 100644 IntuneConnectorForADExtender.Service/ProjectInstaller.Designer.cs create mode 100644 IntuneConnectorForADExtender.Service/ProjectInstaller.cs create mode 100644 IntuneConnectorForADExtender.Service/ProjectInstaller.resx create mode 100644 IntuneConnectorForADExtender.Service/Properties/AssemblyInfo.cs create mode 100644 IntuneConnectorForADExtender.Service/Properties/Settings.Designer.cs create mode 100644 IntuneConnectorForADExtender.Service/Properties/Settings.settings create mode 100644 IntuneConnectorForADExtender.Service/Service.Designer.cs create mode 100644 IntuneConnectorForADExtender.Service/Service.cs create mode 100644 IntuneConnectorForADExtender.Service/Service.csproj create mode 100644 IntuneConnectorForADExtender.Service/Service.resx create mode 100644 IntuneConnectorForADExtender.Service/log4net.config create mode 100644 IntuneConnectorForADExtender.Service/packages.config create mode 100644 IntuneConnectorForADExtender.Setup/IntuneConnectorForADExtender.Setup.vdproj create mode 100644 IntuneConnectorForADExtender.sln diff --git a/IntuneConnectorForADExtender.ConsoleApp/App.config b/IntuneConnectorForADExtender.ConsoleApp/App.config new file mode 100644 index 0000000..0a4ac01 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/App.config @@ -0,0 +1,27 @@ + + + + +
+ + + + + + + + + ODJ-Extender.ps1 + + + 30130 + + + ODJ Connector Service + + + ODJ Connector Service Source + + + + diff --git a/IntuneConnectorForADExtender.ConsoleApp/ConsoleApp.csproj b/IntuneConnectorForADExtender.ConsoleApp/ConsoleApp.csproj new file mode 100644 index 0000000..f42918e --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/ConsoleApp.csproj @@ -0,0 +1,87 @@ + + + + + Debug + AnyCPU + {B46676CB-5790-4EF0-B231-1100C01CD779} + Exe + IntuneConnectorForADExtender.ConsoleApp + IntuneConnectorForADExtender.ConsoleApp + v4.6.1 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + + + + + + + + + + + + + + + Form + + + DebugWindow.cs + + + + + True + True + Settings.settings + + + + + + Always + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + {6d89c936-382c-475b-a915-9fef7054173c} + Core + + + + + DebugWindow.cs + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.Designer.cs b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.Designer.cs new file mode 100644 index 0000000..d7611d7 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.Designer.cs @@ -0,0 +1,88 @@ +namespace IntuneConnectorForADExtender.ConsoleApp +{ + partial class DebugWindow + { + + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btnStart = new System.Windows.Forms.Button(); + this.btnStop = new System.Windows.Forms.Button(); + this.btnOpenLogfile = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // btnStart + // + this.btnStart.Location = new System.Drawing.Point(31, 32); + this.btnStart.Name = "btnStart"; + this.btnStart.Size = new System.Drawing.Size(179, 66); + this.btnStart.TabIndex = 0; + this.btnStart.Text = "Start"; + this.btnStart.UseVisualStyleBackColor = true; + this.btnStart.Click += new System.EventHandler(this.btnStart_Click); + // + // btnStop + // + this.btnStop.Enabled = false; + this.btnStop.Location = new System.Drawing.Point(237, 32); + this.btnStop.Name = "btnStop"; + this.btnStop.Size = new System.Drawing.Size(179, 66); + this.btnStop.TabIndex = 1; + this.btnStop.Text = "Stop"; + this.btnStop.UseVisualStyleBackColor = true; + this.btnStop.Click += new System.EventHandler(this.btnStop_Click); + // + // btnOpenLogfile + // + this.btnOpenLogfile.Location = new System.Drawing.Point(457, 32); + this.btnOpenLogfile.Name = "btnOpenLogfile"; + this.btnOpenLogfile.Size = new System.Drawing.Size(179, 66); + this.btnOpenLogfile.TabIndex = 2; + this.btnOpenLogfile.Text = "Open logfile"; + this.btnOpenLogfile.UseVisualStyleBackColor = true; + this.btnOpenLogfile.Click += new System.EventHandler(this.btnOpenLogfile_Click); + // + // DebugWindow + // + this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.btnOpenLogfile); + this.Controls.Add(this.btnStop); + this.Controls.Add(this.btnStart); + this.Name = "DebugWindow"; + this.Text = "DebugWindow"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btnStart; + private System.Windows.Forms.Button btnStop; + private System.Windows.Forms.Button btnOpenLogfile; + } +} \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.cs b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.cs new file mode 100644 index 0000000..156f535 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.cs @@ -0,0 +1,50 @@ +using log4net; +using log4net.Appender; +using log4net.Repository.Hierarchy; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace IntuneConnectorForADExtender.ConsoleApp +{ + public partial class DebugWindow : Form + { + Core.BusinessLogic bl = null; + public DebugWindow() + { + InitializeComponent(); + var settings = Properties.Settings.Default; + bl = new Core.BusinessLogic(settings.PSScript, settings.EventIdToMonitor, settings.LogName, settings.LogSource); + } + + private void btnStart_Click(object sender, EventArgs e) + { + bl.StartMonitor(); + btnStart.Enabled = false; + btnStop.Enabled = true; + } + + private void btnStop_Click(object sender, EventArgs e) + { + bl.StopMonitor(); + btnStart.Enabled = true; + btnStop.Enabled = false; + } + + private void btnOpenLogfile_Click(object sender, EventArgs e) + { + var rootAppender = ((Hierarchy)LogManager.GetRepository()) + .Root.Appenders.OfType() + .FirstOrDefault(); + + string filename = rootAppender != null ? rootAppender.File : string.Empty; + System.Diagnostics.Process.Start(filename); + } + } +} diff --git a/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.resx b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/DebugWindow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/Program.cs b/IntuneConnectorForADExtender.ConsoleApp/Program.cs new file mode 100644 index 0000000..43b4de0 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace IntuneConnectorForADExtender.ConsoleApp +{ + class Program + { + + static void Main(string[] args) + { + Console.WriteLine("Starting Intune Connector for AD Extender troubleshooting console!"); + Application.Run(new DebugWindow()); + + + + } + } +} diff --git a/IntuneConnectorForADExtender.ConsoleApp/Properties/AssemblyInfo.cs b/IntuneConnectorForADExtender.ConsoleApp/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..99e4071 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("IntuneConnectorForADExtender.ConsoleApp")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("IntuneConnectorForADExtender.ConsoleApp")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("b46676cb-5790-4ef0-b231-1100c01cd779")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + +[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")] \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.Designer.cs b/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.Designer.cs new file mode 100644 index 0000000..41467e4 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace IntuneConnectorForADExtender.ConsoleApp.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ-Extender.ps1")] + public string PSScript { + get { + return ((string)(this["PSScript"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("30130")] + public int EventIdToMonitor { + get { + return ((int)(this["EventIdToMonitor"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ Connector Service")] + public string LogName { + get { + return ((string)(this["LogName"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ Connector Service Source")] + public string LogSource { + get { + return ((string)(this["LogSource"])); + } + } + } +} diff --git a/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.settings b/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.settings new file mode 100644 index 0000000..5bd355b --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/Properties/Settings.settings @@ -0,0 +1,18 @@ + + + + + + ODJ-Extender.ps1 + + + 30130 + + + ODJ Connector Service + + + ODJ Connector Service Source + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/log4net.config b/IntuneConnectorForADExtender.ConsoleApp/log4net.config new file mode 100644 index 0000000..a0d6b10 --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/log4net.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.ConsoleApp/packages.config b/IntuneConnectorForADExtender.ConsoleApp/packages.config new file mode 100644 index 0000000..7554a8a --- /dev/null +++ b/IntuneConnectorForADExtender.ConsoleApp/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Core/BusinessLogic.cs b/IntuneConnectorForADExtender.Core/BusinessLogic.cs new file mode 100644 index 0000000..f75b23d --- /dev/null +++ b/IntuneConnectorForADExtender.Core/BusinessLogic.cs @@ -0,0 +1,82 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Management.Automation; + +namespace IntuneConnectorForADExtender.Core +{ + public partial class BusinessLogic + { + private int EventId = 0; + private int ExecutionId = 0; + private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private EventLog OdjLog = null; + private EntryWrittenEventHandler OdjEventHandler = null; + private string PsScript = null; + public BusinessLogic(String psScript, int eventId, string logName,string logSource) + { + EventId = eventId; + OdjLog = new EventLog(logName, ".", logSource); + EntryWrittenEventHandler eventHandler = new EntryWrittenEventHandler(EventLog_OnEntryWritten); + OdjLog.EnableRaisingEvents = true; + log.Info("Starting Service"); + log.Info("PsScript: " + psScript); + log.Info("EventId: "+eventId); + log.Info("LogName: " + logName); + log.Info("LogSource: " + logSource); + //Validate Script File existance + PsScript = Path.GetFullPath(psScript); + if (!File.Exists(PsScript)) + { + log.Error("Specified PsScript file('"+ PsScript + "') does not exist."); + //throw new Exception("Specified PsScript file does not exist."); + } + + } + public void StartMonitor() + { + log.Info("Starting Eventhandler"); + OdjLog.EntryWritten += new EntryWrittenEventHandler(EventLog_OnEntryWritten); + } + public void StopMonitor() + { + log.Info("Stopping Eventhandler"); + OdjLog.EntryWritten += OdjEventHandler; + } + + + private void EventLog_OnEntryWritten(object source, EntryWrittenEventArgs e) + { + try + { + if (e.Entry.EventID == EventId) + { + + if (File.Exists(PsScript)) + { + Task.Factory.StartNew(() => ExecuteAsynchronously(ExecutionId, e.Entry.Message)); + ExecutionId += 1; + } + else + { + log.Warn("PSScript(" + PsScript + ") does not exist. Process not started."); + } + + } + else + { + log.Debug("not in filter --> EventId " + e.Entry.EventID +" != " + EventId); + } + } + catch (Exception ex) + { + log.Error("Failed to process event " + JsonConvert.SerializeObject(e.Entry), ex); + } + } + } +} diff --git a/IntuneConnectorForADExtender.Core/BusinessLogic_Powershell.cs b/IntuneConnectorForADExtender.Core/BusinessLogic_Powershell.cs new file mode 100644 index 0000000..e791382 --- /dev/null +++ b/IntuneConnectorForADExtender.Core/BusinessLogic_Powershell.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Management.Automation; +using System.Management.Automation.Runspaces; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace IntuneConnectorForADExtender.Core +{ + public partial class BusinessLogic + { + /// + /// Sample execution scenario 2: Asynchronous + /// + /// + /// Executes a PowerShell script asynchronously with script output and event handling. + /// + public void ExecuteAsynchronously(int id, string eventData) + { + using (PowerShell PowerShellInstance = PowerShell.Create()) + { + log.Info("[" + id + "] Starting execution for '"+eventData+ "'."); + + // Prepare Command + Command eventCommand = new Command(PsScript); + CommandParameter eventParam = new CommandParameter("EventData",eventData); + eventCommand.Parameters.Add(eventParam); + + // this script has a sleep in it to simulate a long running script + PowerShellInstance.Commands.AddCommand(eventCommand); + + // prepare a new collection to store output stream objects + PSDataCollection outputCollection = new PSDataCollection(); + + // the streams (Error, Debug, Progress, etc) are available on the PowerShell instance. + // we can review them during or after execution. + // we can also be notified when a new item is written to the stream (like this): + PowerShellInstance.Streams.Error.DataAdded += (sender, e) => Error_DataAdded(sender, e, id); + + + // begin invoke execution on the pipeline + // use this overload to specify an output stream buffer + IAsyncResult result = PowerShellInstance.BeginInvoke(null, outputCollection); + + // do something else until execution has completed. + // this could be sleep/wait, or perhaps some other work + while (result.IsCompleted == false) + { + log.Debug("["+id+"] Waiting for PS pipeline to finish..."); + Thread.Sleep(1000); + } + + log.Info("[" + id + "] Execution has stopped. The pipeline state: " + PowerShellInstance.InvocationStateInfo.State); + if (PowerShellInstance.InvocationStateInfo.State == PSInvocationState.Failed) { + log.Error("[" + id + "] " + PowerShellInstance.InvocationStateInfo.Reason.Message); + } + foreach (PSObject outputItem in outputCollection) + { + log.Debug(outputItem.BaseObject.ToString()); + } + } + } + + /// + /// Event handler for when Data is added to the Error stream. + /// + /// Contains the complete PSDataCollection of all error output items. + /// Contains the index ID of the added collection item and the ID of the PowerShell instance this event belongs to. + void Error_DataAdded(object sender, DataAddedEventArgs e, int id) + { + + // do something when an error is written to the error stream + log.Error("[" + id + "] Error during execution", ((PSDataCollection)sender)[0].Exception); + } + + } +} diff --git a/IntuneConnectorForADExtender.Core/Core.csproj b/IntuneConnectorForADExtender.Core/Core.csproj new file mode 100644 index 0000000..3aabef2 --- /dev/null +++ b/IntuneConnectorForADExtender.Core/Core.csproj @@ -0,0 +1,69 @@ + + + + + Debug + AnyCPU + {6D89C936-382C-475B-A915-9FEF7054173C} + Library + Properties + IntuneConnectorForADExtender.Core + IntuneConnectorForADExtender.Core + v4.6.1 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + + + ..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll + + + + + False + ..\..\..\otelligence\Otelligence.Model\Otelligence.Model\bin\Release\System.Management.Automation.dll + + + + + + + + + + + + + + + + Always + + + Component + Always + + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Core/ODJ-Extender-TestEventGenerator.ps1 b/IntuneConnectorForADExtender.Core/ODJ-Extender-TestEventGenerator.ps1 new file mode 100644 index 0000000..b98136f --- /dev/null +++ b/IntuneConnectorForADExtender.Core/ODJ-Extender-TestEventGenerator.ps1 @@ -0,0 +1,17 @@ +New-EventLog -LogName "ODJ Connector Service" -Source "ODJ Connector Service Source" + +Write-EventLog -LogName "ODJ Connector Service" -Source "ODJ Connector Service Source" -EntryType Information -EventId 30130 -Message '{ + "Metric":{ + "Dimensions":{ + "RequestId":"d302cfe6-b60f-4d56-9f3a-2abbd89c6882", + "DeviceId":"59c1b762-1852-46e0-9ebe-439aab2d17f0", + "DomainName":"XXXXXX", + "MachineName":"HYBDcggLnwOWnRC", + "BlobDataLength":"1312", + "InstanceId":"3B530FA1-F32B-4D61-BAD4-D7211D8603B3", + "DiagnosticCode":"0x00000000", + "DiagnosticText":"Successful" + }, + "Name":"RequestOfflineDomainJoinBlob_Success", + "Value":0 + }}' diff --git a/IntuneConnectorForADExtender.Core/ODJ-Extender.ps1 b/IntuneConnectorForADExtender.Core/ODJ-Extender.ps1 new file mode 100644 index 0000000..af00814 --- /dev/null +++ b/IntuneConnectorForADExtender.Core/ODJ-Extender.ps1 @@ -0,0 +1,285 @@ +<# +.DESCRIPTION +This script will handle additional actions on Hybrid join: + - AD Computer account to specific AD group + - Check if there are existing Computer Objects for the same Serial Number then remove them. Otherwise the rename on this device will fail. + +.EXAMPLE + + +.NOTES +Author: Thomas Kurth/baseVISION +Date: 04.06.2019 + +History + 001: First Version + +ExitCodes: + 99001: Could not Write to LogFile + 99002: Could not Write to Windows Log + 99003: Could not Set ExitMessageRegistry + +#> +[CmdletBinding()] +Param( + [String]$EventData +) +## Manual Variable Definition +######################################################## +$DebugPreference = "Continue" +$ScriptVersion = "001" +$ScriptName = "IntuneConnectorForADExtender-PS" + +$LogFilePathFolder = $env:TEMP +$FallbackScriptPath = "C:\Windows" # This is only used if the filename could not be resolved(IE running in ISE) + + +# Log Configuration +$DefaultLogOutputMode = "Console-LogFile" # "Console-LogFile","Console-WindowsEvent","LogFile-WindowsEvent","Console","LogFile","WindowsEvent","All" +$DefaultLogWindowsEventSource = $ScriptName +$DefaultLogWindowsEventLog = "CustomPS" + +#region Functions +######################################################## + +function Write-Log { + <# + .DESCRIPTION + Write text to a logfile with the current time. + + .PARAMETER Message + Specifies the message to log. + + .PARAMETER Type + Type of Message ("Info","Debug","Warn","Error"). + + .PARAMETER OutputMode + Specifies where the log should be written. Possible values are "Console","LogFile" and "Both". + + .PARAMETER Exception + You can write an exception object to the log file if there was an exception. + + .EXAMPLE + Write-Log -Message "Start process XY" + + .NOTES + This function should be used to log information to console or log file. + #> + param( + [Parameter(Mandatory=$true,Position=1)] + [String] + $Message + , + [Parameter(Mandatory=$false)] + [ValidateSet("Info","Debug","Warn","Error")] + [String] + $Type = "Debug" + , + [Parameter(Mandatory=$false)] + [ValidateSet("Console-LogFile","Console-WindowsEvent","LogFile-WindowsEvent","Console","LogFile","WindowsEvent","All")] + [String] + $OutputMode = $DefaultLogOutputMode + , + [Parameter(Mandatory=$false)] + [Exception] + $Exception + ) + + $DateTimeString = Get-Date -Format "yyyy-MM-dd HH:mm:sszz" + $Output = ($DateTimeString + "`t" + $Type.ToUpper() + "`t" + $Message) + if($Exception){ + $ExceptionString = ("[" + $Exception.GetType().FullName + "] " + $Exception.Message) + $Output = "$Output - $ExceptionString" + } + + if ($OutputMode -eq "Console" -OR $OutputMode -eq "Console-LogFile" -OR $OutputMode -eq "Console-WindowsEvent" -OR $OutputMode -eq "All") { + if($Type -eq "Error"){ + Write-Error $output + } elseif($Type -eq "Warn"){ + Write-Warning $output + } elseif($Type -eq "Debug"){ + Write-Debug $output + } else{ + Write-Verbose $output -Verbose + } + } + + if ($OutputMode -eq "LogFile" -OR $OutputMode -eq "Console-LogFile" -OR $OutputMode -eq "LogFile-WindowsEvent" -OR $OutputMode -eq "All") { + try { + Add-Content $LogFilePath -Value $Output -ErrorAction Stop + } catch { + exit 99001 + } + } + + if ($OutputMode -eq "Console-WindowsEvent" -OR $OutputMode -eq "WindowsEvent" -OR $OutputMode -eq "LogFile-WindowsEvent" -OR $OutputMode -eq "All") { + try { + New-EventLog -LogName $DefaultLogWindowsEventLog -Source $DefaultLogWindowsEventSource -ErrorAction SilentlyContinue + switch ($Type) { + "Warn" { + $EventType = "Warning" + break + } + "Error" { + $EventType = "Error" + break + } + default { + $EventType = "Information" + } + } + Write-EventLog -LogName $DefaultLogWindowsEventLog -Source $DefaultLogWindowsEventSource -EntryType $EventType -EventId 1 -Message $Output -ErrorAction Stop + } catch { + exit 99002 + } + } +} + +function New-Folder{ + <# + .DESCRIPTION + Creates a Folder if it's not existing. + + .PARAMETER Path + Specifies the path of the new folder. + + .EXAMPLE + CreateFolder "c:\temp" + + .NOTES + This function creates a folder if doesn't exist. + #> + param( + [Parameter(Mandatory=$True,Position=1)] + [string]$Path + ) + # Check if the folder Exists + + if (Test-Path $Path) { + Write-Log "Folder: $Path Already Exists" + } else { + New-Item -Path $Path -type directory | Out-Null + Write-Log "Creating $Path" + } +} + +function Set-RegValue { + <# + .DESCRIPTION + Set registry value and create parent key if it is not existing. + + .PARAMETER Path + Registry Path + + .PARAMETER Name + Name of the Value + + .PARAMETER Value + Value to set + + .PARAMETER Type + Type = Binary, DWord, ExpandString, MultiString, String or QWord + + #> + param( + [Parameter(Mandatory=$True)] + [string]$Path, + [Parameter(Mandatory=$True)] + [string]$Name, + [Parameter(Mandatory=$True)] + [AllowEmptyString()] + [string]$Value, + [Parameter(Mandatory=$True)] + [string]$Type + ) + + try { + $ErrorActionPreference = 'Stop' # convert all errors to terminating errors + Start-Transaction + + if (Test-Path $Path -erroraction silentlycontinue) { + + } else { + New-Item -Path $Path -Force + Write-Log "Registry key $Path created" + } + $null = New-ItemProperty -Path $Path -Name $Name -PropertyType $Type -Value $Value -Force + Write-Log "Registry Value $Path, $Name, $Type, $Value set" + Complete-Transaction + } catch { + Undo-Transaction + Write-Log "Registry value not set $Path, $Name, $Value, $Type" -Type Error -Exception $_.Exception + } +} + +#endregion + +#region Dynamic Variables and Parameters +######################################################## + +# Try get actual ScriptName +try{ + $CurrentFileNameTemp = $MyInvocation.MyCommand.Name + If($CurrentFileNameTemp -eq $null -or $CurrentFileNameTemp -eq ""){ + $CurrentFileName = "NotExecutedAsScript" + } else { + $CurrentFileName = $CurrentFileNameTemp + } +} catch { + $CurrentFileName = $LogFilePathScriptName +} +$LogFilePath = "$LogFilePathFolder\{0}_{1}_{2}.log" -f ($ScriptName -replace ".ps1", ''),$ScriptVersion,(Get-Date -uformat %Y%m%d%H%M) +# Try get actual ScriptPath +try{ + try{ + $ScriptPathTemp = Split-Path $MyInvocation.MyCommand.Path + } catch { + + } + if([String]::IsNullOrWhiteSpace($ScriptPathTemp)){ + $ScriptPathTemp = Split-Path $MyInvocation.InvocationName + } + + If([String]::IsNullOrWhiteSpace($ScriptPathTemp)){ + $ScriptPath = $FallbackScriptPath + } else { + $ScriptPath = $ScriptPathTemp + } +} catch { + $ScriptPath = $FallbackScriptPath +} + +#endregion + +#region Initialization +######################################################## + +New-Folder $LogFilePathFolder +Write-Log "Start Script $Scriptname" + + +#endregion + +#region Main Script +######################################################## +try{ + $EventData2 = $EventData | ConvertFrom-Json -ErrorAction stop +} catch { + throw "Input is not formatted in JSON." +} +try{ + Write-Log "Adding '$($EventData2.Metric.Dimensions.MachineName)' to AD group 'sg-MdWP-Computers'" + ADD-ADGroupMember "sg-MdWP-Computers" –members $EventData2.Metric.Dimensions.MachineName +} catch { + Write-Log "Failed to add '$($EventData2.Metric.Dimensions.MachineName)' to AD group 'sg-MdWP-Computers'" -Type Error -Exception $_.Exception +} + + +#endregion + +#region Finishing +######################################################## + +Write-Log "End Script $Scriptname" + +#endregion \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Core/Properties/AssemblyInfo.cs b/IntuneConnectorForADExtender.Core/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..fc783d2 --- /dev/null +++ b/IntuneConnectorForADExtender.Core/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("IntuneConnectorForADExtender.Core")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("IntuneConnectorForADExtender.Core")] +[assembly: AssemblyCopyright("Copyright © 2019 Thomas Kurth")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6d89c936-382c-475b-a915-9fef7054173c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + +[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")] \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Core/log4net.config b/IntuneConnectorForADExtender.Core/log4net.config new file mode 100644 index 0000000..a0d6b10 --- /dev/null +++ b/IntuneConnectorForADExtender.Core/log4net.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Core/packages.config b/IntuneConnectorForADExtender.Core/packages.config new file mode 100644 index 0000000..a93a92c --- /dev/null +++ b/IntuneConnectorForADExtender.Core/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/App.config b/IntuneConnectorForADExtender.Service/App.config new file mode 100644 index 0000000..e2a8939 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/App.config @@ -0,0 +1,27 @@ + + + + +
+ + + + + + + + + C:\Program Files\baseVISION\Intune Connector for AD Extender\ODJ-Extender.ps1 + + + 30130 + + + ODJ Connector Service + + + ODJ Connector Service Source + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/Program.cs b/IntuneConnectorForADExtender.Service/Program.cs new file mode 100644 index 0000000..9008793 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Program.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.ServiceProcess; +using System.Text; +using System.Threading.Tasks; + +namespace IntuneConnectorForADExtender.Service +{ + static class Program + { + /// + /// The main entry point for the application. + /// + static void Main() + { + ServiceBase[] ServicesToRun; + ServicesToRun = new ServiceBase[] + { + new Service() + }; + ServiceBase.Run(ServicesToRun); + } + } +} diff --git a/IntuneConnectorForADExtender.Service/ProjectInstaller.Designer.cs b/IntuneConnectorForADExtender.Service/ProjectInstaller.Designer.cs new file mode 100644 index 0000000..85ac181 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/ProjectInstaller.Designer.cs @@ -0,0 +1,63 @@ +namespace IntuneConnectorForADExtender.Service +{ + partial class ProjectInstaller + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller(); + this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller(); + // + // serviceProcessInstaller1 + // + this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; + this.serviceProcessInstaller1.Password = null; + this.serviceProcessInstaller1.Username = null; + // + // serviceInstaller1 + // + this.serviceInstaller1.Description = "This service is handling ODJ requests and starts a PowerShell Script as defined i" + + "n the Configuration."; + this.serviceInstaller1.DisplayName = "Intune Connector for AD Extender"; + this.serviceInstaller1.ServiceName = "IntuneConnectorForADExtender"; + this.serviceInstaller1.StartType = System.ServiceProcess.ServiceStartMode.Automatic; + this.serviceInstaller1.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_AfterInstall); + this.serviceInstaller1.BeforeUninstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller1_BeforeUninstall); + // + // ProjectInstaller + // + this.Installers.AddRange(new System.Configuration.Install.Installer[] { + this.serviceProcessInstaller1, + this.serviceInstaller1}); + + } + + #endregion + + private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1; + private System.ServiceProcess.ServiceInstaller serviceInstaller1; + } +} \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/ProjectInstaller.cs b/IntuneConnectorForADExtender.Service/ProjectInstaller.cs new file mode 100644 index 0000000..a1312f8 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/ProjectInstaller.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration.Install; +using System.Linq; +using System.ServiceProcess; +using System.Threading.Tasks; + +namespace IntuneConnectorForADExtender.Service +{ + [RunInstaller(true)] + public partial class ProjectInstaller : System.Configuration.Install.Installer + { + public ProjectInstaller() + { + InitializeComponent(); + + } + + + private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e) + { + // Auto Start the Service Once Installation is Finished. + var controller = new ServiceController("IntuneConnectorForADExtender"); + controller.Start(); + } + + private void serviceInstaller1_BeforeUninstall(object sender, InstallEventArgs e) + { + var controller = new ServiceController("IntuneConnectorForADExtender"); + controller.Stop(); + } + } +} diff --git a/IntuneConnectorForADExtender.Service/ProjectInstaller.resx b/IntuneConnectorForADExtender.Service/ProjectInstaller.resx new file mode 100644 index 0000000..4010ff6 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/ProjectInstaller.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 69 + + + 366, 94 + + + False + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/Properties/AssemblyInfo.cs b/IntuneConnectorForADExtender.Service/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..66d8cbc --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("IntuneConnectorForADExtender.Service")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("IntuneConnectorForADExtender.Service")] +[assembly: AssemblyCopyright("Copyright © 2019 Thomas Kurth")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7a5b5f7a-1f59-4321-b232-547a3f7a3b3d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] + +[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")] \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/Properties/Settings.Designer.cs b/IntuneConnectorForADExtender.Service/Properties/Settings.Designer.cs new file mode 100644 index 0000000..8a1255c --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Properties/Settings.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace IntuneConnectorForADExtender.Service.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ-Extender.ps1")] + public string PSScript { + get { + return ((string)(this["PSScript"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("30130")] + public int EventIdToMonitor { + get { + return ((int)(this["EventIdToMonitor"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ Connector Service")] + public string LogName { + get { + return ((string)(this["LogName"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ODJ Connector Service Source")] + public string LogSource { + get { + return ((string)(this["LogSource"])); + } + } + } +} diff --git a/IntuneConnectorForADExtender.Service/Properties/Settings.settings b/IntuneConnectorForADExtender.Service/Properties/Settings.settings new file mode 100644 index 0000000..43719c5 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Properties/Settings.settings @@ -0,0 +1,18 @@ + + + + + + ODJ-Extender.ps1 + + + 30130 + + + ODJ Connector Service + + + ODJ Connector Service Source + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/Service.Designer.cs b/IntuneConnectorForADExtender.Service/Service.Designer.cs new file mode 100644 index 0000000..21dca3f --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Service.Designer.cs @@ -0,0 +1,40 @@ +namespace IntuneConnectorForADExtender.Service +{ + partial class Service + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + // + // IntuneConnectorForADExtender + // + this.ServiceName = "IntuneConnectorForADExtender"; + + } + + #endregion + } +} diff --git a/IntuneConnectorForADExtender.Service/Service.cs b/IntuneConnectorForADExtender.Service/Service.cs new file mode 100644 index 0000000..5d0da8f --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Service.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.ServiceProcess; +using System.Text; +using System.Threading.Tasks; +using IntuneConnectorForADExtender.Core; + +namespace IntuneConnectorForADExtender.Service +{ + public partial class Service : ServiceBase + { + private Core.BusinessLogic bl; + public Service() + { + InitializeComponent(); + var settings = Properties.Settings.Default; + bl = new Core.BusinessLogic(settings.PSScript, settings.EventIdToMonitor, settings.LogName, settings.LogSource); + } + + protected override void OnStart(string[] args) + { + bl.StartMonitor(); + } + + protected override void OnStop() + { + bl.StopMonitor(); + } + } +} diff --git a/IntuneConnectorForADExtender.Service/Service.csproj b/IntuneConnectorForADExtender.Service/Service.csproj new file mode 100644 index 0000000..a7ea139 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Service.csproj @@ -0,0 +1,98 @@ + + + + + Debug + AnyCPU + {7A5B5F7A-1F59-4321-B232-547A3F7A3B3D} + WinExe + IntuneConnectorForADExtender.Service + IntuneConnectorForADExtender.Service + v4.6.1 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\log4net.2.0.8\lib\net45-full\log4net.dll + + + + + + + + + + + + + + + + Component + + + ProjectInstaller.cs + + + True + True + Settings.settings + + + Component + + + Service.cs + + + + + + + + Always + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + ProjectInstaller.cs + + + Service.cs + + + + + {6d89c936-382c-475b-a915-9fef7054173c} + Core + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/Service.resx b/IntuneConnectorForADExtender.Service/Service.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/IntuneConnectorForADExtender.Service/Service.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/log4net.config b/IntuneConnectorForADExtender.Service/log4net.config new file mode 100644 index 0000000..a0d6b10 --- /dev/null +++ b/IntuneConnectorForADExtender.Service/log4net.config @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Service/packages.config b/IntuneConnectorForADExtender.Service/packages.config new file mode 100644 index 0000000..7554a8a --- /dev/null +++ b/IntuneConnectorForADExtender.Service/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/IntuneConnectorForADExtender.Setup/IntuneConnectorForADExtender.Setup.vdproj b/IntuneConnectorForADExtender.Setup/IntuneConnectorForADExtender.Setup.vdproj new file mode 100644 index 0000000..495462b --- /dev/null +++ b/IntuneConnectorForADExtender.Setup/IntuneConnectorForADExtender.Setup.vdproj @@ -0,0 +1,1236 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:IntuneConnectorForADExtender.Setup" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_10D43F74184B4700AEF6320AB406A5A6" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_50A312F123150057A569E13147634EA4" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_50A312F123150057A569E13147634EA4" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_73A05B733BC0019398EA08EE01B14997" + "OwnerKey" = "8:_8F78397E5B149B0EBED80E6DAB4C6A1E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_73A05B733BC0019398EA08EE01B14997" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_73A05B733BC0019398EA08EE01B14997" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8A0C8640DD0B4D9D91B46999079F42B3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + "OwnerKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + "OwnerKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8F78397E5B149B0EBED80E6DAB4C6A1E" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8F78397E5B149B0EBED80E6DAB4C6A1E" + "OwnerKey" = "8:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8F78397E5B149B0EBED80E6DAB4C6A1E" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CAD39FF5018F265F238C6FE0A70ACC98" + "OwnerKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CAD39FF5018F265F238C6FE0A70ACC98" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CAD39FF5018F265F238C6FE0A70ACC98" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_73A05B733BC0019398EA08EE01B14997" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_CEDB485219A1917669E6C58021E3679E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_8F78397E5B149B0EBED80E6DAB4C6A1E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_CAD39FF5018F265F238C6FE0A70ACC98" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_50A312F123150057A569E13147634EA4" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\IntuneConnectorForADExtender.Setup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\IntuneConnectorForADExtender.Setup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1" + { + "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)" + "ProductCode" = "8:.NETFramework,Version=v4.6.1" + } + } + } + } + } + "Deployable" + { + "CustomAction" + { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_6703C5BF97BD46FA8AB7AF6CB6BC3A3F" + { + "Name" = "8:Primary output from Service (Active)" + "Condition" = "8:" + "Object" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "FileType" = "3:2" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_B4EAD4A6_66D9_4C0F_9ADE_52256683B8AD" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_6C9FB4C40C4442FD8FA5754DCE3A1164" + { + "Name" = "8:Primary output from Service (Active)" + "Condition" = "8:" + "Object" = "8:_008E6BF04D3A445CB503E9ABDB1991A5" + "FileType" = "3:2" + "InstallAction" = "3:4" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_01D12220_15F6_4B28_9D52_70A23F3A7C44" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:" + } + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_DBAA75EE88C94248A52A1C9087CAEF3F" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.6.1" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=671728" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_10D43F74184B4700AEF6320AB406A5A6" + { + "SourcePath" = "8:..\\IntuneConnectorForADExtender.Core\\log4net.config" + "TargetName" = "8:log4net.config" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_50A312F123150057A569E13147634EA4" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_50A312F123150057A569E13147634EA4" + { + "Name" = "8:System.Net.Http.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.Http.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_73A05B733BC0019398EA08EE01B14997" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:Microsoft.Management.Infrastructure.Native, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=AMD64" + "ScatterAssemblies" + { + "_73A05B733BC0019398EA08EE01B14997" + { + "Name" = "8:Microsoft.Management.Infrastructure.Native.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Management.Infrastructure.Native.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8A0C8640DD0B4D9D91B46999079F42B3" + { + "SourcePath" = "8:..\\IntuneConnectorForADExtender.Core\\ODJ-Extender.ps1" + "TargetName" = "8:ODJ-Extender.ps1" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8A842E7C04C0A1D01F4968DBD2FF0DE2" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_8A842E7C04C0A1D01F4968DBD2FF0DE2" + { + "Name" = "8:System.Management.Automation.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Management.Automation.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_8ABFFFDD2B8CDBC7B1152A76AC3568AE" + { + "Name" = "8:log4net.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:log4net.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8F78397E5B149B0EBED80E6DAB4C6A1E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:Microsoft.Management.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_8F78397E5B149B0EBED80E6DAB4C6A1E" + { + "Name" = "8:Microsoft.Management.Infrastructure.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Management.Infrastructure.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_CAD39FF5018F265F238C6FE0A70ACC98" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_CAD39FF5018F265F238C6FE0A70ACC98" + { + "Name" = "8:Newtonsoft.Json.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Newtonsoft.Json.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_CEDB485219A1917669E6C58021E3679E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:IntuneConnectorForADExtender.Core, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_CEDB485219A1917669E6C58021E3679E" + { + "Name" = "8:IntuneConnectorForADExtender.Core.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:IntuneConnectorForADExtender.Core.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_07A05D753FD5484BB86283F611BB6876" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_13273269885742CEBFD0B3221B2A9E40" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_C562008C03DC4FCFBBF9384150EA2243" + { + "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:Intune Connector for AD Extender" + "ProductCode" = "8:{FF345146-BD27-43F0-8251-AEC40C3E982D}" + "PackageCode" = "8:{A25D721B-7B3C-4162-986C-867A441B748E}" + "UpgradeCode" = "8:{F1B2A247-01D3-456C-B816-C7B8CB513901}" + "AspNetVersion" = "8:4.0.30319.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:TRUE" + "ProductVersion" = "8:1.0.2" + "Manufacturer" = "8:baseVISION" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:IntuneConnectorForADExtender.Setup" + "Subject" = "8:" + "ARPCONTACT" = "8:Thomas Kurth" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:1" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_4A63B04E1CC648AEB5E333816BAAD60D" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_669D671926714576A9F308DE697BBB26" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_B5D12E5410B14CC382DD3DA1BAC8EBE2" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_B9A7CA2A844842DB9B0932992C19E7CF" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_9509DA12E67A4FB3955FC28584F918D9" + { + "Name" = "8:Intune Connector for AD Extender" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_617FB8B570F441E3A06FF6D98D1C52F7" + "Folder" = "8:_07A05D753FD5484BB86283F611BB6876" + "WorkingFolder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Icon" = "8:" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_1C44CE91DFD440CC8F783803EAC5303B" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_2584D300B0FB478B8DFC60725F565D51" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_28871C9E53B944E08CE3B0FDAD2A2F95" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_44A9CEAF0B924C3AB50DD6121DE33C7B" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8D64E4E199A840CBBB619E39501C7E45" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_944906D235B24BB38D7C28145A64F88D" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_C5121FF6E78F4FD3B238BDA788F2300A" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_85602B762F7E45EB82AFB42029918445" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DA2B87D62F994A949FC1D54C0CA38613" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0F78CD7BD3794A83A424AC27222EB46B" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3F5C58D881734EA9AA822576D27E43C9" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_F09B79265A934BC795E098FA721DC377" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:0" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_EC368A2A91B04AB99BD52C0410A826B1" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_28547E6B6760463A8ABFE5316D374E98" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_387AA930941245E8956F5B3E39106964" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_43BFA636F46A433ABB74C4166C9BFB00" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_FC9E31CC50034AE09E5B71CD92D22BC2" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_91944B96968647C59DE5BFBD2243BAA3" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_008E6BF04D3A445CB503E9ABDB1991A5" + { + "SourcePath" = "8:..\\IntuneConnectorForADExtender.Service\\obj\\Debug\\IntuneConnectorForADExtender.Service.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_617FB8B570F441E3A06FF6D98D1C52F7" + { + "SourcePath" = "8:..\\IntuneConnectorForADExtender.ConsoleApp\\obj\\Debug\\IntuneConnectorForADExtender.ConsoleApp.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_C562008C03DC4FCFBBF9384150EA2243" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{B46676CB-5790-4EF0-B231-1100C01CD779}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/IntuneConnectorForADExtender.sln b/IntuneConnectorForADExtender.sln new file mode 100644 index 0000000..8166bfa --- /dev/null +++ b/IntuneConnectorForADExtender.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.645 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Service", "IntuneConnectorForADExtender.Service\Service.csproj", "{7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "IntuneConnectorForADExtender.Core\Core.csproj", "{6D89C936-382C-475B-A915-9FEF7054173C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp", "IntuneConnectorForADExtender.ConsoleApp\ConsoleApp.csproj", "{B46676CB-5790-4EF0-B231-1100C01CD779}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "IntuneConnectorForADExtender.Setup", "IntuneConnectorForADExtender.Setup\IntuneConnectorForADExtender.Setup.vdproj", "{F9B12EF2-0E43-4F40-8314-1B9DB6DB02C8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7A5B5F7A-1F59-4321-B232-547A3F7A3B3D}.Release|Any CPU.Build.0 = Release|Any CPU + {6D89C936-382C-475B-A915-9FEF7054173C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6D89C936-382C-475B-A915-9FEF7054173C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6D89C936-382C-475B-A915-9FEF7054173C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6D89C936-382C-475B-A915-9FEF7054173C}.Release|Any CPU.Build.0 = Release|Any CPU + {B46676CB-5790-4EF0-B231-1100C01CD779}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B46676CB-5790-4EF0-B231-1100C01CD779}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B46676CB-5790-4EF0-B231-1100C01CD779}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B46676CB-5790-4EF0-B231-1100C01CD779}.Release|Any CPU.Build.0 = Release|Any CPU + {F9B12EF2-0E43-4F40-8314-1B9DB6DB02C8}.Debug|Any CPU.ActiveCfg = Debug + {F9B12EF2-0E43-4F40-8314-1B9DB6DB02C8}.Release|Any CPU.ActiveCfg = Release + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A695DA86-35A5-466C-B685-3D0288E08DCF} + EndGlobalSection +EndGlobal