powershell - PowerShell:向自定义对象添加“行”
问题描述
我想在 powershell 中创建一个对象,用于存储有关脚本状态的信息。我可以做这个:
$myScriptObject =
@("status", "Selected Operation(s):", "None"),
("status", "Current Operation:", "None"),
("status", "Current Step:", "Prompting for Script Action" ),
("test", "This is just for testing", "1,2,3") `
| ForEach-Object {[pscustomobject]@{kind = $_[0]; name = $_[1]; value
= $_[2]}}
这有效:
$myScriptObject
kind name value
---- ---- -----
status Selected Operation(s): None
status Current Operation: None
status Current Step: Prompting for Script Action
test This is just for testing 1,2,3
...我什至可以这样做:
foreach($myObject in $myScriptObject) {
if ($myObject.kind -eq 'status') {
Write-Host $myObject.name $myObject.value
}
}
输出这个:
Selected Operation(s): None
Current Operation: None
Current Step: Prompting for Script Action
我的问题是: 1. 如何向 $myScriptObject 添加如下内容:
-kind "ActionMenuChoice" -Name "Do This" -Value 1
-kind "ActionMenuChoice" -Name "Do That" -Value 2
如何更改对象中已有的项目?
status Current Step: Prompting for Script Action
至
status Current Step: Prompting for Login
还是我做错了?这个想法来自于从函数返回大量变量的困难,我读到使用对象在函数中来回传递要好得多,发现使用对象更容易跟踪和在一定程度上操作。
干杯!
解决方案
如果我们保留您当前的对象数组结构,您可以$myScriptObject
通过强制转换创建为通用列表类型[collections.generic.list[object]]
。然后您可以使用该.Add()
方法将项目添加到您的收藏中。
[collections.generic.list[object]]$myScriptObject =
@("status", "Selected Operation(s):", "None"),
("status", "Current Operation:", "None"),
("status", "Current Step:", "Prompting for Script Action" ),
("test", "This is just for testing", "1,2,3") |
ForEach-Object {[pscustomobject]@{kind = $_[0]; name = $_[1]; value = $_[2]}}
[void]$myScriptObject.add([pscustomobject]@{"Kind" = "ActionMenuChoice"; "Name" = "Do This"; "Value" = 1})
[void]$myScriptObject.add([pscustomobject]@{"Kind" = "ActionMenuChoice"; "Name" = "Do That"; "Value" = 2})
如果要更新该集合中的项目属性,首先需要在集合中找到对象/项目,然后访问要更新的属性。
($myScriptObject | Where-Object {$_.name -eq 'Current Step:'}).value = "Prompting for Login"
Where-Object
可以提供定位目标对象所需的条件。然后您可以使用object.property
语法来访问该属性。使用 PowerShell 对象,您可以使用直接赋值语法 ( object.property = value
) 来更新属性值。
推荐阅读
- python - 假设我们知道一个多面体的顶点,并且想要得到它的半空间表示 A * x <= b
- python - 某些列缺少数据的 Django 模板表
- julia - julia :在匿名函数中设置一个变量,使其永久设置,您只能在其他变量中进行评估
- python - Python TCP客户端连接到伺服电机
- jenkins - Jenkins 通过 ssh 添加新节点
- javascript - 将状态中的参数从子级传递给父级
- java - 我收到 DatabaseError: Permission denied for my Production 应用程序但我的开发应用程序工作正常
- button - 带锁定按钮的键盘计算器
- json - 存储在 JSON 对象中的 Powershell 访问属性
- azure - DataLake gen2 中的新子网替换现有子网