Мне интересно, как или использовать динамические условные параметры при использовании оператора IF в powershell?Динамические условные параметры в выражении IF?
По существу, список условий может быть от 1 до многих, и мне нужно будет создать какой-то фильтр, но не уверен, как достичь этого в powershell или, если это возможно.
Я создал небольшой пример того, что я пытаюсь сделать, очевидно, в реальном примере параметры были бы действительно динамическими.
$include = @("*dynamic*", "*text*")
$testString = "This is a string of text where I want to match dynamic conditional statements"
$filter = ""
foreach ($i in $include) {
$filter = $([string]::Format('{0} -like "{1}"', $filter, $i))
}
write-host $filter
#What I want it to do in pseduo code
#if ($testString matches $filter) { DoSomething }
#What it should literally do based on above example
if ($testString -like "*dynamic*" -and $testString -like "*text*") { write-host $testString }
Это, как я получил это работает для всех, кто работает в проблему и требует более четкого примера. Я в основном построил инструкцию, используя цикл foreach в содержимом массива, содержащего параметры. Если это был первый параметр, он включает в себя начальный оператор IF, а после завершения цикла он заключает в закрывающие скобки и какой код запускается, если выполняется условие IF.
$include = @("*dynamic*", "*text*")
$testString = "This is a string of text where I want to match dynamic conditional statements"
$varnametocompare = '$testString'
$x = 0
$filter = ""
foreach ($i in $include) {
if ($x -eq 0) {
$filter = $([string]::Format('if({0} -like "{1}"', $varnametocompare, $i))
$x++
}
else {
$filter = $([string]::Format('{0} -or {1} -like "{2}"', $filter, $varnametocompare, $i))
}
}
$filter = $([string]::Format('{0}) {{ Write-Host {1} }}', $filter, $varnametocompare))
Invoke-Expression $filter
'если ($ (Еогеасп ($ я в $ включить) {если ($ СравниваемаяСтрока -notlike $ я) {$ ложь; разрыв}} $ верно)) {} DoSomething ' – PetSerAl