Ваша структура if
/ else
неверна внутри $changeAction
. Оба else
блока находятся внутри , что и должно быть их связанным if
блоком. То есть у вас есть это ...
if ($condition) {
else {
}
}
... когда это должно быть так ...
if ($condition) {
# $true branch
} else {
# $false branch
}
Попробуйте определить структуру if
в $changeAction
как это ...
if ($Program -match "Report1") {
Write-Host $Path "Ready for Report1 Generation"
} elseif ($Program -match "Report2") {
Write-Host (Split-Path $Path) "Ready for Report2 Generation"
} else {
Write-Output "Error, not capable of matching identical strings"
}
... и посмотреть, работает ли это. Обратите внимание, что я добавил ()
вокруг вызова к Split-Path $Path
, чтобы он оценивался и результат передавался в Write-Host
.
. Вы также можете переписать вышеприведенное, используя оператор switch
...
switch -Regex ($Program) {
"Report1" {
Write-Host $Path "Ready for Report1 Generation"
break
}
"Report2" {
Write-Host (Split-Path $Path) "Ready for Report2 Generation"
break
}
Default {
Write-Output "Error, not capable of matching identical strings"
break
}
}
Я добавил параметр -Regex
, чтобы сделать его эквивалентным использованию оператора -match
в условиях if
. Обратите внимание, что если вы намеревались выполнить точное сравнение строк в операторах if
, вы можете использовать, например, if ($Program -eq "Report1") {
, чтобы выполнить сравнение без учета регистра. Если вы намеревались выполнить сравнение подстрок, вы можете использовать if ($Program -like "*Report1*") {
вместо оператора -match
.