Вы сравниваете строки, а не «версии». Если вы проверяете только на простое равенство, тогда прямое сравнение строк сделает:
PS C:\> "10.5" -eq "10.5"
True
Однако, если вы хотите определить, скажем, одна версия больше другой, строки работать не будут. Например:
PS C:\> "100.5" -gt "55.3"
False
В этом случае вы должны привести строки версии к фактическим версиям типов, тогда сравнение будет работать правильно. Например:
$tmp = Get-WmiObject -Namespace "root\cimv2\security\microsofttpm" -Class Win32_TPM
if ([Version]$tmp.ManufacturerVersion -eq [Version]"8.0")
{
"Success"
}
else
{
"Fail"
}
Кроме того, если вам нужно сравнить версию TPM с несколькими возможностями, то оператор switch делает для более аккуратного кода:
$tmp = Get-WmiObject -Namespace root\cimv2\security\microsofttpm -Class Win32_TPM
Set-Location "C:\Users\ADministrator\Desktop\TPM Downgrade"
switch([Version]$tmp.ManufacturerVersion)
{
{$_ -eq [Version]"7.62"} { '.\7.62 downgrade.cmd'}
{$_ -eq [Version]"7.61"} { '.\7.61 downgrade.cmd'}
{$_ -eq [Version]"7.60"} { '.\7.60 downgrade.cmd'}
{$_ -eq [Version]"7.41"} { '.\7.41 downgrade.cmd'}
{$_ -eq [Version]"7.40"} { '.\7.40 downgrade.cmd'}
default {"Unable to find downgrade BIN for your firmware version"}
}