我有一组来自JSON文件的键/值对。
package org.bitguiders.ciam.acctmgt.cfg
import javax.ws.rs.ApplicationPath;
import org.bitguidres.api.exceptions.GenericExceptionMapper;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("acc/api/*")
public class ApplicationConfig extends ResourceConfig {
public ApplicationConfig() {
packages("org.cas.ciam.acctmgt");
register(JacksonFeature.class);
register(GenericExceptionMapper.class);
register(new DependencyBinder());
}
}
在Powershell中看起来像$ $p.dependencies
@architect/architect : ^5.7.0
@architect/functions : ^3.0.4
assert : ^1.4.1
bcrypt : ^3.0.6
find-parent-dir : ^0.3.0
hashids : ^1.2.2
http-status-codes : ^1.3.2
lodash.get : ^4.4.2
mini-web-server : ^1.0.2
mini-webhook-server : ^1.0.4
mocha : ^5.2.0
opencorporates : ^3.0.0
stripe : ^6.23.1
uuid : ^3.3.2
whois-json : ^2.0.4
:
noteProperty
我想使用 TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
@architect/architect NoteProperty string @architect/architect=^5.7.0
@architect/functions NoteProperty string @architect/functions=^3.0.4
assert NoteProperty string assert=^1.4.1
bcrypt NoteProperty string bcrypt=^3.0.6
find-parent-dir NoteProperty string find-parent-dir=^0.3.0
hashids NoteProperty string hashids=^1.2.2
http-status-codes NoteProperty string http-status-codes=^1.3.2
lodash.get NoteProperty string lodash.get=^4.4.2
mini-web-server NoteProperty string mini-web-server=^1.0.2
mini-webhook-server NoteProperty string mini-webhook-server=^1.0.4
mocha NoteProperty string mocha=^5.2.0
opencorporates NoteProperty string opencorporates=^3.0.0
stripe NoteProperty string stripe=^6.23.1
uuid NoteProperty string uuid=^3.3.2
whois-json NoteProperty string whois-json=^2.0.4
键将项目更改为与@architect/functions
不同的值(然后将数据保存回去)
下一部分似乎是从哈希表中选择正确的项目。我正在使用:
^3.0.4
但是,这不会返回任何结果。 如何用键$p.dependencies | where $_.key -eq "@architect/functions"
选择项目?要获得奖励积分,如何更改值!
修改:
使用答案,如果有人觉得有用,这是我的最终脚本。
@architect/functions
答案 0 :(得分:2)
要获取名称中包含特殊字符的属性,请引用它:
$p.dependencies.'@architect/functions'
答案 1 :(得分:2)
Tomalak's helpful answer解决了您的问题。
关于您尝试使用In [13]: eval("4*5+25-5.5/1")
Out[13]: 39.5
(where
)检索感兴趣的属性:
Where-Object
有两个基本问题:
抽象地讲,使用比较语句语法(即使用单个参数代替脚本块)需要您可以单独使用属性名称 ($p.dependencies | where $_.key -eq "@architect/functions"
,而不是通过自动变量key
($_
)
实际上,$_.key
-指代手边的管道输入对象-仅在脚本块({>)($_
)中有意义。 p>
也就是说,如果您的命令是正确的(不是,请参见下文),则必须使用:
{ ... }
如您的输出所示,$p.dependencies | where key -eq '@architect/functions'
包含一个$p.dependencies
实例,而不是一个哈希表([pscustomobject]
);除非您使用[hashtable]
开关明确请求哈希表,否则ConvertFrom-Json
返回[pscustomobject]
实例。
-AsHashtable
,这将允许您按其{{1 }}属性。