Devolutions / Devolutions/ironPosh

PSRP: GET_COMMAND_METADATA support

Open
#44 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
10
Forks
2
PR merge metrics
No merged PRs in 30d

Description

## Gap
`GET_COMMAND_METADATA` is not implemented (message-type ID only). This message powers `Get-Command` metadata retrieval and implicit remoting (proxy-function generation). Both pypsrp/psrpcore and native C# implement it.

Note: our interactive tab-completion works via a *different* path (running a command), so this is additive, not a regression.

## Current state
- Enum ID only: `crates/ironposh-psrp/src/cores.rs` (~lines 47, 83). No request builder, no response parsing.

## Required
- Build the `GET_COMMAND_METADATA` pipeline message (command name patterns, command types, module names, ArgumentList).
- Parse the streamed response: `CommandMetadataCount`, `CommandMetadata`, `ParameterMetadata` objects.
- Expose a client-core API (e.g. `get_command_metadata(...)`).

## Acceptance
- An e2e test retrieving metadata for a known cmdlet (e.g. `Get-Process`) and asserting parameter metadata is parsed.

## References
- psrpcore `src/psrpcore/_pipeline.py` (GetMetadata) + `_client.py` ClientGetCommandMetadata.
- pypsrp `powershell.py` `get_command_metadata`.
- Native C# `EncodeAndDecode.cs` `GenerateGetCommandMetadata` (~line 787).

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the enum entries in crates/ironposh-psrp/src/cores.rs, then compare psrpcore's _pipeline.py and _client.py, pypsrp's powershell.py, and C#'s EncodeAndDecode.cs GenerateGetCommandMetadata. Implement the request and streamed metadata parsing, expose the client-core API, and add an end-to-end test for Get-Process that verifies parameter metadata is parsed.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, python, rust
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.