PowerShell - trabalhando com vários pontos decimais (por exemplo, versões do driver)

-1

Estou tentando criar um script para atualizar máquinas que usam drivers antigos.

Eu posso pegar os dispositivos que quero segmentar assim: Get-WmiObject win32_pnpsigneddriver |where {$_.DeviceID -match "VEN_8086&DEV_0083"}

Agora, a versão atual do driver para isso é 17.0.2, mas a máquina que estou testando tem a versão 14.1.1.3 instalada.

Eu quero que minha linha de código use algo assim:

Get-WmiObject win32_pnpsigneddriver |
where {$_.DeviceID -match "VEN_8086&DEV_0083" -AND $_.DriverVersion -le 17.0.2.0}

que falha, é claro, já que você não pode ter dois pontos decimais em um número. Se mudar meu código para ser: Get-WmiObject win32_pnpsigneddriver |where {$_.DeviceID -match "VEN_8086&DEV_0083" -AND $_.DriverVersion -le 17.0} , em seguida, recebo a resposta que quero, mas é claro que quando a versão 17.0.9.9 está fora e minha máquina de destino está executando o 17.0.2.0, o driver não será atualizado.

Alguma idéia de como eu posso comparar números como esse?

    
por Kieran Walsh 22.05.2014 / 11:05

1 resposta

3

você também pode digitar strongmente para [versão]. (Post de Shay Levy)

Get-WmiObject win32_pnpsigneddriver | where {$_.DeviceID -match "VEN_8086&DEV_0083" -and [version]$_.DriverVersion -lt [version]'1.7.0.2'}
    
por 22.05.2014 / 12:24