다음 코드를 사용하여 C#을 사용하여 PowerShell 용 사용자 지정 Cmdlet을 만들려고합니다. 내 사용자 지정 cmdlet로 할 일은 사용자가 두 개의 매개 변수를 사용하여 호출해야합니다. 첫 번째 매개 변수는 -Text 또는 -File 또는 -Dir이어야하며 다음 매개 변수는 값을 지정하는 문자열이어야합니다 텍스트, 파일 또는 디렉토리. 내가 볼 수있는 한 그것은 잘 작동합니다. 그러나 내가 원하는 것을 성취하는 데 사용할 수있는 또 다른 간단한 방법이나보다 우아한 방법이 있는지 궁금합니다. 또는 내 솔루션을 얻을 수있는 가장 간단합니까? 그건 그렇고, SHA256Text, SHA256File 및 SHA256Directory는 필자가 작성한 사용자 정의 함수이므로 걱정하지 마십시오.SwitchParameter를 사용하는 PowerShell 사용자 지정 Cmdlet
using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
using System.Management.Automation;
namespace PSSL
{
[Cmdlet(VerbsCommon.Get, "SHA256")]
public class GetSHA256 : PSCmdlet
{
#region Members
private bool text;
private bool file;
private bool directory;
private string argument;
#endregion
#region Parameters
[Parameter(Mandatory = true, Position = 0, ParameterSetName = "Text")]
public SwitchParameter Text
{
get { return text; }
set { text = value; }
}
[Parameter(Mandatory = true, Position = 0, ParameterSetName = "File")]
public SwitchParameter File
{
get { return file; }
set { file = value; }
}
[Parameter(Mandatory = true, Position = 0, ParameterSetName = "Directory")]
public SwitchParameter Dir
{
get { return directory; }
set { directory = value; }
}
[Parameter(Mandatory = true, Position = 1)]
[ValidateNotNullOrEmpty]
public string Argument
{
get { return argument; }
set { argument = value; }
}
#endregion
#region Override Methods
protected override void ProcessRecord()
{
switch(ParameterSetName)
{
case "Text":
SHA256Text(argument);
break;
case "File":
SHA256File(argument);
break;
case "Directory":
SHA256Directory(argument);
break;
default:
throw new ArgumentException("Error: Bad parameter name.");
}
}
#endregion
}
}