对于“ Get-Msoldomain ” powershell命令,我得到以下输出( 我们称其为Output#1 ),其中Name,Status和Authentication是属性名称,下面是它们各自的值。
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 ”命令行开关提供一些通用的东西,以便它在不显式命名它们的情况下以文本而不是整数的形式返回 所有 的Enum属性,从而得到如下所示的输出:
{ "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