2

因此,我将一个项目的名称定义为 $name,以及一个名为 $x 的项目表/对象。看起来像

Name       id       PendingShutdown
____       ___      ___________
example j-12453634 False

我的变量 $name = "example"

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

Name       id       PendingShutdown
____       ___      ___________
example j-12453634 True

我该怎么做呢?

4

2 回答 2

2

如果 PendingShutdown 是布尔值

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

如果 PendingShutdown 是一个字符串

$x | where Name -eq "example" | %{$_.PendingShutdown="True"}
于 2017-03-19T09:05:30.263 回答
0

Where-Object您可以通过(或?简称)使用管道选择请求的项目,然后将$name其用作查询的一部分。请记住,如果Name属性中有重复项,结果可能会返回多个项目(在这种情况下,您可以| 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
于 2017-03-19T07:08:57.980 回答