Skip to content

NuGet package for executing PowerShell commands with strong typing

License

Notifications You must be signed in to change notification settings

kysect/PowerShellRunner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PowerShellRunner

PowerShellRunner - это библиотека для типизированной работы с PowerShell.

Пример типизированного описания командлета в коде:

public class ConvertToSecureStringCmdlet : IPowerShellCmdlet<SecureString>
{
    public string CmdletName => "ConvertTo-SecureString";

    public IPowerShellCmdletParameter<string> String { get; }
    public IPowerShellCmdletParameter<SwitchParameter> AsPlainText { get; }
    public IPowerShellCmdletParameter<SwitchParameter> Force { get; }
}

Пример формирования комнады:

ConvertToSecureStringCmdlet cmdlet =
    new ConvertToSecureStringCmdlet()
        .Set(c => c.String, "Value")
        .Set(c => c.AsPlainText, true)
        .Set(c => c.Force, false);

PowerShellQuery query = cmdlet.BuildFromCmdlet();

// query.Query: ConvertTo-SecureString -String "Value" -AsPlainText

Пример выполнения комнады с сохранением в переменную:

PowerShellVariable<SecureString> result =
    powerShellAccessor
        .SelectCmdlet(cmdlet)
        .ExecuteAndSetTo("$converted_string");

При выполнении командлета автоматически резолвится тип результата / тип переменной в которую будет записан результат. В дальнейшем переменную можно передавать в другие командлеты:

public class SomeOtherCmdlet : IPowerShellCmdlet<string>
{
    public string CmdletName => "Some-Other";

    public IPowerShellCmdletParameter<SecureString> String { get; }
}

PowerShellVariable<SecureString> convertedString =
    powerShellAccessor
        .SelectCmdlet(cmdlet)
        .ExecuteAndSetTo("$converted_string");

SomeOtherCmdlet otherCmdlet =
    new SomeOtherCmdlet()
        .Set(c => c.String, convertedString);

IReadOnlyCollection<string> result =
    powerShellAccessor
        .SelectCmdlet(otherCmdlet)
        .Execute();

About

NuGet package for executing PowerShell commands with strong typing

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages