Sie diese durch Filterung tun können:
if (($arr | Where-Object { $_ -like 'server3*' })) {
# do stuff
}
if ($arr.Where({ $_ -like 'server3*' })) {
# do stuff
}
Sie auch die Vorteile der Tatsache, dass -like
und -match
Betreiber eine auf Sammlungen arbeiten kann, und zurück nehmen Sammlung, die die Bedingung erfüllt, und dann weiter auf die Tatsache, dass eine leere Sammlung $false
:
bewerten wird
Nachdem ich Ihre Frage erneut gelesen habe, sehe ich, dass dies nicht ganz das ist, wonach Sie suchen.
In Ihrem Beispiel der Wert in $arr
ist eine Teilmenge von $ser
, so könnte man dies tun:
if ($arr.Where({ $ser -match $_ })) { }
Aber es ist nicht klar, ob das wird immer der Fall sein.
Vielleicht etwas sicherer, aber auch ausführlicher wäre sowohl gegeneinander zu überprüfen:
if (
$arr | Where-Object {
$_ -like "*$ser*" -or
$ser -like "*$_*"
}) {
# do stuff
}
Um zu wissen, was tatsächlich abgestimmt wurde, habe ich einen etwas anderen Ansatz würde vorschlagen:
$arr | ForEach-Object {
if ($_ -like $ser) {
# do stuff
# $_ will refer to the array member that was matched
}
}
Der Vorbehalt hier ist, dass # do stuff
einmal für jedes Spiel ausgeführt wird, anstatt einmal , wenn eine Übereinstimmung gefunden wurde.
Eine andere Möglichkeit:
$itemsMatched = $arr -like $ser
if ($itemsMatched) {
# do stuff (executed once)
}
In diesem Fall werden die $itemsMatched
Anordnungselemente enthalten, die angepaßt (es können mehr als eins sein).
Dies scheint zu funktionieren: if ($ arr | Where-Object {$ _ -ähnlichen $ ser) {tun Sachen} Followup Frage wenn ich darf? Wie würde ich zu Protokollierungszwecken sehen, auf was es abgestimmt ist? –
@ThomasGuidry siehe meine Bearbeitung. – briantist
Dies funktioniert: $ arr = "server1", "server2", server3 " $ ser =" server3-test " if ($ arr.Wo ({$ ser -match $ _})) { "gefunden" } Dies gilt nicht $ arr = "server1", "server2", server3" $ ser = "server3-Test" $ arr | ForEach-Object { if ($ _ -ähnlichen $ ser) { „gefunden“ } } Im Idealfall würde ich mag die zweite verwenden, weil es hoffentlich mir alle Spiele bekommen würde und ich es nutzen könnte, um "Do stuff" einmal auch. –