AutomationIoC.PSCmdlets 2.0.0-preview1

This is a prerelease version of AutomationIoC.PSCmdlets.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package AutomationIoC.PSCmdlets --version 2.0.0-preview1                
NuGet\Install-Package AutomationIoC.PSCmdlets -Version 2.0.0-preview1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AutomationIoC.PSCmdlets" Version="2.0.0-preview1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AutomationIoC.PSCmdlets --version 2.0.0-preview1                
#r "nuget: AutomationIoC.PSCmdlets, 2.0.0-preview1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AutomationIoC.PSCmdlets as a Cake Addin
#addin nuget:?package=AutomationIoC.PSCmdlets&version=2.0.0-preview1&prerelease

// Install AutomationIoC.PSCmdlets as a Cake Tool
#tool nuget:?package=AutomationIoC.PSCmdlets&version=2.0.0-preview1&prerelease                

Nuget Version Nuget Downloads Continuous Integration


Dependency Injection Framework for C# PowerShell Cmdlets


Getting Started


dotnet add package AutomationIoC.PSCmdlets


See Sample Projects for a full sample solution

Add the following to your .csproj file


Add a Startup class

public class Startup : IoCStartup
    // Add any configuration sources or data needed
    public override void Configure(IConfigurationBuilder configurationBuilder)
        // AutomationEnvironment class allows retrieving global PowerShell
        // variables during service configuration.
        var environment =

        var appSettings = new Dictionary<string, string>()
            ["TestOptionsConfig:TestProperty"] = "This is an example",
            ["AppEnvironment"] = environment


    // Configure services/lifetimes
    public override void ConfigureServices(IServiceCollection services)

        services.AddTransient<ITestDependencyOne, TestDependencyOne>();
        services.AddTransient<ITestDependencyTwo, TestDependencyTwo>();
        // ...
        // other services, client, etc.

Add a PowerShell Command with Dependencies Injected

Synchronous process example

[Cmdlet(VerbsLifecycle.Submit, "Data")]
public class SubmitData : IoCShell<Startup>
    [Parameter(Mandatory = true)]
    public string Id { get; set; }

    protected ITestDependencyOne TestDependencyOne { get; set; }

    protected ITestDependencyTwo testDependencyTwo { get; set; }

    private ILogger<RequestCard> logger { get; set; }

    protected override void ProcessRecord()


        TestData testData = testDependencyTwo.GetTestData(Id);

        logger.LogInformation("Auto Generated Data: {Id} - {Name}", Id, testData.Name);


Asynchronous process example

[Cmdlet(VerbsLifecycle.Submit, "DataAsync")]
public class SubmitDataAsync : IoCShellAsync<Startup>
    [Parameter(Mandatory = true)]
    public string Id { get; set; }

    protected ITestDependencyOne TestDependencyOne { get; set; }

    protected ITestDependencyTwo testDependencyTwo { get; set; }

    private ILogger<RequestCard> logger { get; set; }

    protected override async Task ProcessRecordAsync()
        await TestDependencyOne.PushTestIdAsync(Id);

        TestData testData = await testDependencyTwo.GetTestDataAsync(Id);

        logger.LogInformation("Auto Generated Data: {Id} - {Name}", Id, testData.Name);



In PowerShell terminal run the following:

Import-Module <path-to-your-dll>/<your-assembly>.dll -V

You should see your custom commands listed in the verbose output (signaled by -v).

Now you are ready to run your own custom commands!

The following example is based on command name from above:

Submit-Data -id "ThisIsATestId"

See Project - launch.json for a sample on launching your module through VS Code


Package Description
AutomationIoC.PSCmdlets.Tools Tooling for running/testing C# PowerShell Cmdlets
AutomationIoC Framework Runtime for AutomationIoC Console Applications and PowerShell Cmdlets
AutomationIoC.Consoles Dependency Injection Framework for C# Console Applications
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on AutomationIoC.PSCmdlets:

Package Downloads

Development tools for running/testing Cmdlets built with AutomationIoC framework

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.0-alpha2 119 8/12/2023
2.1.0-alpha1 76 6/16/2023
2.0.0-preview1 72 6/16/2023
2.0.0-alpha1 81 6/10/2023