在Powershell中创建和修改对象

问题描述 投票:1回答:1

我是powershell的新手,我现在开始研究对象等。我以这种方式创建对象:

$myObject = [PSCustomObject]@{
  ComputerName = "abc"
  Data = "xxx"
}

如果我再打印$myObject,我得到的是:

   ComputerName Data
   ------------ ----
   abc          xxx

而且一切都很好,现在我想向该对象添加一个属性,并且我看到(如果我错了,请告诉我)可以用两种方式来做到这一点:add-memberselect-object例如,使用add-member,我所做的是:

$myObject | Add-member -NotePropertyName Level -NotePropertyValue Highest

代替Select-object,我做了:

$myobject = 2 (cause i want to add 2 properties, is it right?) | Select-Object -Property Level, Privilege
$myobject.Level = "High"
$myobject.Privilege = "Elevated"

现在如果我运行$myobject,我仍然只会得到:

   ComputerName Data
   ------------ ----
   abc          xxx
  1. 我应该怎么做才能查看所有数据,甚至是以后添加的数据?
  2. 我可以直接将值添加到通过Select-Object添加的属性中吗?谢谢
powershell
1个回答
1
投票

您可以在PsCustomObject上使用Add-Member方法。

$myObject = [PSCustomObject]@{
ComputerName = "abc"
Data = "xxx"
}

$myObject | Add-Member -NotePropertyName Level -NotePropertyValue High
$myObject | Add-Member Privilege Elevated

$myObject

#Output looks like,

ComputerName Data Level Privilege
------------ ---- ----- ---------
abc          xxx  High  Elevated 


0
投票

您可以使用添加成员或选择对象。面对不同情况下的优点或缺点,我只想举一个Select-Object示例。只需两种方法即可:

$myObject | 
Select-Object *,
    @{Name = 'Level'; Expression = { 'High' } },
    @{Name = 'Privilege'; Expression = { 'Elevated' } }

PowerShell允许您提供哈希表来定义新属性。您会注意到它看起来与用于创建对象的哈希非常相似。通常,表达式将利用$ _语法来计算属性的值。在这里,您通常将这些称为计算属性。

© www.soinside.com 2019 - 2024. All rights reserved.