Substantive.CommandExecutor 9.1.0-build20251218r1

Substantive.CommandExecutor

Tags: #PackageReadme #Pending/CleanUp

1. Introduction

CommandExecutor is a comprehensive library designed to facilitate the execution of various command types, including SQL scripts and PowerShell commands. With its robust architecture, the library simplifies the process of executing commands across different environments, making it an essential tool for developers looking to automate and streamline their workflows.

2. Package Readme Document

A. Installation

1. Install The Package

To integrate Substantive.CommandExecutor into project via NuGet Package Manager or by adding a package reference directly into project file (.csproj).

<PackageReference Include="Substantive.CommandExecutor" Version="1.*" />

2. Add Configuration

N/A

3. Configure Services

In program.cs, register Substantive.CommandExecutor's services with the service collection to make them available throughout application. This step is crucial for utilizing the Substantive.CommandExecutor within projects.

builder.Services.AddCommandExecutorTools();

B. Usages

The Substantive.CommandExecutor library provides two main interfaces to cater to different types of command executions: ISqlExecutor and IPowershellExecutor.

Below is a brief overview of how to use these interfaces within your applications.

SQL Command Execution

The ISqlExecutor interface allows for the asynchronous execution of SQL scripts. It is designed to work seamlessly with Entity Framework Core, enabling efficient database interactions.

public interface ISqlExecutor
{
    Task ExecuteAsync(SqlCommandOptions sqlJobOptions, CancellationToken cancellationToken = default);
}
SQL Command Options
{
  "ScriptUri": "Scripts/SqlFiles/example.sql",
  "ConnectionString": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;",
  "DatabaseProvider": "MsSqlServer"
}
  • ScriptUri: The relative path to the SQL script file from the application's base directory.
  • ConnectionString: The database connection string required to connect to the database where the SQL commands will be executed. This should be a valid connection string for the specified database provider.
  • DatabaseProvider: Specifies the database provider for which the SQL commands are intended. In this example, MsSqlServer is used, indicating Microsoft SQL Server as the target database system. Currently supported (InMemory, SQLite, MsSqlServer, and PostgreSql)

Powershell Command Execution

The IPowershellExecutor interface facilitates the asynchronous execution of PowerShell scripts to locally, providing a flexible solution for various scripting needs.

Currently the Powershell command execution only support for locally. This tools designed to be support remote execution too.
public interface IPowershellExecutor
{
    Task ExecuteAsync(PowershellCommandOptions powershellJobOptions, CancellationToken cancellationToken = default);
}
Powershell Command Options
{
  "ScriptUri": "Scripts/PowershellFiles/Script.ps1",
  "ExecutionTarget": "Local"
}
  • ScriptUri: The relative path to the PowerShell script file from the application's base directory.
  • ExecutionTarget: Indicates where the PowerShell script will be executed.

C. Example

To use the CommandExecutor library in your application, you would typically inject the necessary executor (ISqlExecutor or IPowershellExecutor) into your services or controllers. Then, you can call the ExecuteAsync method with the appropriate options and a cancellation token if needed.

public class ExecutionService
{
    private readonly ISqlExecutor sqlExecutor;
    private readonly IPowershellExecutor powershellExecutor;

    public ExecutionService(ISqlExecutor sqlExecutor, IPowershellExecutor powershellExecutor)
    {
        this.sqlExecutor = sqlExecutor;
        this.powershellExecutor = powershellExecutor;
    }

    public async Task ExecuteSqlScript()
    {
        var sqlOptions = new SqlCommandOptions
        {
            ScriptUri = new Uri("Scripts/SqlFiles/example.sql", UriKind.Relative),
            ConnectionString = "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;",
            DatabaseProvider = SupportedDatabaseProvider.MsSqlServer // Assuming this is an enum you have defined
        };

        await sqlExecutor.ExecuteAsync(sqlOptions);
    }

    public async Task ExecutePowershellScript()
    {
        var psOptions = new PowershellCommandOptions
        {
            ScriptUri = new Uri("Scripts/PowershellFiles/Sample.ps1", UriKind.Relative),
            ExecutionTarget = ExecutionTarget.Local
        };

        await powershellExecutor.ExecuteAsync(psOptions);
    }
}

Showing the top 20 packages that depend on Substantive.CommandExecutor.

Packages Downloads
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
4
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
6
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
7
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
8
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
9
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
11
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
14
Substantive.Foundation.Backends
A metapackage contains all Substantive backend building blocks.
16
Substantive.Metapackage.Backends
A metapackage contains all Substantive backend building blocks.
4

