【发布时间】:2020-08-25 21:08:17
【问题描述】:
当创建和使用 PSCustomObjects 导致 NoteProperty 成员具有“定义”(如下所示)时,是否有任何简单的编程方法可以从定义字段中选择值而无需拆分字符串?
例如下面,有没有一种“好”的方法可以从名称“token”的字段中提取值“silver”,而不需要传统的字符串操作?我一直在搞乱 select 和 -ExpandProperty 但没有快速得到任何地方,并且希望朝着正确的方向轻推。
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
bsw NoteProperty decimal bsw=3.14
name NoteProperty string name=chris
token NoteProperty string token=silver
volume NoteProperty decimal volume=17.22
谢谢。
更新:根据 Thomas 的指导,我想出了这个函数来从 PSObject 中提取 Noteproperty 成员并返回一个包含字段名称和值的 Hashtable:
function convertObjectToHash($psObj) {
$hashBack = @{}
try {
$psObjFieldNames = $psObj | get-member -type NoteProperty | select "Name"
$psObjFieldNames | foreach-object {
$hashBack.Add($_.Name,$psObj.$($_.Name)) }
}catch{ "Error: $_" }
return $hashBack
}
谢谢!
【问题讨论】:
-
你能告诉我们你需要转换的 JSON 吗?