对于“get”powershell命令,让我获得以下输出(让我们称之为Output#1),其中名称、状态和身份验证是属性名,下面是它们各自的值。
Name Status Authentication
myemail.onmicrosoft.com Verified Managed当我在命令中使用“转换到-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属性也是如此。如果不使用转换到-Json Powershell,则会给出文本,而使用ConvertTo则会给出整数。
当我发出以下命令时
get-msoldomain |Select-object @{Name='Status';Expression={"$($_.Status)"}}|ConvertTo-json我得到的输出
{
"Status": "Verified"
}但是,我需要一些东西,这样我就不必指定任何特定的属性名才能转换它,就像我在上面指定的那样
Select-object @{Name='Status';Expression={"$($_.Status)"}}这一行只转换Status属性,而不是属性,因为这是我作为输入提供的。
问:是否有一些通用的东西可以交给"ConvertTo-Json“命令,以便它以文本而不是整数的形式返回ALL Enum属性,而不显式命名它们,这样我就可以得到如下所示的输出:
{
"ExtensionData": {
},
"Authentication": 0,
"Capabilities": 5,
"IsDefault": true,
"IsInitial": true,
"Name": "myemail.onmicrosoft.com",
"RootDomain": null,
"Status": "Verified",
"VerificationMethod": "DnsRecord"
}发布于 2017-06-12 08:47:20
那么,如果您不介意进行一次小小的讨论:)您可以将它转换为CSV,这将强制字符串输出,然后将它从CSV重新转换回PS对象,然后最终返回到Json。
如下所示:
Get-MsolDomain | ConvertTo-Csv | ConvertFrom-Csv | ConvertTo-Jsonhttps://stackoverflow.com/questions/44494409
复制相似问题