Estoy tratando de hacer un script para actualizar las máquinas que usan controladores antiguos.
Puedo obtener los dispositivos que quiero apuntar de esta manera:Get-WmiObject win32_pnpsigneddriver |where {$_.DeviceID -match "VEN_8086&DEV_0083"}
Ahora la versión actual del controlador para esto es 17.0.2 pero la máquina en la que estoy probando tiene instalada la versión 14.1.1.3.
Quiero que mi línea de código use algo como esto:
Get-WmiObject win32_pnpsigneddriver |
where {$_.DeviceID -match "VEN_8086&DEV_0083" -AND $_.DriverVersion -le 17.0.2.0}
eso falla, por supuesto, ya que no puede tener dos puntos decimales en un número. Si cambio mi código para que sea:
Get-WmiObject win32_pnpsigneddriver |where {$_.DeviceID -match "VEN_8086&DEV_0083" -AND $_.DriverVersion -le 17.0}
entonces obtengo la respuesta que quiero pero, por supuesto, cuando la versión 17.0.9.9 está fuera y mi máquina de destino está ejecutando 17.0.2.0, el controlador no se actualizará.
¿Alguna idea sobre cómo puedo comparar números como este?
fuente
compare version numbers powershell
me dio cupfighter.net/2009/06/powershell-comparing-version-numbers como el mayor éxito que sugiere usar el tipo incorporado de Powershell[version]
. ¿Eso no te funciona?comparing numbers with multiple decimal places
, pero eso no dio resultados positivos. Gracias por el enlace: no he oído hablar de esa opción de comparación antes.Respuestas:
También puede escribir fuertemente a [versión]. (Publicación de Shay Levy)
fuente