在 Powershell 中使用哈希表作为具有多个值的键

using a HashTable for key with multiple values in Powershell

我正在尝试找出一种方法来拥有一个具有多个值的键,该键可以从文本文件中读取。我几乎想通了,但仍然坚持如何使用数组值制作键。我从格式为

的文本文件中读取它
Server1:
job1
job2
job3
Server2:
Job1
Server3:
Job1
Job2

我设法拆分了行,但无法弄清楚如何使密钥不同并且每个行都有一对作业。我的代码如下:

$hash = @{}
$content = Get-Content "C:\serversjobs.txt"
for ($i = 0; $i -lt $content.Count; $i++) {
    $line = $content[$i]
    if (($line -like '*:*') -and ($i + 1 -lt $content.Count)) {
        $nextLine = $content[$i+1]
        if ($nextLine -notlike '*:*') {
            $Server = $line.Replace(":", "").Trim().ToString()
            $hash.Server = @()
        }
    } elseif ($line -notlike '*:*') {
        $hash.Server += $line
    }
}
Write-Host $hash.Server

无论何时输出,它都会输出所有作业。我不知道从这里去哪里。我也在展望下一行,因为有些服务器没有任何工作,所以不应该包括在内。 for 语句基本上是说如果下一行也有“:”那么当前行没有附加的作业所以跳过。

你把这种方式搞得太复杂了。这样的东西就足够了:

$hash = @{}
Get-Content 'C:\serversjobs.txt' | ForEach-Object {
    $line = $_.Replace(':', '').Trim()
    if ($_ -like '*:*') {
        $server = $line
        $hash[$server] = @()
    } elseif ($line) {
        $hash[$server] += $line
    }
}