Рассмотрим следующие утверждения:Использование скобок для нескольких логических операций
Get-ChildItem -Recurse *.vbs | Where-Object{$_.name -like "d*" -and $_.name -like "*s"}
Get-ChildItem -Recurse *.vbs | Where-Object{($_.name -like "d*") -and ($_.name -like "*s")}
Они будут производить тот же вывод. Я всегда предполагал, что первое утверждение потерпит неудачу, поскольку условия не были в круглых скобках.
Ознакомиться с about_Logical_Operators примерами для -and
и -or
показаны эти круглые скобки.
(1 -eq 1) -or (1 -eq 2)
Но чистая статья технологии для Using the Where-Object Cmdlet показывает этот пример
$_.handles -gt 200 -and $_.name -eq "svchost"
Некоторое время я говорил людям использовать скобки, потому что «в противном случае он не будет работать». Является ли разница чисто косметической и в конечном итоге не имеет значения, и я просто подталкиваю свои личные предпочтения?
Мое перемещение этого текста заключается в том, что он оценивает то, что слева, а затем справа, если требуется, независимо от наличия скобок. Это точка, которую я должен получить? – Matt
Да. Логическое выражение оценивается слева направо, и вы несете ответственность за размещение круглых скобок, если оценка по умолчанию не соответствует ожидаемому. –