2015-11-03 65 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