Powershell 将键值对列表转换为哈希表

Powershell 将键值对列表转换为哈希表,powershell,Powershell,将列表转换为哈希表的最佳方式是什么 假设我有一个类似于(“Key”、$value、$Key2”、$value2)的列表 将其转换为哈希表的最短语法是什么?请尝试以下方法 $table = new-object System.Collections.Hashtable for ( $i = 0; $i -lt $list.Length; $i += 2 ) { $table.Add($list[$i],$list[$i+1]); } 那么: $ht = @{} $key = ""; ("Ke

将列表转换为哈希表的最佳方式是什么

假设我有一个类似于
(“Key”、$value、$Key2”、$value2)的列表

将其转换为哈希表的最短语法是什么?

请尝试以下方法

$table = new-object System.Collections.Hashtable
for ( $i = 0; $i -lt $list.Length; $i += 2 ) {
  $table.Add($list[$i],$list[$i+1]);
}
那么:

$ht = @{}
$key = "";
("Key",5,"Key2",6) | foreach `
{  
    if($key)  
    {
        $ht.$key = $_; 
        $key=""; 
    } else 
    {$key=$_}   
}

如果您的KeyValuePair显式为“Microsoft.Azure.Management.WebSites.Models.NameValuePair”,则可以使用:

    Function ConvertListOfNVPTo-Hashtable($list) {
    $h = @{}
    $list | ForEach-Object {
        $h[$_.Name] = $_.Value
    }
    return $h
}

我想我希望有一个更简洁的东西,但你可以简化一点:$ht=@{}$key=0“key”,5,“Key2”,6 | foreach{if($key){$ht.$key=$\$key=0}否则{$key=$\}谢谢。我想打字少了点。没问题。我非常喜欢当属性名是变量时,可以使用属性语法设置哈希表条目,例如$ht.$key=$\ux。这让我觉得很漂亮。:-)另见Bruce Payette的帖子:是的。此外,这是功能领域的标准模式。它可以缩短为while($head,$next,$list=$list){$h.$head=$next}在Perl中比较容易,不是吗?:)也适用于环境变量:
$artifacts=gci env:*| Sort Name | Where Object{$\uu.Name-类似于“RELEASE\u artifacts”}$结果=@{artifacts=converttohashtable($artifacts)}$results | converttojson
Function ConvertTo-Hashtable($list) {
    $h = @{}

    while($list) {
        $head, $next, $list = $list
        $h.$head = $next
    }

    $h
}

ConvertTo-Hashtable ("Key",1,"Key2",2)
    Function ConvertListOfNVPTo-Hashtable($list) {
    $h = @{}
    $list | ForEach-Object {
        $h[$_.Name] = $_.Value
    }
    return $h
}