2015-11-03 4 views
1

Я сделал функцию, которая возвращает пользовательского PSObject, но когда я пытаюсь использовать «.», чтобы получить свойство объекта отметить бывает, также разве труба работающих в этом типе объекта.новообращенного PowerShell PSObject в Нью-объект

Есть способ преобразования этого объекта в объект, созданный с помощью командлета New-object?

Почему в новом псобъекте отсутствуют функции?

$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

@JPBlanc ОК это ответ. – TessellatingHeckler

ответ

2

(Мой комментарий в качестве ответа)

$Object += __ коротка для $Objects = $Objects + __;

Так эта линия:

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

ожидает $Objects быть список, а затем добавить элемент в список. Вы не сказали, должен ли он быть список или нет, так что я думаю, вы просто хотите, чтобы сделать один объект, и следует использовать = вместо +=:

$Objects = New-Object psobject -Property $ObjectProperties 

Тогда вы можете сделать:

$Objects.Computer 
Смежные вопросы