PowerShell将字典转换为哈希表

时间:2018-02-08 06:41:47

标签: powershell dictionary hash hashtable

我在Azure上运行了一个Runbook。我得到一个数据类型 System.Collections.Generic.Dictionary`2 [System.String,System.String] ,但我需要将其转换为 System.Collections.Hashtable

我找到了使用C#的example,但我怎样才能使用Power Shell?

换句话说,在我的场景中,我需要将字典类型转换为哈希表。

3 个答案:

答案 0 :(得分:3)

PowerShell中的C#答案很简单:

Write-Host "....dictionary"
$d = [System.Collections.Generic.Dictionary`2[System.String,System.String]]::new()  # `
$d.Add("one", "111")
$d.Add("two", "222")
Write-Host "$d"
$d | ft

Write-Host "....hashtable"
$h = [System.Collections.Hashtable]::new($d)
Write-Host "$h"
$h | ft

答案 1 :(得分:3)

使用更加PowerShell惯用的解决方案来补充Kory Gill's helpful answer

  • PowerShell的[System.Collections.Hashtable]类型加速器是[hashtable]

  • 如果演员的类型具有RHS类型的单参数构造函数或由其实现的接口,PowerShell允许您使用强制转换语法

因此,在这种情况下,你可以直接投射到[hashtable] [1]

# Create a sample dictionary (using PSv5+ syntax; in PSv4-, use New-Object)
($dict = [Collections.Generic.Dictionary[string, string]]::new()).Add('foo', 'bar')

# Cast the dictionary directly to a hashtable.
[hashtable] $dict

[1]通用字典实现IDictionary接口(以及其他),[hashtable]具有public Hashtable (System.Collections.IDictionary d) constructor

答案 2 :(得分:0)

您可以通过预定义变量类型将Dictionary转换为哈希表。

[hastable]$var = $var