【问题标题】:How to read a hashtable in powershell?如何在PowerShell中读取哈希表?
【发布时间】:2021-01-22 03:16:24
【问题描述】:

我有一个包含以下值的哈希表,

$jumpHash = @{3 = {"JumpPC-1", "JumpPC-3", "JumpPC-5"}; 2 = {"JumpPC-2", "JumpPC-4"} }

我想读取键(2 & 3) 的值并将其应用到-Name off Import-VApp 命令中

    $jumpHash.GetEnumerator() | foreach {
      Import-VApp -Source $jumphostpath -Name $_.Key -DiskStorageFormat Thin -VMHost $vmshost -Datastore $storage
}

请建议一种方法来读取每个键的所有值并在 -Name 属性中传递值

【问题讨论】:

  • $hostHash = @{3 = (JumpPC-1, JumpPC-3, JumpPC-5)} ; 2 = (JumpPC-2, JumpPC-4)} 无效代码,请更新您的问题

标签: powershell hashtable powershell-2.0 powershell-3.0 powershell-4.0


【解决方案1】:
$jumpHash = @{3 = @("JumpPC-1", "JumpPC-3", "JumpPC-5"); 2 = @("JumpPC-2", "JumpPC-4")}

2..3 | % {$jumpHash[$_] | % {$_}} | Import-VApp

【讨论】:

    【解决方案2】:

    由于缺乏信息,此答案未经测试,但它会遍历 hosthash 并将结果放入 -Name

    $jumpHash = @{3 = { "JumpPC-1", "JumpPC-3", "JumpPC-5" }; 2 = { "JumpPC-2", "JumpPC-4" } }
    
    $jumpHash.GetEnumerator() | ForEach-Object {
    $_.value.ToString().split(',') | Foreach-Object {
        Import-VApp -Source $jumphostpath -Name $_ -DiskStorageFormat Thin -VMHost $vmshost -Datastore $storage
    }
    

    }

    下次请提供正确的哈希表。 $jumpHash 的内容也很有用,所以我们可以运行实际的代码。

    【讨论】:

    • 我已经相应地编辑了哈希表,还添加了 $jumpHash 的值。这里是 $jumpHash = @{3 = ("JumpPC-1", "JumpPC-3", "JumpPC-5"); 2 = ("JumpPC-2", "JumpPC-4") } 请忽略变量 $hosthash
    • @Iterator 由于 $hosthash 和 $jumphash 原来是相同的,我删除了第二个 foreach-object。
    • 收到以下回溯:Import-VApp:无法将“System.Object[]”转换为参数“Name”所需的“System.String”类型。不支持指定的方法。在 C:\TestHashtablescript.ps1:64 char:43 + Import-VApp -Source $jumphostpath -Name $_.Value -DiskStorageFormat ...
    • 添加了另一个拆分值的小循环。
    • 不确定Import-VApp cmdlet,但我认为您可能希望使用-Name $_.Trim('" ') 去掉引号和值周围的多余空格。
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 2017-02-06
    • 2020-11-30
    • 2021-03-02
    相关资源
    最近更新 更多