using LANCommander.SDK; using LANCommander.SDK.Helpers; using System.Management.Automation; namespace LANCommander.PowerShell.Cmdlets { [Cmdlet(VerbsData.ConvertTo, "StringBytes")] [OutputType(typeof(byte[]))] public class ConvertToStringBytesCmdlet : Cmdlet { [Parameter(Mandatory = true, Position = 0, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true)] public string Input { get; set; } [Parameter] public bool Utf16 { get; set; } = false; [Parameter] public bool BigEndian { get; set; } = false; [Parameter] public int MaxLength { get; set; } = 0; [Parameter] public int MinLength { get; set; } = 0; protected override void ProcessRecord() { byte[] output; if (MaxLength > 0 && Input.Length > MaxLength) Input = Input.Substring(0, MaxLength); if (MinLength > 0 && MinLength < MaxLength) Input = Input.PadRight(MinLength, '\0'); else if (MinLength > 0) Input = Input.PadRight(MaxLength, '\0'); if (Utf16 && BigEndian) output = System.Text.Encoding.BigEndianUnicode.GetBytes(Input); else if (Utf16) output = System.Text.Encoding.Unicode.GetBytes(Input); else output = System.Text.Encoding.ASCII.GetBytes(Input); WriteObject(output); } } }