Я думаю, что вы должны использовать свой собственный командлет Powershell (Commandlet). По сути, вы наследуете от базового класса, переопределяете метод, и этот метод вызывается при вызове этого командлета из Powershell. Таким образом, вы можете делать то, что вам нужно, в C # и просто вызывать его из Powershell. Рисунок примерно так:
РЕДАКТИРОВАТЬ: Забыли ссылку на MSDN для создания командлетов: http://msdn.microsoft.com/en-us/library/dd878294(VS.85).aspx
[Cmdlet(VerbsCommunications.Get, "MyCmdlet")]
public class MyCmdlet : Cmdlet
{
[Parameter(Mandatory=true)]
public string SomeParam {get; set;}
protected override void ProcessRecord()
{
WriteObject("The param you passed in was: " + SomeParam);
}
}
Затем вы бы назвали этот командлет из Powershell примерно так:
PS>Get-MyCmdlet -SomeParam 'whatever you want'
Затем, чтобы использовать MSMQ, есть много примеров в Интернете о том, как это сделать из C #:
Вот только один из них ....