【发布时间】:2017-11-13 15:11:34
【问题描述】:
对于“Get-Msoldomain”powershell 命令让我得到以下输出(我们称之为输出#1),其中名称、状态和身份验证是属性名称以下是它们各自的值。
Name Status Authentication
myemail.onmicrosoft.com Verified Managed
当我使用带有“ConvertTo-Json”的命令时,如下所示
GetMsolDomain |ConvertTo-Json
我得到以下 Json 格式的输出(我们称之为 Output#2)。
{
"ExtensionData": {
},
"Authentication": 0,
"Capabilities": 5,
"IsDefault": true,
"IsInitial": true,
"Name": "myemail.onmicrosoft.com",
"RootDomain": null,
"Status": 1,
"VerificationMethod": 1
}
但是,问题是,如果您注意到两个输出中的 Status 属性,情况就不同了。 VerificationMethod 属性也是如此。不使用 ConvertTo-JSon Powershell 给出文本,使用 ConvertTo-Json 给出整数。
当我给出以下命令时
get-msoldomain |Select-object @{Name='Status';Expression={"$($_.Status)"}}|ConvertTo-json
我得到的输出为
{
"Status": "Verified"
}
但是,我想要一些东西,这样我就不必指定任何特定的属性名称来转换它,就像我在上面指定的那样
Select-object @{Name='Status';Expression={"$($_.Status)"}}
此行仅转换 Status 属性,而不是 VerificationMethod 属性,因为这是我提供的输入。
问题:我可以给“ConvertTo-Json”命令行开关提供一些通用的东西,以便它返回 ALL 枚举属性作为文本而不是整数,没有明确命名它们,所以我得到如下输出:
{
"ExtensionData": {
},
"Authentication": 0,
"Capabilities": 5,
"IsDefault": true,
"IsInitial": true,
"Name": "myemail.onmicrosoft.com",
"RootDomain": null,
"Status": "Verified",
"VerificationMethod": "DnsRecord"
}
【问题讨论】:
标签: json powershell enums