用于检查 TPM 制造商版本的 Powershell 脚本(如果为其他)



我正在尝试降级几台HP笔记本电脑上的TPM。我正在尝试创建一个 powershell 脚本,该脚本将获取 TPM 制造商版本号,并根据可能的数字列表检查该数字。一旦它匹配这些数字之一,请执行程序以降级TPM版本。

我首先将输出扔到一个变量中,并尝试根据静态数字检查变量以启动正确的程序。变量已存储,但是当我尝试将其与"7.61"进行检查时,它似乎并没有实际检查结果。7.61 的结果不返回"成功">

我意识到Powershell是不同的,我的IF ELSE语句可能已经过时了。任何帮助将不胜感激!

假设 TPM 制造商版本为 7.61

$variable = get-WmiObject -Namespace rootcimv2securitymicrosofttpm -Class Win32_Tpm | Select-Object ManufacturerVersion | Out-String
if($variable -eq "8"){
Write-Host "success"
}else{
Write-Host "Fail"
}

在此处输入图像描述

您正在比较字符串,而不是"版本"。 如果您只检查简单相等性,那么使用直接字符串比较就可以了:

PS C:> "10.5" -eq "10.5"
True

但是,如果要确定一个版本是否大于另一个版本,则字符串将不起作用。 例如:

PS C:> "100.5" -gt "55.3"
False

在这种情况下,您应该将版本字符串强制转换为实际的版本类型,然后比较将正常工作。 例如:

$tmp = Get-WmiObject -Namespace "rootcimv2securitymicrosofttpm" -Class Win32_TPM
if ([Version]$tmp.ManufacturerVersion -eq [Version]"8.0")
{
"Success"
}
else
{
"Fail"
}

此外,如果您需要将 TPM 版本与多种可能性进行比较,则 switch 语句可以生成更整洁的代码:

$tmp = Get-WmiObject -Namespace rootcimv2securitymicrosofttpm -Class Win32_TPM 
Set-Location "C:UsersADministratorDesktopTPM 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"}
}

试试这个

$variable = get-WmiObject -Namespace rootcimv2securitymicrosofttpm -Class Win32_Tpm | Select-Object ManufacturerVersion
if($variable.ManufacturerVersion -eq "8"){
Write-Host "success"
}else{
Write-Host "Fail"
}

感谢大家的反馈和帮助。这是最终产品,效果很好。

$tmp = get-WmiObject -Namespace rootcimv2securitymicrosofttpm -Class Win32_TPM 
Set-Location "C:UsersADministratorDesktopTPM Downgrade"
if ([Version]$tmp.ManufacturerVersion -eq [Version]"7.62"){
& '.7.62 downgrade.cmd'
}elseif ([Version]$tmp.ManufacturerVersion -eq [Version]"7.61"){
& '.7.61 downgrade.cmd'
}elseif ([Version]$tmp.ManufacturerVersion -eq [Version]"7.60"){
& '.7.60 downgrade.cmd'
}elseif ([Version]$tmp.ManufacturerVersion -eq [Version]"7.41"){
& '.7.41 downgrade.cmd'
}elseif ([Version]$tmp.ManufacturerVersion -eq [Version]"7.40"){
& '.7.40 downgrade.cmd'
}else{
Write-Host "Unable to find downgrade BIN for your firmware version"
}

相关内容

  • 没有找到相关文章

最新更新