【问题标题】:How do I create an anonymous object in PowerShell?如何在 PowerShell 中创建匿名对象?
【发布时间】:2016-03-18 10:00:47
【问题描述】:

我想创建一个任意值的对象,有点像我在 C# 中如何做到这一点

var anon = new { Name = "Ted", Age = 10 };

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以按照最容易使用的顺序执行以下任何操作:

    1. 在 PowerShell 5+ 中使用 Vanilla Hashtable

      在 PS5 中,普通哈希表适用于大多数用例

      $o = @{ Name = "Ted"; Age = 10 }
      

    2. 将哈希表转换为PSCustomObject

      如果您没有强烈的偏好,只需在普通哈希表不起作用的地方使用它:

      $o = [pscustomobject]@{
          Name = "Ted";
          Age = 10
      }
      

    3. 使用Select-Object cmdlet

      $o = Select-Object @{n='Name';e={'Ted'}},
                         @{n='Age';e={10}} `
                         -InputObject ''
      

    4. 使用New-ObjectAdd-Member

      $o = New-Object -TypeName psobject
      $o | Add-Member -MemberType NoteProperty -Name Name -Value 'Ted'
      $o | Add-Member -MemberType NoteProperty -Name Age -Value 10
      

    5. 使用New-Object 和哈希表

      $properties = @{
          Name = "Ted";
          Age = 10
      }
      $o = New-Object psobject -Property $properties;
      

    注意:对象与哈希表

    哈希表只是包含keysvalues 的字典,这意味着您可能无法从查找objectsproperties 的其他PS 函数获得预期结果:

    $o = @{ Name="Ted"; Age= 10; }
    $o | Select -Property *
    

    进一步阅读

    【讨论】:

      【解决方案2】:

      试试这个:

      PS Z:\> $o = @{}
      PS Z:\> $o.Name = "Ted"
      PS Z:\> $o.Age = 10
      

      注意:您还可以将此对象作为Invoke-RestMethod-Body 包含在内,并且无需额外工作即可对其进行序列化。

      更新

      注意下面的 cmets。这将创建一个哈希表。

      【讨论】:

      • 我喜欢这样做:$o = [ordered]@{ Name = "Ted"; Age = 10 }
      • @CB。可能想澄清[ordered] 在这种情况下的用途。
      • “[ordered]”是类型加速器;它是 PowerShell 3.0 的新功能。只是说右边是OrderedDictionaryYou don't need it, but it's nice.
      • 不是自定义对象。这是一个哈希表,请查看此$o.GetType()。在严格的 PS 模式下它不起作用,只有 $o['Name']
      • 请注意the answer by prampe 以几乎与 OP 所希望的完全相同的语法显示如何执行此操作:$anon = @{ Name="Ted"; Age= 10; }。这可以从 PowerShell 5 向上实现。
      【解决方案3】:

      使用 PowerShell 5+ 只需声明为:

          $anon = @{ Name="Ted"; Age= 10; }
      

      【讨论】:

        猜你喜欢
        • 2011-09-17
        • 2019-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2010-10-13
        • 2010-09-11
        相关资源
        最近更新 更多