【问题标题】:convert powershell Psobject to New-object将 powershell Psobject 转换为 New-object
【发布时间】:2016-02-03 03:16:20
【问题描述】:

我已经创建了一个返回 自定义 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

【问题讨论】:

  • 是不是因为你用了$Objects +=而不是$Objects =
  • @TessellatingHeckler 谢谢它的工作:)
  • @JPBlanc 好的,这是一个答案。
  • 不错。 @kimo pryvt 如果答案将问题作为回答请。

标签: powershell psobject


【解决方案1】:

(我的评论作为答案)

$Object += __$Objects = $Objects + __的缩写;

所以这一行:

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

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

$Objects = New-Object psobject -Property $ObjectProperties

那么你可以这样做:

$Objects.Computer

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2011-03-15
    • 1970-01-01
    • 2023-03-20
    • 2021-05-19
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多