Powershell Win32_OperatingSystem选择Caption compare与OS Version'Microsoft Windows Server 2008 R2 Enterprise'导致错误的结果

时间:2016-11-08 14:19:51

标签: powershell

当我尝试将我的操作系统版本“Microsoft Windows Server 2008 R2 Enterprise”与Win32_OperatingSystem进行比较时,选择标题结果会导致错误。

示例:

$Server='Computername' #Computername which has OS Version 'Microsoft Windows Server 2008 R2 Enterprise'
$OSVersion = Invoke-command -computername $Server -scriptblock {Get-WmiObject -class Win32_OperatingSystem | select Caption}
#OS Version comparing with Win32_OperatingSystem caption
If ($OSVersion.Caption -eq 'Microsoft Windows Server 2008 R2 Enterprise')
{
Write-Host 'True'
}
Else
{ Write-Host 'False'}

结果:

False

但它应该导致True。有人可以解释为什么即使我的操作系统版本和选择标题是正确的,它也会导致错误。

2 个答案:

答案 0 :(得分:0)

如果您运行此命令

Get-WmiObject -class Win32_OperatingSystem -ComputerName insert the computername | select Caption

结果是否真的是Microsoft Windows Server 2008 R2 Enterprise?

如果我在我的电脑上运行这样的脚本

$Server='laptop090' #Computername which has OS Version 'Microsoft Windows Server 2008 R2 Enterprise'
$OSVersion = Get-WmiObject -class Win32_OperatingSystem -ComputerName $Server | select Caption
#OS Version comparing with Win32_OperatingSystem caption
If ($OSVersion.Caption -eq 'Microsoft Windows 10 Pro Insider Preview')
{
Write-Host 'True'
}
Else
{ Write-Host 'False'}

工作

答案 1 :(得分:0)

我在下面的脚本中执行了解为什么会产生错误'错误' for OS Version' Microsoft Windows Server 2008 R2 Enterprise'

$Server='ComputerName'
$OSVersion = 'Microsoft Windows Server 2008 R2 Enterprise'
$OSVersionCaption = Invoke-command -computername $Server -scriptblock {Get-WmiObject -class Win32_OperatingSystem | select Caption}
$OSVersionCaption.Caption.length
$OSVersion.length

Result:
43
44

看到结果我真的很惊讶。长度不匹配,发现在操作系统版本和Microsoft Windows Server 2008 R2企业版的末尾有一个空格。引起了这个问题。 此问题仅适用于操作系统版本和Microsoft Windows Server 2008 R2 Enterprise'而不是其他操作系统版本。

结论以下命令没有问题。操作系统版本' Microsoft Windows Server 2008 R2 Enterprise'

的问题
Get-WmiObject -class Win32_OperatingSystem | select Caption

有人可以尝试使用操作系统版本' Microsoft Windows Server 2008 R2 Enterprise'并确认。