Version Downloads Last updated
9.17.21-build20260204R1 1 02/04/2026
9.17.20-build20260203R1 2 02/03/2026
9.17.19-build20260130R1 4 01/30/2026
9.17.18-build20260129R1 2 01/29/2026
9.17.17-build20260129R1 6 01/29/2026
9.17.17-build20260128R1 4 01/28/2026
9.17.16-build20260127R2 5 01/27/2026
9.17.16-build20260123R1 5 01/23/2026
9.17.15-build20260122R1 7 01/22/2026
9.17.14-build20260122R2 6 01/22/2026
9.17.14-build20260122R1 2 01/22/2026
9.17.14-build20260121R1 2 01/21/2026
9.17.13-build20260121R1 2 01/21/2026
9.17.12-build20260120R1 6 01/20/2026
9.17.11-build20260120R1 5 01/20/2026
9.17.10-build20260120R1 4 01/20/2026
9.17.9-build20260119R1 3 01/19/2026
9.17.8-build20260119R1 2 01/19/2026
9.17.7-build20260115R1 1 01/15/2026
9.17.6-build20260115R1 1 01/15/2026
9.17.5-build20260119R1 2 01/19/2026
9.17.5-build20260115R1 1 01/15/2026
9.17.4-build20260115R1 4 01/15/2026
9.17.3-build20260115R1 1 01/15/2026
9.17.2-build20260115R1 1 01/15/2026
9.17.2-build20260113R1 4 01/13/2026
9.17.1-build20251231R2 1 12/31/2025
9.17.1-build20251230R2 5 12/30/2025
9.17.1-build20251230R1 1 12/30/2025
9.17.0-build20251229R2 2 12/29/2025
9.17.0-build20251229R1 1 12/29/2025
9.17.0-build20251226R1 2 12/26/2025
9.17.0-build20251225R1 1 12/25/2025
9.16.0-build20251224R1 3 12/24/2025
9.15.3-build20251224R1 1 12/24/2025
9.15.2-build20251224R1 1 12/24/2025
9.15.1-build20251224R1 1 12/24/2025
9.14.0-build20251223R1 2 12/23/2025
9.3.0-build20251223R4 1 12/23/2025
9.3.0-build20251223R3 2 12/23/2025
9.3.0-build20251223R2 1 12/23/2025
9.3.0-build20251222R2 2 12/22/2025
9.3.0-build20251222R1 1 12/22/2025
9.2.0-build20251222R2 1 12/22/2025
9.2.0-build20251222R1 2 12/22/2025
9.1.0-build20251218R1 1 12/18/2025
9.1.0-build20251217R2 3 12/17/2025
9.1.0-build20251217R1 5 12/17/2025
9.1.0-build20251216R2 6 12/16/2025
9.1.0-build20251216R1 3 12/16/2025
9.1.0-build20251215R1 4 12/15/2025
9.1.0-build20251212R1 3 12/12/2025
9.1.0-build20251211R1 1 12/11/2025
9.1.0-build20251210R1 3 12/10/2025
9.1.0-build20251202R2 5 12/02/2025
9.1.0-build20251202R1 4 12/02/2025
9.0.5-build20251117R1 1 11/17/2025
9.0.5-build20251110R1 6 11/10/2025
9.0.5-build20251103R1 5 11/03/2025
9.0.5-build20251030R1 5 10/30/2025
9.0.5-build20251028R1 3 10/28/2025
9.0.5-build20251016R1 1 10/16/2025
9.0.5-build20250925R2 5 09/25/2025
9.0.5-build20250925R1 1 09/25/2025
9.0.5-build20250924R1 1 09/24/2025
9.0.5-build20250908R1 7 09/08/2025
9.0.5-build20250905R2 4 09/05/2025
9.0.5-build20250905R1 3 09/05/2025
9.0.5-build20250827R1 1 08/27/2025
9.0.5-build20250825R1 7 08/25/2025
9.0.5-build20250821R1 4 08/21/2025
9.0.4-build20250821R1 2 08/21/2025
9.0.3-build20250821R1 2 08/21/2025
9.0.2-build20250821R1 2 08/21/2025
9.0.1-build20250821R1 4 08/21/2025
9.0.0 9 08/16/2025
9.0.0-build20250821R3 2 08/21/2025
9.0.0-build20250821R2 2 08/21/2025
9.0.0-build20250821R1 3 08/21/2025
9.0.0-build20250818R2 6 08/18/2025
9.0.0-build20250818R1 3 08/18/2025
9.0.0-build20250815R1 2 08/15/2025
9.0.0-build20250814R1 2 08/14/2025
9.0.0-build20250722R3 7 07/22/2025
9.0.0-build20250714R3 7 07/14/2025
9.0.0-build20250714R2 3 07/14/2025
9.0.0-build20250714R1 2 07/14/2025
9.0.0-build20250710R1 5 07/10/2025
9.0.0-build20250707R2 10 07/07/2025
9.0.0-build20250707R1 3 07/07/2025
9.0.0-build20250629R1 8 06/29/2025
9.0.0-build20250626R2 7 06/26/2025
9.0.0-build20250626R1 2 06/26/2025
9.0.0-build20250623R1 6 06/23/2025
9.0.0-build20250621R1 11 06/21/2025