2016-04-29 5 views
1

Ich weiß, dass dies ein einfaches Skript sein muss, aber ich bin mit Powershell irgendwie nicht in meinem Element. Ich mag es, es zu lernen, aber ich habe eine unglaublich schwere Zeit damit verbracht, dieses herauszufinden. Ich habe hier und überall gesucht, aber ich habe nur ein Sammelsurium von Skripts, die funktionieren und nicht funktionieren, besonders wenn sie zusammengefügt werden.Powershell-Skript, um Domäne für PCs mit Quicktime zu scannen und mit Protokoll zu deinstallieren

Ich versuche ein Powershell-Skript zu erstellen, um unsere Domain nach PCs zu durchsuchen, auf denen eine Version von Quicktime installiert ist. Wenn es gefunden wird, dann deinstallieren, egal wie ich es suche, es in eine Protokolldatei mit dem Computernamen zu exportieren und wenn es deinstalliert wurde oder keine Verbindung herstellen kann. Das folgende Skript funktioniert, aber es zeigt die GENUS-Informationen und es gibt nichts, um es mit dem PC zu identifizieren, auf dem es ausgeführt wurde. Wenn die Software nicht da ist, gibt das Skript mir "Sie können eine Methode für einen nullwertigen Ausdruck nicht aufrufen." in der zweiten Zeile.

$app = Get-WmiObject -Class Win32_Product -ComputerName (Get-Content "C:\Users\name\Desktop\pstest\test2list.txt") | Where-Object {$_.Name -like “*Quicktime*”} 
$app.Uninstall() | Out-File C:\Users\name\Desktop\pstest\test2listout.txt 
+0

dies sieht aus wie ein guter Anfang https://blogs.technet.microsoft.com/ heyscriptingguy/2011/12/14/use-powershell-zu-finden-und-deinstallieren-software/ –

+0

Danke, ich werde das überprüfen. – Nate

Antwort

0

Antwort wurde von Anthony gegeben ...

https://blogs.technet.microsoft.com/heyscriptingguy/2011/12/14/use-powershell-to-find-and-uninstall-software/

Mit ...

gwmi Win32_Product | ft name, version, ident *

Ich kann alle installierten Software finden. Ich habe das foreach-Deinstallationsprogramm verwendet und mit anderen Skripten gemischt, die ich gefunden habe. Ich lasse alle Computer gleichzeitig laufen, aber ich habe es manuell ausgeführt und es hat funktioniert, zumindest für mich.

$ qtVer = Get-ChildItem -Path HKLM: \ SOFTWARE \ Microsoft \ Windows \ Currentversion \ Uninstall, HKLM: \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ Currentversion \ Uninstall | Get-ItemProperty | Where-Objekt {$ _. DisplayName -match "quicktime"} | Select-Object -Property Display, UninstallString

foreach ($ ver in $ qtVer) {

If ($ver.UninstallString) { 

    $uninst = $ver.UninstallString 
    $uninst = $uninst -replace "/I", "/x " 
    Start-Process cmd -ArgumentList "/c $uninst /quiet /norestart" -NoNewWindow 
} } 
+0

Willkommen bei StackOverflow. Wir möchten, dass die Antworten hier erweitert werden, so dass sie alleine stehen und sich nicht auf externe URLs verlassen, die im Laufe der Zeit verschwinden könnten. – rrauenza

Verwandte Themen