【问题标题】:Sync'd Hashtable not PowerShell display-friendly. Try: [HashTable]::Synchronized(@{})Sync'd Hashtable 对 PowerShell 显示不友好。试试:[HashTable]::Synchronized(@{})
【发布时间】:2010-10-20 15:53:49
【问题描述】:

我有一个来自 .Net 的对象,该对象具有 SyncHashTable 类型的属性,如果不抛出异常,则无法查看该属性。

单行重现:

[HashTable]::Synchronized(@{})

使用repro更容易玩多行:

$ht = new-object hashtable
$ht.add("foo", "bar")
$hts = [Hashtable]::Synchronized($ht)
$hts

错误:

format-default : Object reference not set to an instance of an object.
    + CategoryInfo          : NotSpecified: (:) [format-default], NullReferenceException
    + FullyQualifiedErrorId : System.NullReferenceException,Microsoft.PowerShell.Commands.FormatDefaultCommand

有人对此有任何见解吗?

【问题讨论】:

    标签: powershell hashtable synchronized


    【解决方案1】:

    从微软那里得到消息说这可以工作:

    PS> $r = [hashtable]::Synchronized(@{})
    PS> $r|format-table -expand coreonly -autoSize
    
    Count IsReadOnly IsFixedSize IsSynchronized SyncRoot      Keys Values
    ----- ---------- ----------- -------------- --------      ---- ------
        0      False       False           True System.Object {}   {}
    
    PS> $r.Add("key","value")
    PS> $r["key"]
    value
    

    显然这是类型显示格式的错误。

    【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多