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