2015-11-03 64 views
1

我做了一个返回定制psobject功能,但是当我试图用“”来获取对象的属性,指出发生了,也管心不是在这种类型的对象中工作。转换PowerShell的Psobject新对象

有一种方法可以将此对象转换为使用cmdlet New-object创建的对象吗?

为什么新的psobject缺少功能?

$ObjectProperties = @{     
    Users  = "admin" 
    Computer = "localhost" 
    Error  = $false 
} 
$Objects += New-Object psobject -Property $ObjectProperties 

# I am trying to use select this object like $objects.computer but doesnt work 
$Objects. 

$objectTest = New-Object Object 
$objectTest | Add-Member NoteProperty error $false 
$objectTest | Add-Member NoteProperty Computadores "localhost" 
$objectTest | Add-Member NoteProperty Usuarios "admin" 

#I need an object like this that can be easy managed 
$objectTest 

我试图以这种方式转换,但不工作

$objectCompu = $objects |select computer|Out-String 
$objectError = $Objects |select error|Out-String 
$objectUsers = $Objects |select users |Out-String 

$objectTest = New-Object Object 
$objectTest | Add-Member NoteProperty error $objectError 
$objectTest | Add-Member NoteProperty Computadores $objectCompu 
$objectTest | Add-Member NoteProperty Usuarios $objectUsers 
$objectTest 
+2

是因为你使用了'$ Objects + ='而不是'$ Objects ='吗? – TessellatingHeckler

+0

@TessellatingHeckler感谢它的工作:) –

+0

@JBBlanc好吧,这是一个答案。 – TessellatingHeckler

回答

2

(作为一个答案我的评论)

$Object += __是短期的$Objects = $Objects + __;

所以这行:

$Objects += New-Object psobject -Property $ObjectProperties 

期待$Objects是一个列表,然后将项目添加到列表中。你还没有说是否应该是一个列表或者没有,所以我想你只想做一个对象,并应使用=而不是+=

$Objects = New-Object psobject -Property $ObjectProperties 

然后,你可以这样做:

$Objects.Computer