WMI invece di WMIC per trovare la versione di applicazione?

Sto utilizzando wmic per trovare la versione corrente di un'applicazione in-house. Il mio command sembra questo:

wmic product where "name='Application Name'" get version 

Non ho mai usato wmi, ma ho letto di persone che dicono che è più facile da usare che wmic. Penso che il mio uso sia un modo abbastanza semplice, ma come potrei usare wmi per questo, e sarebbe più veloce di wmic? (wmic funziona molto lentamente per me)

  • Come assegnare due indirizzi IP (uno DHCP, uno statico) ad una NIC utilizzando WMI?
  • Livelli di rappresentazione WMI all'interno del codice vbscript / ASP
  • L'installazione di Windows Management Framework 3.0 distrugge WMI fondamentalmente, come posso risolvere il problema senza reinstallare il sistema operativo?
  • La query WMI di Win32_Product crea gli events nel registro events applicazioni W2K8 +
  • WMI: errore di query dell'agente wmic linux: NTSTATUS: NT_STATUS_ACCESS_DENIED
  • Timestamp dell'aggiornamento dell'ultima definizione per Microsoft Security Essentials via Script
  • Identificare il nucleo di Windows 2000 Server
  • Powershell query WMI ricorsiva
  • 3 Solutions collect form web for “WMI invece di WMIC per trovare la versione di applicazione?”

    PowerShell

     Get-WMIObject -Query "SELECT Version FROM Win32_Product WHERE Name='SomeName'" 

    Ho letto le cose cattive sull'utilizzo di Win32_Product . Non so i dettagli su di esso, quindi forse è bene in questo caso, ma ho finito per andare con i seguenti dopo aver letto questo blog e chiedendo questa domanda :

     $regpath = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall' $version = Get-ItemProperty "$regpath\*" | Where-Object { $_.DisplayName -eq 'Application Name' } | Select-Object -Expand DisplayVersion 

    Per emulare il command wmic inviato utilizzando WMI, aprire un prompt PowerShell e l'input:

    Get-WmiObject -Class "Win32_Product" | Where-Object { $_.Name -eq "Application Name" } | select Name,Version

    È ansible utilizzare { $_.Name -like "*application*" } per una migliore corrispondenza, se necessario.

    Questo può anche essere eseguito contro le macchine remote e / o utilizzando credenziali diverse aggiungendo i parametri -ComputerName e -Credential .

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.