大多数开箱即用的PowerShell命令都返回“复杂”对象。
例如,Get-Process
会返回System.Diagnostics.Process
的数组。
我写过的所有函数都返回一个简单类型或现有类型的对象。
如果我想归还自制物品,那么准则是什么?
例如,假设我有一个包含这些属性的对象:Name
,Age
。在C#中我会写
public class Person {
public string Name { get; set; }
public uint Age { get; set; }
}
从PowerShell函数返回此类对象有哪些选择?
LoadWithPartialName
?答案 0 :(得分:8)
您可以使用以下语法:
New-Object PSObject -Property @{
Name = 'Bob'
Age = 32
}
答案 1 :(得分:3)
使用自定义属性创建自己的对象有几个选项。还可以使用其他属性扩展现有对象。最明确的方法是使用Add-Member cmdlet:
$test = New-Object PSCustomObject
Add-Member -InputObject $test -Name Name -Value 'Bob' -MemberType NoteProperty
Add-Member -InputObject $test -Name Age -Value 32 -MemberType NoteProperty
您还可以使用以下事实:对象可以扩展,并且Select-Object可以隐式地向管道中的对象添加属性:
$test = '' | Select @{n='Name'; e={'Bob'}}, @{n='Age'; e={32}}
就我个人而言,我更喜欢第一种方法,因为它更明确,更少挥手魔术,但最终它是一种脚本语言,所以无论做什么都是正确的方法。