Это работает, потому что значение свойства Extension
в вашем случае равно точно .jpg
.
Как Lee_Dailey упоминает , используя -like
без каких-либо подстановочные знаки в вашем шаблоне функционально эквивалентны $string -eq $pattern
.
Зачем тогда использовать -like
? *
В вашем случае функциональной разницы нет, поскольку Extension
уже введите [string]
- но - это одна веская причина для использования -like
сверх -eq
при сравнении строк - и это то, что -like
выполняет только сравнение строк , что означает что вы можете гарантировать, что оба операнда обрабатываются как строки.
При -eq
выполняемое сравнение полностью зависит от типа левого операнда (или lhs ) операнда :
PS C:\> $null -eq "" # $null is not a string
False
PS C:\> $null -like "" # But -like attempts to convert $null to [string], we get an empty one
True
Это относится к любому типу операнда, а не только $null
:
PS C:\> (Get-Item C:\Windows) -eq 'C:\Windows' # [System.IO.DirectoryInfo] is also not [string]
False
PS C:\> (Get-Item C:\Windows) -like 'C:\Windows' # But `-like` treats it as one
True