Рассмотрим следующие утверждения:
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)
Но затем статья технической сети для Использование командлета Where-Object показывает это пример
$_.handles -gt 200 -and $_.name -eq "svchost"
Какое-то время я говорил людям использовать скобки, потому что «иначе это не сработает». Является ли разница чисто косметической и, в конечном счете, не имеет значения, и я просто настаиваю на своих личных предпочтениях?