2014-12-04 7 views
3

я использую очень часто следующие:Кратчайший синтаксис PowerShell для создания нового объекта PSObject с использованием свойства?

New-Object psobject -Property @{a=1; b=2; c=3; d=4} 

Я хотел бы сделать это как можно более коротким, возможно, даже один персонаж? Каков самый короткий способ создания нового psobject с использованием свойств выше?

Мое желания в том, что я мог бы сделать это с синтаксисом, аналогичным образом:

#{a=1; b=2; c=3; d=4} 

Обратите внимание, что я заменил @ с новым «специальным» символом.

Обратите внимание, что если это считается не по теме, я переведу его.

+0

Я полагаю, что создание функции, которую вы могли бы назвать для этого из вашего профиля, - глупое оправдание? – Matt

ответ

7

PowerShell 3 и более поздние версии поддерживают этот синтаксис:

[pscustomobject]@{a=1; b=2; c=3; d=4} 

Одним из дополнительных преимуществ является то, что свойства упорядочены, в отличие от стандартного вызова New-Object.

Вы добавляете накладные расходы, но предположительно вы могли бы create your own type accelerator сделать что-то похожее на pscustomobject и использовать более короткое имя:) Не уверен, что происходит под капотом pscustomobject.

+0

AAHHH это будет моим ответом .... Хорошая работа. Мой эксперимент, создающий ускорители '$ accelators :: add (" o "," System.Management.Automation.PSObject ")' then '[o] $ props' производит разные результаты. Просто закончилось с hastable – Matt

+0

Winner! Мне это нравится, и это просто PowerShell. Спасибо @CookieMonster! –

+0

Это потрясающий акселератор. Особенно, если вы перебираете массив объектов и хотите экспортировать пользовательские объекты в pst. '[pscustomobject] @ [a = 1} | export-csv $ exportfile' – Xalorous