Szoftvertelepítések használataWorking with Software Installations

A Windows Installer használatára tervezett alkalmazások a WMI Win32_Product osztályán keresztül érhetők el, a jelenleg használatban lévő alkalmazások azonban nem a Windows Installer használják.Applications that are designed to use Windows Installer can be accessed through WMI's Win32_Product class, but not all applications in use today use the Windows Installer. Az alternatív telepítési rutinokat használó alkalmazásokat általában nem a Windows Installer kezeli.Applications that use alternate setup routines are not usually managed by the Windows Installer. Az alkalmazások használatának konkrét módszerei az alkalmazás fejlesztője által készített telepítő szoftvertől és döntésektől függenek.Specific techniques for working with those applications depends on the installer software and decisions made by the application developer. Például a fájlok a számítógép egy mappájába másolásával telepített alkalmazások általában nem kezelhetők az itt tárgyalt módszerek használatával.For example, applications installed by copying the files to a folder on the computer usually cannot be managed by using techniques discussed here. Ezeket az alkalmazásokat fájlok és mappák használatával kezelheti a fájlok és mappákhasználata című cikkben tárgyalt módszerekkel.You can manage these applications as files and folders by using the techniques discussed in Working With Files and Folders.

Figyelemfelhívás

A Win32_Product osztály nincs lekérdezve.The Win32_Product class is not query optimized. A helyettesítő szűrőket használó lekérdezések esetén a WMI az MSI-szolgáltatót használja az összes telepített termék enumerálásához, majd a teljes listát egymás után elemezve kezeli a szűrőt.Queries that use wildcard filters cause WMI to use the MSI provider to enumerate all installed products then parse the full list sequentially to handle the filter. Ez a telepített csomagok konzisztencia-ellenőrzését is kezdeményezi, ellenőrzi és javítja a telepítést.This also initiates a consistency check of packages installed, verifying and repairing the install. Az ellenőrzés lassú folyamat, és hibákat okozhat az eseménynaplókban.The validation is a slow process and may result in errors in the event logs. További információ: tudásbáziscikk 974524.For more information seek KB article 974524.

Windows Installer alkalmazások listázásaListing Windows Installer Applications

A helyi vagy távoli rendszeren Windows Installer telepített alkalmazások listázásához használja az alábbi egyszerű WMI-lekérdezést:To list the applications installed with the Windows Installer on a local or remote system, use the following simple WMI query:

Get-CimInstance -Class Win32_Product |
  Where-Object Name -eq "Microsoft .NET Core Runtime - 2.1.5 (x64)"
