【问题标题】:Mutual lists in Constrained Language Mode受限语言模式下的相互列表
【发布时间】:2022-10-19 20:07:55
【问题描述】:

作为List Class 的相互.Net 列表通常优于原生不可变PowerShell Array @() 以及:

不幸的是,这些类型在Constrained Language mode 中不可用

$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'
$List = [Collections.Generic.List[object]]::new()

无效操作: 无法创建类型。此语言模式仅支持核心类型。

有没有办法解决这个问题?

【问题讨论】:

    标签: list powershell


    【解决方案1】:

    如果需要,受约束的language mode 可能是一个安静的负担 编写复杂的(递归)PowerShell 脚本。

    无论如何,作为一种解决方法,您可以考虑使用本机 PowerShell HashTable 集合(或 [ordered] 类型)来代替:

    # $ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"
    $List = @{}
    function AddItem { $List.Add($List.Count, (New-Guid)) }
    AddItem
    AddItem
    $List.Values
    
    Guid
    ----
    b22f9cdd-9dba-4868-978e-ccdee3723685
    2ccd98a0-a729-4b07-9bd9-8f1306be28d3
    

    请注意,有一个未解决的问题请求#5643 PowerShell should support creating an List similar to how it supports arrays 这可能意味着建议语法糖与受限语言模式兼容

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      相关资源
      最近更新 更多