Yazılım Yüklemeleri ile Çalışma
Windows Installer'Windows tasarlanan uygulamalara WMI'nin Win32_Product sınıfı üzerinden erişilebilir, ancak bugün kullanımda olan tüm uygulamalar Windows Yükleyicisi'Windows kullanmaz. Alternatif kurulum yordamları kullanan uygulamalar genellikle Windows Yükleyicisi tarafından yönetilmiyor. Bu uygulamalarla çalışmaya yönelik belirli teknikler, yükleyici yazılımına ve uygulama geliştiricisi tarafından alınan kararlara bağlıdır. Örneğin, dosyaları bilgisayar üzerinde bir klasöre kopyalayıp yüklenmiş uygulamalar genellikle burada ele alınan teknikler kullanılarak yönetilamaz. Dosya ve Klasörlerle Çalışma konusunda ele alınmıştır tekniklerini kullanarak bu uygulamaları dosya ve klasör olarak yönetebilirsiniz.
Dikkat
Win32_Product sınıfı sorgu için iyileştirilmiş değildir. Joker karakter filtreleri kullanan sorgular, WMI'nın tüm yüklü ürünleri numaralandırarak MSI sağlayıcısını kullanmasına ve ardından tam listeyi filtreyi işlemek için sırayla ayrıştırmasına neden olur. Bu işlem ayrıca yüklü paketlerin tutarlılık denetimini başlatarak yüklemenin doğrulandırıldığını ve onarıldığını doğrular. Doğrulama yavaş bir işlemdir ve olay günlüklerinde hatalara neden olabilir. Daha fazla bilgi için, 974524.
Yükleyici Windows Listeleme
Yerel veya uzak bir sistemde Windows Yükleyicisi ile yüklü uygulamaları listeleyebilirsiniz, aşağıdaki basit WMI sorgusunu kullanın:
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…
Win32_Product nesnesinin tüm özelliklerini görüntülemek için biçimlendirme cmdlet'lerinin Properties parametresini Format-List (cmdlet gibi) * değeriyle (all) kullanın.
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
Veya Yalnızca Get-CimInstance 2.0 Çalışma Zamanı'Microsoft .NET filtre parametresini kullanabilirsiniz. Filter parametresinin değeri, WMI Sorgu Dili (WQL) söz dizimi Windows PowerShell kullanır. Örnek:
Get-CimInstance -Class Win32_Product -Filter "Name='Microsoft .NET Core Runtime - 2.1.5 (x64)'" |
Format-List -Property *
Yalnızca ilginiz olan özellikleri listeleyebilirsiniz. Biçimlendirme cmdlet'lerinin Property parametresini kullanarak istenen özellikleri listeleebilirsiniz.
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}
Kaldırılabilir Tüm Uygulamaları Listeleme
Çoğu standart uygulama bir kaldırıcıyı Windows kayıt defterinde bularak bu uygulamalarla yerel olarak Windows. Sistemde her uygulamayı bulmanın garanti edilemez bir yolu vardır. Ancak, aşağıdaki kayıt defteri anahtarında Program Ekle veya Kaldır'da listelerle birlikte görüntülenen tüm programları bulmak mümkündür:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.
Uygulamaları bulmak için bu anahtarı inceleriz. Kaldır anahtarını görüntülemeyi kolaylaştırmak için bir PowerShell sürücüsü ile bu kayıt defteri konumunu eşleyebilirsiniz:
New-PSDrive -Name Uninstall -PSProvider Registry -Root HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Name Provider Root CurrentLocation
---- -------- ---- ---------------
Uninstall Registry HKEY_LOCAL_MACHINE\SOFTWARE\Micr...
Artık uygulama yüklemelerini hızlı ve kolay bir şekilde bakmak için kullanılan "Kaldır:" adlı bir sürücüye sahipsiniz. Kaldır: PowerShell sürücüsünde kayıt defteri anahtarlarının sayısını sayarak yüklü uygulama sayısını bulamıyorum:
(Get-ChildItem -Path Uninstall:).Count
459
ile başlayan çeşitli teknikleri kullanarak bu uygulama listesinde daha fazla arama da Get-ChildItem ekleyebilirsiniz. Uygulamaların listesini almak ve bunları değişkene $UninstallableApplications kaydetmek için aşağıdaki komutu kullanın:
$UninstallableApplications = Get-ChildItem -Path Uninstall:
Kaldır altındaki kayıt defteri anahtarlarında kayıt defteri girişlerinin değerlerini görüntülemek için kayıt defteri anahtarlarının GetValue yöntemini kullanın. yönteminin değeri kayıt defteri girişinin adıdır.
Örneğin, Kaldırma anahtarında uygulamaların görünen adlarını bulmak için aşağıdaki komutu kullanın:
$UninstallableApplications | ForEach-Object -Process { $_.GetValue('DisplayName') }
Not
DisplayName değerlerinin benzersiz olduğu garanti edilemez.
Uygulamaları Yükleme
Win32_Product yükleyici paketlerini uzaktan veya yerel Windows yüklemek için Windows sınıfını kullanabilirsiniz.
Not
Bir uygulamayı yüklemek için PowerShell'i "Yönetici olarak çalıştır" seçeneğiyle başlatmanız gerekir.
Uzaktan yüklerken, WMI alt sistemi PowerShell yollarını anlamayarak, .msi paketinin yolunu belirtmek için Bir Evrensel Adlandırma Kuralı (UNC) ağ yolu kullanın. Örneğin, uzak bilgisayar PC01'de bulunan NewPackage.msi paketini yüklemek için PowerShell isteminde aşağıdaki \\AppServ\dsp komutu yazın:
Invoke-CimMethod -ClassName Win32_Product -MethodName Install -Arguments @{PackageLocation='\\AppSrv\dsp\NewPackage.msi'}
Windows Installer teknolojisini kullanmayan uygulamalar, otomatik dağıtım için uygulamaya özgü yöntemlere sahip olabilir. Uygulamanın belgelerini inceleyin veya uygulama satıcısının destek sistemine başvurun.
Uygulamaları Kaldırma
PowerShell kullanarak Windows Yükleyici paketini kaldırma, paket yüklemeyle yaklaşık olarak aynı şekilde çalışır. Kaldıracak paketi adına göre seçen bir örnek aşağıdaki gibidir: Bazı durumlarda, IdentifyingNumber ile filtrelemek daha kolay olabilir:
Get-CimInstance -Class Win32_Product -Filter "Name='ILMerge'" | Invoke-CimMethod -MethodName Uninstall
Yerel olarak yapılırken bile diğer uygulamaları kaldırmak o kadar basit değildir. UninstallString özelliğini ayıklaarak bu uygulamalar için komut satırı kaldırma dizelerini bulamıyorum. Bu yöntem, Windows Yükleyicisi uygulamaları ve Kaldır anahtarı altında görünen eski programlar için çalışır:
Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_.GetValue('UninstallString') }
Çıktıyı, aşağıdaki gibi görünen adla filtreleysiniz:
Get-ChildItem -Path Uninstall: |
Where-Object -FilterScript { $_.GetValue('DisplayName') -like 'Win*'} |
ForEach-Object -Process { $_.GetValue('UninstallString') }
Ancak, bu dizeler herhangi bir değişiklik yapmadan Doğrudan PowerShell isteminden kullanılabilir olabilir.
Windows Yükleyici Uygulamalarını Yükseltme
Bir uygulamayı yükseltmek için uygulamanın adını ve uygulama yükseltme paketinin yolunu biliyor olun. Bu bilgilerle, bir uygulamayı tek bir PowerShell komutuyla yükseltebilirsiniz:
Get-CimInstance -Class Win32_Product -Filter "Name='OldAppName'" |
Invoke-CimMethod -MethodName Upgrade -Arguments @{PackageLocation='\\AppSrv\dsp\OldAppUpgrade.msi'}