Skip to content

PSRP: pipeline input streaming (PIPELINE_INPUT / END_OF_PIPELINE_INPUT) #42

Description

Gap

We cannot stream input into a running remote pipeline. PIPELINE_INPUT is a stub (serialization commented out) and END_OF_PIPELINE_INPUT is enum-only. This blocks cmdlets/native exes that read from the pipeline ($input, Write-Output | remote-cmd, interactive stdin-style flows).

Current state

  • crates/ironposh-psrp/src/messages/pipeline_input.rs — struct present, impl is a commented-out block.
  • END_OF_PIPELINE_INPUT — message-type ID only (crates/ironposh-psrp/src/cores.rs:51), no message struct.

Required

  • Implement PIPELINE_INPUT serialization (a CLIXML-serialized object per input item) and END_OF_PIPELINE_INPUT.
  • Plumb a way to feed input objects to a created pipeline through client-core (and surface it in the tokio client; consider the web client too).
  • The pipeline must be created with input enabled (NoInput=false in CREATE_PIPELINE) when input will be sent.

Acceptance

  • An e2e test that pipes input into a remote command that consumes $input and asserts the expected output.

References

  • psrpcore src/psrpcore/_psrp.py (PIPELINE_INPUT / END_OF_PIPELINE_INPUT), pypsrp powershell.py.
  • Native C# EncodeAndDecode.cs (PowerShellInput / PowerShellInputEnd).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions