public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String DisplayName = request.Inputs["Display Name"].AsString(); String Description = request.Inputs["Description"].AsString(); String InformativeURL = request.Inputs["Informative URL"].AsString(); String LocaleID = request.Inputs["LocaleID"].AsString(); String UpdatesList = request.Inputs["Updates List (CSV)"].AsString(); //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CM2012Interop.connectSCCMServer(SCCMServer, userName, password); using (connection) { try { IResultObject col = CM2012Interop.createSCCMAuthorizationList(connection, DisplayName, Description, InformativeURL, LocaleID, UpdatesList); if (col != null) { response.WithFiltering().PublishRange(getObjects(col)); } } catch (Exception ex) { response.LogErrorMessage(ex.Message); } response.Publish("Number of Packages", ObjCount); } }
public void Execute(IActivityRequest request, IActivityResponse response) { String results = "Success"; String KeyPath = request.Inputs["Key Path: HKLM:\\"].AsString(); String ServerName = request.Inputs["Server Name"].AsString(); try { RegistryKey rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName); rk.DeleteSubKeyTree(KeyPath); rk.OpenSubKey(KeyPath); if (rk.Name == null) { results = "Success"; } else { results = "Failure"; } } catch (Exception ex) { response.LogErrorMessage(ex.Message.ToString()); throw ex; } response.Publish("Results", results); }
public void Execute(IActivityRequest request, IActivityResponse response) { string destinationFile = request.Inputs["Destination Location"].AsString(); string originZip = request.Inputs["Origin Zip"].AsString(); string destinationExistsChoice = request.Inputs["If the Destination Files Exist"].AsString(); int numberOfFiles = 0; bool warn = false; String warnMessage = String.Empty; DirectoryInfo DestinationFolder = new DirectoryInfo(destinationFile); FileInfo zipFile = new FileInfo(originZip); if (zipFile.Exists) { if (!DestinationFolder.Exists) { DestinationFolder.Create(); } using (ZipFile zip1 = ZipFile.Read(zipFile.FullName.ToString())) { foreach (ZipEntry e in zip1) { numberOfFiles = numberOfFiles + 1; try { switch (destinationExistsChoice) { case "Overwrite": e.Extract(DestinationFolder.ToString(), ExtractExistingFileAction.OverwriteSilently); break; case "Do not overwrite": e.Extract(DestinationFolder.ToString(), ExtractExistingFileAction.DoNotOverwrite); break; default: e.Extract(DestinationFolder.ToString(), ExtractExistingFileAction.OverwriteSilently); break; } } catch (Exception error) { warn = true; warnMessage += error.Message + "\n"; } } } } else { response.LogErrorMessage("Cannot find Zip file " + request.Inputs["Origin Zip"].AsString()); } response.Publish("Destination Location", DestinationFolder.FullName.ToString()); response.Publish("Number of files decompressed", numberOfFiles.ToString()); if (warn) { response.LogWarningMessage(warnMessage); } }
public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String varType = request.Inputs["Variable Name"].AsString(); MachineName = request.Inputs["Machine Name"].AsString(); String resourceID = String.Empty; if (request.Inputs.Contains("Resource ID")) { resourceID = request.Inputs["Resource ID"].AsString(); } //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CMInterop.connectSCCMServer(SCCMServer, userName, password); using (connection) { //Get Computer Object IResultObject computerObj = null; IResultObject col = null; if (resourceID.Equals(String.Empty)) { col = CMInterop.getSCCMComputer(connection, "", MachineName, ""); } else { col = CMInterop.getSCCMComputer(connection, resourceID, "", ""); } foreach (IResultObject c in col) { computerObj = c; if (computerObj != null) { //Get Variables from Comoputer Object List <IResultObject> variableCollection = CMInterop.getSCCMComputerVariables(connection, computerObj["ResourceID"].IntegerValue.ToString()); if (variableCollection != null) { response.WithFiltering().PublishRange(getComputerVariables(variableCollection)); response.Publish("Number of Machine Variables", variableCollection.Count); } response.Publish("Number of Machine Variables", 0); } else { response.LogErrorMessage("Could Not Find Computer " + MachineName); } } } }
public void Execute(IActivityRequest request, IActivityResponse response) { String RunbookIdentifier = request.Inputs["Runbook Identifier"].AsString(); String IdentifierType = request.Inputs["Identifier Type"].AsString(); String jobStatus = String.Empty; if (request.Inputs.Contains("Job Status")) { jobStatus = request.Inputs["Job Status"].AsString(); } OrchestratorContext sco = new OrchestratorContext(new Uri(Credentials.OrchestratorServiceURL)); sco.Credentials = new NetworkCredential(Credentials.UserName, Credentials.Password, Credentials.Domain); sco.MergeOption = MergeOption.OverwriteChanges; JobInstance[] jobInstance = new JobInstance[0]; switch (IdentifierType) { case "Runbook Path": if (jobStatus.Equals(String.Empty)) { jobInstance = SCOrch.getRunbookJobInstances(sco, RunbookIdentifier); } else { jobInstance = SCOrch.getRunbookJobInstances(sco, RunbookIdentifier, jobStatus); } break; case "Runbook GUID": Guid runbookGUID = new Guid(RunbookIdentifier); if (jobStatus.Equals(String.Empty)) { jobInstance = SCOrch.getRunbookJobInstances(sco, runbookGUID); } else { jobInstance = SCOrch.getRunbookJobInstances(sco, runbookGUID, jobStatus); } break; default: response.LogErrorMessage("Must choose Runbook Path or Runbook GUID as an Identifier Type"); break; } response.WithFiltering().PublishRange(parseResults(jobInstance)); response.Publish("Number of Jobs", numberOfJobs); }
public void Execute(IActivityRequest request, IActivityResponse response) { String results = ""; String KeyPath = request.Inputs["Key Path: HKLM:\\"].AsString(); String ServerName = request.Inputs["Server Name"].AsString(); String ValueName = request.Inputs["Value Name"].AsString(); String NewValue = request.Inputs["New Value"].AsString(); string registryHive = "default"; if (request.Inputs.Contains("Registry Hive")) { registryHive = request.Inputs["Registry Hive"].AsString(); } try { RegistryKey rk; switch (registryHive.ToLower()) { case "32 Bit": //rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName, RegistryView.Registry32); rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName); break; case "64 Bit": //rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName, RegistryView.Registry64); rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName); break; default: rk = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName); break; } RegistryKey sk = rk.CreateSubKey(KeyPath); sk.SetValue(ValueName, NewValue); results = sk.GetValue(ValueName).ToString(); } catch (Exception ex) { response.LogErrorMessage(ex.Message.ToString()); throw ex; } response.Publish("Results", results); }
public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String objID = request.Inputs["Collection ID"].AsString(); String membershipType = request.Inputs["Direct Membership Type"].AsString(); int resourceID = (int)request.Inputs["ResourceID"].AsUInt32(); //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CM2012Interop.connectSCCMServer(SCCMServer, userName, password); using (connection) { switch (membershipType) { case "System": CM2012Interop.addDirectSCCMCollectionMemberMachine(connection, objID, resourceID); break; case "User": CM2012Interop.addDirectSCCMCollectionMemberUser(connection, objID, resourceID); break; case "User Group": CM2012Interop.addDirectSCCMCollectionMemberUserGroup(connection, objID, resourceID); break; default: response.LogErrorMessage("Invalid Direct Membership Type"); break; } IResultObject col = null; col = CM2012Interop.getSCCMCollection(connection, "CollectionID LIKE '" + objID + "'"); if (col != null) { response.WithFiltering().PublishRange(getObjects(col)); } response.Publish("Number of Collections", ObjCount); } }
public void Execute(IActivityRequest request, IActivityResponse response) { String sourcePath = request.Inputs["Source File Path"].AsString(); String savePath = request.Inputs["Destination File Path"].AsString(); bool overwriteLocal = Convert.ToBoolean(request.Inputs["Overwrite Local File"].AsString()); using (FtpConnection ftp = new FtpConnection(settings.FtpServer, settings.Port, settings.UserName, settings.Password)) { ftp.Open(); ftp.Login(); if (ftp.FileExists(sourcePath)) { ftp.GetFile(sourcePath, savePath, overwriteLocal); } else { response.LogErrorMessage("File does not exist at " + sourcePath); } } }
public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String machineName = request.Inputs["Machine Name"].AsString(); String variableName = request.Inputs["Variable Name"].AsString(); //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CMInterop.connectSCCMServer(SCCMServer, userName, password); using (connection) { //Get Computer Object IResultObject computerObj = null; IResultObject col = CMInterop.getSCCMComputer(connection, "", machineName, ""); foreach (IResultObject c in col) { computerObj = c; break; } if (computerObj != null) { CMInterop.deleteSCCMComputerVariable(connection, variableName, computerObj["ResourceID"].StringValue); response.Publish("Variable Name", variableName); response.Publish("Machine Name", machineName); } else { response.LogErrorMessage("Could not find machine " + machineName); } } }
public void Execute(IActivityRequest request, IActivityResponse response) { string originFolder = request.Inputs["Origin Folder"].AsString(); string destinationFile = request.Inputs["Destination File"].AsString(); string destinationExistsChoice = request.Inputs["If the Destination Archive already exists"].AsString(); string compressionLevel = request.Inputs["Compression Level"].AsString(); FileInfo destFile = new FileInfo(destinationFile); if (destFile.Exists) { switch (destinationExistsChoice) { case "Add Files to Existing Archive": using (ZipFile zipFile = new ZipFile(destFile.FullName)) { DirectoryInfo origFolder = new DirectoryInfo(originFolder); zipFile.AddItem(origFolder.FullName.ToString()); int count = zipFile.Count; switch (compressionLevel) { case "None": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.None; break; case "Low": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Level1; break; case "Medium": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Default; break; case "High": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; break; default: break; } zipFile.Save(); response.Publish("Archive Name and Path", destinationFile); } break; default: case "Overwrite Existing Archive": destFile.Delete(); using (ZipFile zipFile = new ZipFile()) { DirectoryInfo origFolder = new DirectoryInfo(originFolder); zipFile.AddItem(origFolder.FullName.ToString()); switch (compressionLevel) { case "None": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.None; break; case "Low": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Level1; break; case "Medium": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Default; break; case "High": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; break; } zipFile.Save(); response.Publish("Archive Name and Path", destinationFile); } break; case "Fail if the Archive Exists": response.LogErrorMessage("File Archive already Exists"); throw new Exception("File Archive already Exists"); case "Create a unique named Archive": destinationFile = destinationFile + DateTime.Now.ToString(); using (ZipFile zipFile = new ZipFile(destinationFile)) { DirectoryInfo origFolder = new DirectoryInfo(originFolder); zipFile.AddItem(origFolder.FullName.ToString()); switch (compressionLevel) { case "None": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.None; break; case "Low": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Level1; break; case "Medium": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Default; break; case "High": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; break; default: break; } zipFile.Save(); response.Publish("Archive Name and Path", destinationFile); } break; } } else { using (ZipFile zipFile = new ZipFile(destFile.FullName)) { DirectoryInfo origFolder = new DirectoryInfo(originFolder); zipFile.AddItem(origFolder.FullName.ToString()); switch (compressionLevel) { case "None": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.None; break; case "Low": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Level1; break; case "Medium": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.Default; break; case "High": zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; break; default: break; } zipFile.Save(); response.Publish("Archive Name and Path", destinationFile); } } }
public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String pkgID = request.Inputs["Existing Package ID"].AsString(); String selectionMethod = request.Inputs["Distribution Point Selection Method"].AsString(); String criteria = request.Inputs["Selection Criteria"].AsString(); String NALPathQuery = request.Inputs["NAL Path Query (Single DP)"].AsString(); //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CMInterop.connectSCCMServer(SCCMServer, userName, password); using (connection) { switch (selectionMethod) { case "Single Distribution Point": if (criteria.Equals(String.Empty) || NALPathQuery.Equals(String.Empty)) { response.LogErrorMessage("Must use optional property 'Selection Criteria' with Single DP Selection. Criteria should be DP Name to refresh Package at. Must also provide a NALPathQuery"); } else { IResultObject obj = CMInterop.getSCCMComputer(connection, "", criteria, ""); foreach (IResultObject comp in obj) { system DP = new system(comp); bool success = false; foreach (String siteCode in DP.AgentSite.Split(',')) { try { CMInterop.refreshSCCMPackageAtDistributionPoint(connection, pkgID, siteCode, criteria, NALPathQuery); success = true; break; } catch { } } if (!success) { throw new Exception("Failed to remove package to DP"); } } } break; case "Distribution Point Group": if (criteria.Equals(String.Empty)) { response.LogErrorMessage("Must use optional property 'Selection Criteria' with DP Group Selection. Criteria should be DP Group Name to refresh Package at"); } else { CMInterop.refreshSCCMPackageAtDistributionPointGroup(connection, pkgID, criteria); } break; case "All Distribution Points": CMInterop.refreshSCCMPackageAtAllDistributionPoints(connection, pkgID); break; } response.Publish("Package ID", pkgID); } }
public void Execute(IActivityRequest request, IActivityResponse response) { String computerName = request.Inputs["Computer Name"].AsString(); String localGroupName = request.Inputs["Local Group Name"].AsString(); String userName = request.Inputs["User Name"].AsString(); String domain = request.Inputs["Domain"].AsString(); String aUserName = String.Empty; String aUserDomain = String.Empty; String aUserPassword = String.Empty; if (request.Inputs.Contains("Alternate Connection Username")) { aUserName = request.Inputs["Alternate Connection Username"].AsString(); } if (request.Inputs.Contains("Alternate Connection User Domain")) { aUserDomain = request.Inputs["Alternate Connection User Domain"].AsString(); } if (request.Inputs.Contains("Alternate Connection Password")) { aUserPassword = request.Inputs["Alternate Connection Password"].AsString(); } try { DirectoryEntry AD; if (aUserName.Equals(String.Empty) || aUserDomain.Equals(String.Empty) || aUserPassword.Equals(String.Empty)) { AD = new DirectoryEntry("WinNT://" + computerName + ",computer"); } else { AD = new DirectoryEntry("WinNT://" + computerName + ",computer", string.Format("{0}@{1}", aUserName, aUserDomain), aUserPassword); } if (domain != null) { DirectoryEntry Domain; if (aUserName.Equals(String.Empty) || aUserDomain.Equals(String.Empty) || aUserPassword.Equals(String.Empty)) { Domain = new DirectoryEntry("WinNT://" + domain); } else { Domain = new DirectoryEntry("WinNT://" + domain, string.Format("{0}@{1}", aUserName, aUserDomain), aUserPassword); } DirectoryEntry user = Domain.Children.Find(userName, "User"); DirectoryEntry grp = AD.Children.Find(localGroupName, "group"); if (grp != null) { grp.Invoke("Add", new object[] { user.Path.ToString() }); grp.Close(); response.Publish("Group Name", localGroupName); response.Publish("User Name", user.Path.ToString()); } else { response.ReportErrorEvent("Failed to find local group", ""); throw new Exception("Failed to find local group"); } } else { DirectoryEntry user = AD.Children.Find(userName, "User"); DirectoryEntry grp = AD.Children.Find(localGroupName, "group"); if (grp != null) { grp.Invoke("Add", new object[] { user.Path.ToString() }); grp.Close(); response.Publish("Group Name", localGroupName); response.Publish("User Name", user.Path.ToString()); } else { response.LogErrorMessage("Failed to find local group"); throw new Exception("Failed to find local group"); } } } catch (Exception ex) { response.LogErrorMessage("Failed to add user to local group\n" + ex.Message.ToString()); throw ex; } }
public void Execute(IActivityRequest request, IActivityResponse response) { SCCMServer = settings.SCCMSERVER; userName = settings.UserName; password = settings.Password; String machineName = request.Inputs["Machine Name"].AsString(); String variableName = request.Inputs["Variable Name"].AsString(); String variableValue = request.Inputs["Variable Value"].AsString(); String machineSite = String.Empty; String resourceID = String.Empty; if (request.Inputs.Contains("Machine Site")) { machineSite = request.Inputs["Machine Site"].AsString(); } if (request.Inputs.Contains("Resource ID")) { resourceID = request.Inputs["Resource ID"].AsString(); } //Setup WQL Connection and WMI Management Scope WqlConnectionManager connection = CM2012Interop.connectSCCMServer(SCCMServer, userName, password); using (connection) { //Get Computer Object IResultObject computerObj = null; IResultObject col = null; if (resourceID.Equals(String.Empty)) { col = CM2012Interop.getSCCMComputer(connection, "", machineName, ""); } else { col = CM2012Interop.getSCCMComputer(connection, resourceID, "", ""); } foreach (IResultObject c in col) { computerObj = c; if (computerObj != null) { if (machineSite.Equals(String.Empty)) { String SiteCode = determineComputerSiteCode(computerObj); CM2012Interop.createSCCMComputerVariable(connection, SiteCode, variableName, variableValue, false, computerObj["ResourceID"].IntegerValue); } else { CM2012Interop.createSCCMComputerVariable(connection, machineSite, variableName, variableValue, false, computerObj["ResourceID"].IntegerValue); } response.Publish("Variable Name", variableName); response.Publish("Variable Value", variableValue); response.Publish("Machine Name", machineName); } else { response.LogErrorMessage("Could not find machine " + machineName); } } } }