我正在尝试找到一种方法,使键具有从文本文件中读取的多个值。我几乎已经弄清楚了,但仍然停留在如何使用数组值创建键上。我从一个格式为
的文本文件中读取了该文件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语句几乎说如果下一行也有“:”,则此当前行没有附加作业,因此请跳过。
答案 0 :(得分:1)
您使这种方式过于复杂。这样的东西就足够了:
$hash = @{}
Get-Content 'C:\serversjobs.txt' | ForEach-Object {
$line = $_.Replace(':', '').Trim()
if ($_ -like '*:*') {
$server = $line
$hash[$server] = @()
} elseif ($line) {
$hash[$server] += $line
}
}