Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Powershell中附加/更新多深度对象?_Powershell_Object_Append_Updating - Fatal编程技术网

如何在Powershell中附加/更新多深度对象?

如何在Powershell中附加/更新多深度对象?,powershell,object,append,updating,Powershell,Object,Append,Updating,我很难理解如何在对象中追加或更新数据 假设我有一个对象,其中包含的数据类似于下面的模式,在运行此命令后,我想在模式中添加该对象 $testdata | Format-Custom -Property * -Depth 6 类PSCustomObject { 会话= [ 类PSCustomObject { 类型=电流 生成=2017-08-31T09:02:55.251Z 窗口= [ 类PSCustomObject { id=770 隐姓埋名 制表符= [ 类PSCustomObject { 活

我很难理解如何在对象中追加或更新数据

假设我有一个对象,其中包含的数据类似于下面的模式,在运行此命令后,我想在模式中添加该对象

$testdata | Format-Custom -Property * -Depth 6
类PSCustomObject { 会话= [ 类PSCustomObject { 类型=电流 生成=2017-08-31T09:02:55.251Z 窗口= [ 类PSCustomObject { id=770 隐姓埋名 制表符= [ 类PSCustomObject { 活动=真 id=771 隐姓埋名 title=订阅-YouTube url=https://www.youtube.com/feed/subscriptions windowId=770 } 类PSCustomObject { 活动=错误 id=776 隐姓埋名 title=过度讽刺的作品-YouTube url=https://www.youtube.com/user/RedEyesTakeWarning/videos windowId=770 } ] } 类PSCustomObject { id=773 隐姓埋名 制表符= [ 类PSCustomObject { 活动=错误 id=774 隐姓埋名 title=技术-谷歌新闻 url=https://news.google.com/news/headlines/section/topic/TECHNOLOGY?ned=us&hl=en windowId=773 } 类PSCustomObject { 活动=错误 id=806 隐姓埋名 title=微软PowerShell是黑客的热门目标,但其防御能力正在提高 url=https://www.wired.com/story/microsoft-powershell-security/ windowId=773 } ... ] } ] } ] } 因此,假设我想在窗口中添加一个id为770的新选项卡 新标签的标题将是yahoourl将是id将是9001


如何在不必重新创建整个对象的情况下将新条目添加到选项卡中?

因此,这不是一个真正的答案,更像是一种变通方法

我自己也不明白如何像您希望的那样修改Powershell中的对象。通常,一个简单的
+=
通常适用于大多数事情

但是,对于您的问题,似乎试图直接在具有特定id的特定对象中添加具有键值对的对象
+=
,这是行不通的,因为您正在尝试解析它。您只会得到一个愚蠢的错误,属性找不到或其他什么

如果它是一个静态列表,并且在我更新它之前顺序/位置不会改变,那么我的方法是获取我希望添加到的特定对象的索引。然后对您的数据对象执行一个简单的
+=
,根据索引对您希望修改的对象进行哈希运算

例如:

首先,用键值对准备新对象或散列

 $newhash = @{}
 $newhash.Add("title","yahoo") 
 $newhash.Add("url", "https://yahoo.com")
 $newhash.Add("id", "9001")
接下来,使用
.IndexOf()
查找要修改/添加到的对象的索引,如id 770

$position = $testdata.sessions.windows.id.IndexOf(770)
这将告诉您特定id为770的对象在对象列表中的位置

现在,按照字面意思,对要添加/修改的特定窗口的选项卡执行简单的
+=

$testdata.sessions.windows[$position].tabs += $newhash
如果您感到困惑,请在表示选择其在列表中的位置的内容之后使用
[]
,例如[0]是第一个,依此类推

应该是这样

注意:这不适用于数据在更新之前更新,位置在修改之前更改的情况

我知道这可能不是你想要的,但仍然是


希望这能有所帮助。

所以这不是一个真正的答案,但更像是一种变通方法

我自己也不明白如何像您希望的那样修改Powershell中的对象。通常,一个简单的
+=
通常适用于大多数事情

但是,对于您的问题,似乎试图直接在具有特定id的特定对象中添加具有键值对的对象
+=
,这是行不通的,因为您正在尝试解析它。您只会得到一个愚蠢的错误,属性找不到或其他什么

如果它是一个静态列表,并且在我更新它之前顺序/位置不会改变,那么我的方法是获取我希望添加到的特定对象的索引。然后对您的数据对象执行一个简单的
+=
,根据索引对您希望修改的对象进行哈希运算

例如:

首先,用键值对准备新对象或散列

 $newhash = @{}
 $newhash.Add("title","yahoo") 
 $newhash.Add("url", "https://yahoo.com")
 $newhash.Add("id", "9001")
接下来,使用
.IndexOf()
查找要修改/添加到的对象的索引,如id 770

$position = $testdata.sessions.windows.id.IndexOf(770)
这将告诉您特定id为770的对象在对象列表中的位置

现在,按照字面意思,对要添加/修改的特定窗口的选项卡执行简单的
+=

$testdata.sessions.windows[$position].tabs += $newhash
如果您感到困惑,请在指示选择其在列表中的位置的内容之后使用
[]
,如[0]