Как вывести PSCustomObject из скомпилированного командлета?C#

Место общения программистов C#
Ответить
Anonymous
 Как вывести PSCustomObject из скомпилированного командлета?

Сообщение Anonymous »

У меня есть скомпилированный командлет, который работает с Hashtable. Я хотел бы записать [pscustomobject] хэш-таблицы в конвейер. В блоке сценария PowerShell это можно выполнить с помощью следующего приведения:

Код: Выделить всё

[pscustomobject]$hashtable
Я хотел бы сделать то же самое с помощью скомпилированного командлета. Естественной реализацией было бы

Код: Выделить всё

using System.Collections;
using System.Management.Automation;

[Cmdlet(VerbsData.Out,"PsCustomObject")]
public class OutPsCustomObjectCommand : PSCmdlet {
[Parameter(Mandatory = true)]
public Hashtable Hashtable { get; set; }
protected override void ProcessRecord() {
WriteObject(new PSCustomObject(Hashtable));
}
}
однако у PSCustomObject нет открытого конструктора.
Я думал, что new PSObject() может быть эквивалентным, но WriteObject(new PSObject(Hashtable)) настолько отличается от [pscustomobject]$hashtable, что они даже не отображаются одинаково в консоли:

Код: Выделить всё

PS\> Out-PsCustomObject -Hashtable @{ a='aye' }
Name                           Value
----                           -----
a                              aye

PS\> [pscustomobject]@{ a = 'aye' }
a
-
aye
Как вывести PSCustomObject из скомпилированного командлета?

Подробнее здесь: https://stackoverflow.com/questions/794 ... led-cmdlet
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»