【发布时间】:2019-05-10 00:48:57
【问题描述】:
我想在 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
还是我做错了?这个想法来自于从函数返回大量变量的困难,我读到使用对象在函数中来回传递要好得多,发现使用对象更容易跟踪和在一定程度上操作。
干杯!
【问题讨论】:
-
你似乎有一个对象数组。因此,要制作一个具有您问题 [1] 中的格式的文件,只需创建一个新对象并将其添加到数组中。 ///// 对于问题 [2] - 要更改数组中对象的属性,请使用
$Collection[$Index].PropertyName = 'New Value'。 -
将自定义对象的 array 称为 object 令人困惑。请阐明添加类似... 的含义 - 您是否希望能够使用参数语法将新元素追加 到您的数组中?如果是这样,您将不得不编写一个函数。考虑使用由自定义对象的
.Name属性作为键的哈希表,而不是数组,这样可以更轻松地更新现有对象。
标签: powershell object dynamic-arrays