Лучше всего использовать оператор switch
с параметром -File
:
$found = $false
$value = switch -File file.txt {
'Name' { $found = $true }
default { if ($found) { $_.Substring(1); break } }
}
При вводе пробы $value
должно содержать Gerry
.
$found
устанавливается на $true
, если 'Name'
найден в отдельной строке;в блоке default
, который выполняется для всей другой строки, затем возвращается следующая строка без ее начального (табуляции) символа.
Оборачивается в сценарии с параметрами, смоделированными здесь с помощью блока сценариядля краткости:
# Create a sample file; "`t" creates a tab char.
@"
Name
`tGerry
Class
`tElementary
ID Number
`t0812RX
"@ > file.txt
# Script block that simulates a script file.
& {
param(
[Parameter(Mandatory)] [string] $FilePath,
[Parameter(Mandatory)] [string] $Key
)
$found = $false
switch -File $FilePath {
$Key { $found = $true }
default { if ($found) { return $_.Substring(1) } }
}
} -FilePath file.txt -Key Name
Выше приведено Gerry
.
Обратите внимание, что если в имени вашего ключа есть пробелы, вы должны передать его в кавычках в сценарий;Например:
... -FilePath file.txt -Key 'ID Number'