【发布时间】:2021-05-31 03:58:19
【问题描述】:
见下文,$a 和 $s 都是包含文本 "String" 的字符串,但每个使用 ConvertTo-JSON 的序列化方式不同。
为什么$s | ConvertToJson 不生成"String"??
PS W:\PowerShell\powowshell> $a="String"
PS W:\PowerShell\powowshell> $a
String
PS W:\PowerShell\powowshell> $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS W:\PowerShell\powowshell> $a | ConvertTo-Json
"String"
PS W:\PowerShell\powowshell> $s
String
PS W:\PowerShell\powowshell> $s.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS W:\PowerShell\powowshell> $s | ConvertTo-Json
{
"value": "String",
"required": "true"
}
背景故事
$s 是 .ps1 的 parameterValue,使用 Get-Help 检查:
PS W:\PowerShell\powowshell> $cmd = (get-help -full W:\PowerShell\powowshell\examples\components\dosdir.ps1).Syntax.syntaxItem[0].parameter
PS W:\PowerShell\powowshell> $cmd | convertto-json
{
"description": [
{
"Text": "The path to the directory to be listed"
}
],
"parameterValue": {
"value": "String",
"required": "true"
},
...
$s = $cmd.parameterValue
dosdir.ps1:
param(
[String]$Path
)
CMD /C "DIR /B $Path"
【问题讨论】:
标签: json powershell