Вместо использования нескольких IF
- вы можете использовать переключатель, управляемый буквой перед
Root
, определяемой - a RegEX, хранящим совпавший символ в группе захвата() вызывается через
$Matches[1]
:
$filePath = '.\files.txt'
Get-Content $filePath | Where-Object {$_ -match '([PST])Root'} | ForEach-Object {
$line = $_
switch ($Matches[1]){
'P' {'{0}={1}' -f $_,$line} # code in {} to execute on P
'S' {'{0}={1}' -f $_,$line} # code in {} to execute on S
'T' {'{0}={1}' -f $_,$line} # code in {} to execute on T
}
}
Пример вывода:
P=P:/TEMP/PRoot/Digvijay/Patil/1.png
S=S:/TEMP/SRoot/Digvijay/Patil/2.png
T=T:/TEMP/TRoot/Digvijay/Patil/3.png
PS: оператор -match
иоператор switch по умолчанию нечувствителен к регистру,
, чтобы изменить это поведение, используйте -cmatch
соотв.Переключатель с параметром -CaseSensitive
.