更改 PSObject 中的特定值

Change a specific value in a PSObject

所以我有一个项目名称定义为 $name,还有一个 table/object 项目名称为 $x。看起来像

Name       id       PendingShutdown
____       ___      ___________
example j-12453634 False

我的变量 $name = "example"

我想做的是取 $name,然后更改 $x,使其看起来像

Name       id       PendingShutdown
____       ___      ___________
example j-12453634 True

我该怎么做?

您可以使用管道 select 通过 Where-Object(或简称 ?)请求的项目,然后使用 $name 作为查询的一部分。请记住,如果 Name 属性 中有重复项,结果可能 return 多个项目(在这种情况下,您可以在第一个管道后使用 | Select -First 1)。

PS > $name = "example"

# setup of list items
PS > $x = @{}
PS > $x.Name = "example"
PS > $x.id = "j-12453634"
PS > $x.PendingShutdown = $false;

PS > $x2 = @{}
PS > $x2.Name = "other-name"
PS > $x2.id = 42
PS > $x2.PendingShutdown = $false

PS > $items = @()
PS > $items += $x
PS > $items += $x2

# displaying list before modification
PS > $items

Name                           Value
----                           -----
PendingShutdown                False
Name                           example
id                             j-12453634
PendingShutdown                False
Name                           other-name
id                             42

# selecting item from list via Name property with value from variable
PS > $items |? Name -eq $name

Name                           Value
----                           -----
PendingShutdown                False
Name                           example
id                             j-12453634

# updating item via selector from variable
PS > ($items |? Name -eq $name).PendingShutdown = $true

# displaying list after modification
PS > $items

Name                           Value
----                           -----
PendingShutdown                True
Name                           example
id                             j-12453634
PendingShutdown                False
Name                           other-name
id                             42

如果 PendingShutdown 是布尔值

 $x | where Name -eq "example" | %{$_.PendingShutdown=$true}

如果 PendingShutdown 是一个字符串

$x | where Name -eq "example" | %{$_.PendingShutdown="True"}