Name             Caption                   Vendor                    Version       IdentifyingNumber
----             -------                   ------                    -------       -----------------
Microsoft .NET … Microsoft .NET Core Runt… Microsoft Corporation     16.84.26919   {BEB59D04-C6DD-4926-AFE…

Ha meg szeretné tekinteni a Win32_Product objektum összes tulajdonságát a megjelenítésre, használja a formázási parancsmagok Tulajdonságok paraméterét (például a Format-List parancsmagot * ) a (mind) értékkel.To display all the properties of the Win32_Product object to the display, use the Properties parameter of the formatting cmdlets, such as the Format-List cmdlet, with a value of * (all).

Get-CimInstance -Class Win32_Product |
  Where-Object Name -eq "Microsoft .NET Core Runtime - 2.1.5 (x64)" |
    Format-List -Property *
Name                  : Microsoft .NET Core Runtime - 2.1.5 (x64)
Version               : 16.84.26919
InstallState          : 5
Caption               : Microsoft .NET Core Runtime - 2.1.5 (x64)
Description           : Microsoft .NET Core Runtime - 2.1.5 (x64)
IdentifyingNumber     : {BEB59D04-C6DD-4926-AFEB-410CBE2EBCE4}
SKUNumber             :
Vendor                : Microsoft Corporation
AssignmentType        : 1
HelpLink              :
HelpTelephone         :
InstallDate           : 20181105
InstallDate2          :
InstallLocation       :
InstallSource         : C:\ProgramData\Package Cache\{BEB59D04-C6DD-4926-AFEB-410CBE2EBCE4}v16.84.26919\
Language              : 1033
LocalPackage          : C:\WINDOWS\Installer\4f97a771.msi
PackageCache          : C:\WINDOWS\Installer\4f97a771.msi
PackageCode           : {9A271A10-039D-49EA-8D24-043D91B9F915}
PackageName           : dotnet-runtime-2.1.5-win-x64.msi
ProductID             :
RegCompany            :
RegOwner              :
Transforms            :
URLInfoAbout          :
URLUpdateInfo         :
WordCount             : 0
PSComputerName        :
CimClass              : root/cimv2:Win32_Product
CimInstanceProperties : {Caption, Description, IdentifyingNumber, Name...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

Vagy használhatja a Get-CimInstance Filter paramétert, hogy csak Microsoft .NET 2,0 futtatókörnyezetet válassza ki.Or, you could use the Get-CimInstance Filter parameter to select only Microsoft .NET 2.0 Runtime. A Filter paraméter értéke WMI Query Language (WQL) szintaxist használ, nem a Windows PowerShell-szintaxist.The value of the Filter parameter uses WMI Query Language (WQL) syntax, not Windows PowerShell syntax. Példa:For example:

Get-CimInstance -Class Win32_Product -Filter "Name='Microsoft .NET Core Runtime - 2.1.5 (x64)'" |
  Format-List -Property *

Ha csak az Önt érdeklő tulajdonságokat szeretné listázni, használja a formázási parancsmagok tulajdonság paraméterét a kívánt tulajdonságok listázásához.To list only the properties that interest you, use the Property parameter of the formatting cmdlets to list the desired properties.

Get-CimInstance -Class Win32_Product  -Filter "Name='Microsoft .NET Core Runtime - 2.1.5 (x64)'" |
  Format-List -Property Name,InstallDate,InstallLocation,PackageCache,Vendor,Version,IdentifyingNumber
Name              : Microsoft .NET Core Runtime - 2.1.5 (x64)
InstallDate       : 20180816
InstallLocation   :
PackageCache      : C:\WINDOWS\Installer\4f97a771.msi
Vendor            : Microsoft Corporation
Version           : 16.72.26629
IdentifyingNumber : {ACC73072-9AD5-416C-94BF-D82DDCEA0F1B}

Az összes nem telepíthető alkalmazás listázásaListing All Uninstallable Applications

Mivel a legtöbb standard alkalmazás egy Windows rendszerű Uninstaller-t regisztrál, a Windows beállításjegyzékében megtalálhatja azokat a helyileg is.Because most standard applications register an uninstaller with Windows, we can work with those locally by finding them in the Windows registry. Nincs garantált módszer a rendszer minden alkalmazásának megkeresésére.There is no guaranteed way to find every application on a system. Azonban a Programok telepítése és törlése elemnél megjelenő összes program megtalálható a következő beállításkulcsban:However, it is possible to find all programs with listings displayed in Add or Remove Programs in the following registry key:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.

Ezt a kulcsot megvizsgálhatja az alkalmazások kereséséhez.We can examine this key to find applications. Ahhoz, hogy könnyebb legyen megtekinteni az eltávolítási kulcsot, a PowerShell-meghajtót leképezheti ehhez a beállításjegyzék-helyhez:To make it easier to view the Uninstall key, we can map a PowerShell drive to this registry location:

New-PSDrive -Name Uninstall -PSProvider Registry -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Name       Provider      Root                                   CurrentLocation
----       --------      ----                                   ---------------
Uninstall  Registry      HKEY_LOCAL_MACHINE\SOFTWARE\Micr...

Most már rendelkezik egy "Eltávolítás:" nevű meghajtóval, amely segítségével gyorsan és kényelmesen kereshet az alkalmazás telepítései között.We now have a drive named "Uninstall:" that can be used to quickly and conveniently look for application installations. A telepített alkalmazások számát az Eltávolítás: PowerShell-meghajtóban található beállításkulcsok számának megszámlálásával találhatja meg:We can find the number of installed applications by counting the number of registry keys in the Uninstall: PowerShell drive:

(Get-ChildItem -Path Uninstall:).Count
459

Az alkalmazások listáját további módszerekkel is megkereshetjük, kezdve a következővel: Get-ChildItem .We can search this list of applications further by using a variety of techniques, beginning with Get-ChildItem. Az alkalmazások listájának lekéréséhez és a $UninstallableApplications változóba való mentéséhez használja a következő parancsot:To get a list of applications and save them in the $UninstallableApplications variable, use the following command:

$UninstallableApplications = Get-ChildItem -Path Uninstall:

Az eltávolítás alatt lévő beállításkulcsok bejegyzéseinek megjelenítéséhez használja a beállításkulcsok GetValue metódusát.To display the values of the registry entries in the registry keys under Uninstall, use the GetValue method of the registry keys. A metódus értéke a beállításjegyzékbeli bejegyzés neve.The value of the method is the name of the registry entry.

Ha például meg szeretné keresni az alkalmazások megjelenítendő nevét az eltávolítási kulcsban, használja a következő parancsot:For example, to find the display names of applications in the Uninstall key, use the following command:

$UninstallableApplications | ForEach-Object -Process { $_.GetValue('DisplayName') }

Nem garantálható, hogy ezek az értékek egyediek.There is no guarantee that these values are unique. A következő példában két telepített elem jelenik meg a "Windows Media Encoder 9 Series" néven:In the following example, two installed items appear as "Windows Media Encoder 9 Series":

$UninstallableApplications | Where-Object -FilterScript {
  $_.GetValue("DisplayName") -eq "Microsoft Silverlight"
}
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Name                           Property
----                           --------
{89F4137D-6C26-4A84-BDB8-2E5A4 AuthorizedCDFPrefix :
BB71E00}                       Comments            :
                               Contact             :
                               DisplayVersion      : 5.1.50918.0
                               HelpLink            : https://go.microsoft.com/fwlink/?LinkID=91955
                               HelpTelephone       :
                               InstallDate         : 20190115
                               InstallLocation     : C:\Program Files\Microsoft Silverlight\
                               InstallSource       : c:\ef64c54526db9c34cd477c103e68a254\
                               ModifyPath          : MsiExec.exe /X{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}
                               NoModify            : 1
                               NoRepair            : 1
                               Publisher           : Microsoft Corporation
                               Readme              :
                               Size                :
                               EstimatedSize       : 236432
                               UninstallString     : MsiExec.exe /X{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}
                               URLInfoAbout        :
                               URLUpdateInfo       :
                               VersionMajor        : 5
                               VersionMinor        : 1
                               WindowsInstaller    : 1
                               Version             : 84002534
                               Language            : 1033
                               DisplayName         : Microsoft Silverlight
                               sEstimatedSize2     : 79214

Alkalmazások telepítéseInstalling Applications

A Win32_Product osztály használatával Windows Installer csomagokat távolról vagy helyileg is telepíthet.You can use the Win32_Product class to install Windows Installer packages, remotely or locally.

Megjegyzés

Egy alkalmazás telepítéséhez a PowerShellt a "Futtatás rendszergazdaként" lehetőséggel kell elindítania.To install an application, you must start PowerShell with the "Run as administrator" option.

Távoli telepítés esetén használjon univerzális elnevezési konvenció (UNC) hálózati elérési utat az. msi-csomag elérési útjának megadásához, mert a WMI-alrendszer nem ismeri fel a PowerShell elérési útját.When installing remotely, use a Universal Naming Convention (UNC) network path to specify the path to the .msi package, because the WMI subsystem does not understand PowerShell paths. Ha például a távoli számítógép PC01 hálózati megosztás területén található NewPackage.msi csomagot szeretné telepíteni \\AppServ\dsp , írja be a következő parancsot a PowerShell parancssorába:For example, to install the NewPackage.msi package located in the network share \\AppServ\dsp on the remote computer PC01, type the following command at the PowerShell prompt:

Invoke-CimMethod -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation='\\AppSrv\dsp\NewPackage.msi'}

Azok az alkalmazások, amelyek nem használnak Windows Installer technológiát, rendelkezhetnek alkalmazásspecifikus módszerekkel az automatikus üzembe helyezéshez.Applications that do not use Windows Installer technology may have application-specific methods for automated deployment. Nézze meg az alkalmazás dokumentációját, vagy nézze meg az alkalmazás gyártójának támogatási rendszerét.Check the documentation for the application or consult the application vendor's support system.

Alkalmazások eltávolításaRemoving Applications

Egy Windows Installer csomagnak a PowerShell használatával történő eltávolítása nagyjából ugyanúgy történik, mint a csomagok telepítése.Removing a Windows Installer package using PowerShell works in approximately the same way as installing a package. Íme egy példa, amely kiválasztja az eltávolítandó csomagot a neve alapján. bizonyos esetekben könnyebb lehet szűrni a IdentifyingNumber:Here is an example that selects the package to uninstall based on its name; in some cases it may be easier to filter with the IdentifyingNumber:

Get-CimInstance -Class Win32_Product -Filter "Name='ILMerge'" | Invoke-CimMethod -MethodName Uninstall

Más alkalmazások eltávolítása nem annyira egyszerű, még akkor is, ha helyben végzett.Removing other applications is not quite so simple, even when done locally. Ezekhez az alkalmazásokhoz a UninstallString tulajdonság kibontásával találhatja meg a parancssori eltávolítási karakterláncokat.We can find the command line uninstallation strings for these applications by extracting the UninstallString property. Ez a módszer Windows Installer-alkalmazásokhoz és az eltávolítási kulcs alatt megjelenő régebbi programokhoz használható:This method works for Windows Installer applications and for older programs appearing under the Uninstall key:

Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_.GetValue('UninstallString') }

A megjelenített név alapján szűrheti a kimenetet, ha szeretné:You can filter the output by the display name, if you like:

Get-ChildItem -Path Uninstall: |
    Where-Object -FilterScript { $_.GetValue('DisplayName') -like 'Win*'} |
        ForEach-Object -Process { $_.GetValue('UninstallString') }

Előfordulhat azonban, hogy ezek a karakterláncok nem használhatók közvetlenül a PowerShell-parancssorból módosítás nélkül.However, these strings may not be directly usable from the PowerShell prompt without some modification.

Windows Installer alkalmazások frissítéseUpgrading Windows Installer Applications

Az alkalmazások frissítéséhez ismernie kell az alkalmazás nevét és az alkalmazás frissítési csomagjának elérési útját.To upgrade an application, you need to know the name of the application and the path to the application upgrade package. Ezen információk használatával egyetlen PowerShell-paranccsal frissítheti az alkalmazásokat:With that information, you can upgrade an application with a single PowerShell command:

Get-CimInstance -Class Win32_Product -Filter "Name='OldAppName'" |
  Invoke-CimMethod -MethodName Upgrade -Arguments @{PackageLocation='\\AppSrv\dsp\OldAppUpgrade.msi'}