DSInternals/Src/DSInternals.PowerShell/Commands/Datastore/SetADDBPrimaryGroupCommand.cs
2019-06-14 07:44:02 +02:00

59 lines
2.4 KiB
C#

using DSInternals.Common.Data;
using DSInternals.DataStore;
using DSInternals.PowerShell.Properties;
using System;
using System.Management.Automation;
namespace DSInternals.PowerShell.Commands
{
[Cmdlet(VerbsCommon.Set, "ADDBPrimaryGroup")]
[OutputType("None")]
public class SetADDBPrimaryGroupCommand : ADDBModifyPrincipalCommandBase
{
[Parameter(Mandatory = true, ValueFromPipelineByPropertyName = true)]
[Alias("gid", "Group", "PrimaryGroup", "GroupId")]
[ValidateRange(DirectoryAgent.RidMin, DirectoryAgent.RidMax)]
public int PrimaryGroupId
{
get;
set;
}
protected override void ProcessRecord()
{
//TODO: Exception handling: Object not found, malformed DN, ...
// TODO: Extract as Resource
string verboseMessage = "Setting the primary group of account {0}.";
bool hasChanged;
switch (this.ParameterSetName)
{
case parameterSetByDN:
this.WriteVerbose(String.Format(verboseMessage, this.DistinguishedName));
var dn = new DistinguishedName(this.DistinguishedName);
hasChanged = this.DirectoryAgent.SetPrimaryGroupId(dn, this.PrimaryGroupId, this.SkipMetaUpdate);
break;
case parameterSetByName:
this.WriteVerbose(String.Format(verboseMessage, this.SamAccountName));
hasChanged = this.DirectoryAgent.SetPrimaryGroupId(this.SamAccountName, this.PrimaryGroupId, this.SkipMetaUpdate);
break;
case parameterSetByGuid:
this.WriteVerbose(String.Format(verboseMessage, this.ObjectGuid));
hasChanged = this.DirectoryAgent.SetPrimaryGroupId(this.ObjectGuid, this.PrimaryGroupId, this.SkipMetaUpdate);
break;
case parameterSetBySid:
this.WriteVerbose(String.Format(verboseMessage, this.ObjectSid));
hasChanged = this.DirectoryAgent.SetPrimaryGroupId(this.ObjectSid, this.PrimaryGroupId, this.SkipMetaUpdate);
break;
default:
// This should never happen:
throw new PSInvalidOperationException(Resources.InvalidParameterSetMessage);
}
this.WriteVerboseResult(hasChanged);
}
}
}