Here’s my Add-UserDefinedEvent PowerShell cmdlet as an example of doing this using the SDK components and strong typed Milestone objects:
using System;
using System.Management.Automation;
using VideoOS.Platform.ConfigurationItems;
namespace MilestonePSTools.EventCommands
{
[Cmdlet(VerbsCommon.Add, nameof(UserDefinedEvent))]
[OutputType(typeof(UserDefinedEvent))]
public class AddUserDefinedEvent : ConfigApiCmdlet
{
[Parameter(Position = 1, Mandatory = true)]
public string Name { get; set; }
protected override void ProcessRecord()
{
try
{
var ms = new ManagementServer(Connection.CurrentSite.FQID.ServerId);
var task = ms.UserDefinedEventFolder.AddUserDefinedEvent(Name);
WriteObject(new UserDefinedEvent(Connection.CurrentSite.FQID.ServerId, task.Path));
}
catch (Exception ex)
{
WriteExceptionError(ex);
}
}
}
}
It can also be done using the Configuration API directly which is what these underlying types (ManagementServer, UserDefinedEventFolder and so on) are using under the surface.