gpt4 book ai didi

json - Powershell - 使用 ConvertTo-Json 保留所有 Enum 属性的文本

转载 作者:行者123 更新时间:2023-12-04 07:32:56 29 4
gpt4 key购买 nike

对于“Get-Msoldomain”powershell 命令让我得到以下输出(我们称之为输出#1),其中名称、状态和身份验证是属性名称,下面是它们各自的值。

Name                    Status   Authentication

myemail.onmicrosoft.com Verified Managed

当我使用带有“ConvertTo-Json”的命令时,如下所示
GetMsolDomain |ConvertTo-Json

我得到了 Json 格式的以下输出(我们称之为输出#2)。
{
"ExtensionData": {

},
"Authentication": 0,
"Capabilities": 5,
"IsDefault": true,
"IsInitial": true,
"Name": "myemail.onmicrosoft.com",
"RootDomain": null,
"Status": 1,
"VerificationMethod": 1
}

但是,问题是,如果您注意到 状态 两个输出中的属性,它是不同的。同样发生在 验证方式 属性(property)。不使用 ConvertTo-JSon Powershell 给出文本,使用 ConvertTo-Json 给出整数。

当我给出以下命令时
get-msoldomain |Select-object @{Name='Status';Expression={"$($_.Status)"}}|ConvertTo-json

我得到的输出为
{
"Status": "Verified"
}

但是,我想要一些东西,这样我就不必为要转换的它指定任何特定的属性名称,我在上面指定的方式为
Select-object @{Name='Status';Expression={"$($_.Status)"}}

这条线只改变了 状态 属性(property)而不是 验证方式属性,因为这是我提供的输入。

问题:我可以为“ ConvertTo-Json ”命令行开关提供一些通用的东西,以便它返回 所有 枚举属性作为文本而不是整数,没有明确命名它们,所以我得到如下输出:
{
"ExtensionData": {

},
"Authentication": 0,
"Capabilities": 5,
"IsDefault": true,
"IsInitial": true,
"Name": "myemail.onmicrosoft.com",
"RootDomain": null,
"Status": "Verified",
"VerificationMethod": "DnsRecord"
}

最佳答案

好吧,如果您不介意走一点路:) 您可以将其转换为 CSV,这将强制输出字符串,然后将其从 CSV 重新转换回 PS Object,最后再转换回 Json。

像这样:

Get-MsolDomain | ConvertTo-Csv | ConvertFrom-Csv | ConvertTo-Json
  • 如果您需要保留原始类型而不是将其全部转换为字符串,请参阅 mklement0 有用的答案...
  • 关于json - Powershell - 使用 ConvertTo-Json 保留所有 Enum 属性的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494409/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com