/// <summary> /// Begins the processing. /// </summary> protected override void BeginProcessing() { try { // Get the directory where the service is installed RegistryKey subKey = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\services\\CloudInit"); String imagePath = subKey.GetValue("ImagePath") as String; String directory = imagePath.Replace("CloudInit.exe", String.Empty); // Load all the assemblies and scan the types CIAssemblyLoader.Configure(directory); // Make a list of all the providers Hashtable providers = new Hashtable(); foreach (var type in CIAssemblyLoader.ScanFor <INotificationProvider>()) { INotificationProvider obj = Activator.CreateInstance(type) as INotificationProvider; if (obj.ProviderName == this.providerName) { obj.Remove(); WriteObject("OK-ProviderRemoved"); return; } } // Provider was not found WriteObject("Error-NoProviderFound"); } catch (Exception ex) { WriteError(new ErrorRecord(ex, String.Empty, ErrorCategory.InvalidOperation, this)); } }