Quiero obtener el nombre para mostrar de Office 2019 "Microsoft Office Professional Plus 2019 - en-us" y repetirlo.
Encontré el comando cmd usando el comando powercell.
Powershell /command "Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProPlus2019Volume* | Select-Object DisplayName"
DisplayName
-----------
Microsoft Office Professional Plus 2019 - en-us
¿Cómo obtenerlo usando la línea de comando "para" detectar? (También puede utilizar "consulta de registro" en lugar de powershell).
Respuesta1
suponiendo que su intención REAL es obtener una lista de nombres de aplicaciones instaladas utilizando un conjunto de patrones para esos nombres, esto lo hará. También supone que las aplicaciones se instalaron mediante los métodos habituales, como con un archivo MSI o administración de paquetes. [sonrisa]
el código ...
$PackageProviderList = @(
'msi'
'programs'
)
$TargetAppList = @(
'libreoffice*'
'microsoft visual c*'
)
$FoundAppList = (Get-Package -ProviderName $PackageProviderList -Name $TargetAppList).Name |
Sort-Object
$FoundAppList
la salida en mi sistema en este momento...
LibreOffice 7.2 Help Pack (English (United States))
LibreOffice 7.2.2.2
Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.30.30704
Microsoft Visual C++ 2015-2022 Redistributable (x86) - 14.30.30704
Microsoft Visual C++ 2022 X64 Additional Runtime - 14.30.30704
Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.30.30704
Microsoft Visual C++ 2022 X86 Additional Runtime - 14.30.30704
Microsoft Visual C++ 2022 X86 Minimum Runtime - 14.30.30704
qué hace el código...
- crea una lista de los tipos de proveedores deseados
de los que no quería cosasmsu
,nuget
opowershellget
. - crea una lista de cosas instaladas para buscar y
utiliza comodines para evitar tener que conocer los nombres de los objetivos de antemano. - se ejecuta
Get-Package
para obtener una lista de instalaciones coincidentes - toma los valores de
.Name
las propiedades en el resultado - ordena la lista
- almacena eso en un $Var
- muestra esa lista en la pantalla
Respuesta2
set Office2019ProductReg="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProPlus2019Volume - en-us"
for /f "usebackq tokens=1-2*" %%a in (`"reg query %Office2019ProductReg% /v DisplayName|find /i "DisplayName""`) do (
set office_ProductName=%%c
)