49 lines
1.8 KiB
C#
49 lines
1.8 KiB
C#
using System;
|
|
using System.Management.Automation;
|
|
|
|
namespace Lithnet.CredentialProvider.RegistrationTool
|
|
{
|
|
[Cmdlet(VerbsCommon.Get, "CredentialProvider", DefaultParameterSetName = "None")]
|
|
public class GetCredentialProviderCmdlet : PSCmdlet
|
|
{
|
|
[Parameter(ParameterSetName = "GetByFileName")]
|
|
public string File { get; set; }
|
|
|
|
[Parameter(ParameterSetName = "GetByClsid")]
|
|
public Guid Clsid { get; set; }
|
|
|
|
[Parameter(ParameterSetName = "GetByProgId")]
|
|
public string ProgId { get; set; }
|
|
|
|
protected override void ProcessRecord()
|
|
{
|
|
if (this.ParameterSetName == "None")
|
|
{
|
|
foreach (var item in CredentialProviderRegistrationServices.GetCredentalProviders())
|
|
{
|
|
this.WriteObject(item);
|
|
}
|
|
}
|
|
else if (this.ParameterSetName == "GetByFileName")
|
|
{
|
|
var assembly = CredentialProviderRegistrationServices.LoadAssembly(this.File);
|
|
|
|
foreach (var type in CredentialProviderRegistrationServices.GetCredentialProviders(assembly))
|
|
{
|
|
CredentialProviderRegistrationServices.GetCredentialProvider(type);
|
|
this.WriteVerbose($"Got credential provider {type.FullName}");
|
|
}
|
|
}
|
|
else if (this.ParameterSetName == "GetByClsid")
|
|
{
|
|
CredentialProviderRegistrationServices.GetCredentialProvider(this.Clsid);
|
|
}
|
|
else if (this.ParameterSetName == "GetByProgId")
|
|
{
|
|
var clsid = CredentialProviderRegistrationServices.GetClsidFromProgId(this.ProgId);
|
|
CredentialProviderRegistrationServices.GetCredentialProvider(clsid);
|
|
}
|
|
}
|
|
}
|
|
}
|