当前位置: 首页 > 面试题库 >

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

万嘉熙
2023-03-14
问题内容

对于“ 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
  • 如果您需要保留原始类型而不是将其全部转换为字符串,请参阅mklement0有用的答案…


 类似资料:
  • 问题内容: 我想修补一个无法在此时升级到3.0的PowerShell 2.0环境。 我正在寻找PowerShell 3.0中cmdlet和cmdlet 的PowerShell 2.0脚本实现。 我对的兴趣最大,但也很好。 问题答案:

  • 问题内容: 如果嵌套太深,看起来Powershell在导出为JSON时会切断数据。我的对象层次结构如下所示: 由于某种原因,当我转换为JSON时,powershell会将第三级(这些源使用的数据的集合)导出为空字符串,即使它是添加了各种NoteProperty的对象数组。例如: 这将导致以下JSON字符串: 转换为XML会导致类似情况: 在Powershell中是否存在某种对象嵌套限制? 问题答案

  • 问题内容: 我正在尝试使用Powershell访问JSON对象的特定属性值。不幸的是,我不知道结构中某些父级属性的键,因此我无法直接做到这一点。另外,由于JSON不是数组,因此无法通过索引位置访问。 上下文是我正在从elasticsearch查询正在运行的任务列表,并且需要获取任务的ID(我知道只有一个),因此我可以进行后续调用以发现其完成状态。 我已经研究了一些查询方法,但是不确定如何应用它们(

  • 问题内容: 我正在编写用于更改JSON文件的脚本,但是当文件转换回JSON时,它将扩展特殊字符。 例如,JSON文件包含带有“&”的密码。复制问题的快速方法是使用以下命令: PS>“密码和123” | Convertto-Json输出为:“ Password \ u0026123” -这是简化的JSON FILE的示例 问题答案: 这是由的自动字符转义功能引起的,并且会影响多个符号,例如 Conv

  • 问题内容: 我有一个标准POJO,其中包含一组属性。POJO已被注释为,以便作为文档保留在MongoDB中。 我如何(注释?)可以忽略/避免POJO中的属性之一被保留? 问题答案: 该注释是。参见http://static.springsource.org/spring- data/data-document/docs/current/reference/html/#mapping-usage-

  • 一个球形的空间区域充满了特定分布的更小、不同大小的球体。每个球体都与一些物理特性相关联:位置、半径、质量、速度和ID都表示为1d或3d阵列。我想以一种完全随机的方式洗牌这些球体,这样任何一个球体都会保留它的所有属性,除了它的3d位置数组。我在这里遇到过类似的问题(随机洗牌列,第一列除外),但是,有没有一种简单而快速的python方法可以在不使用DataFrame的情况下做到这一点? 谢谢你的帮助。