2016-04-29 67 views
1

我知道這必須是一個簡單的腳本來完成,但我有點偏離Powershell。我喜歡學習它,但是想要弄明白這一點真是難以置信。我已經在這裏搜索過了,但是我只有一堆大小寫的腳本,它們並不工作,特別是當它們放在一起時。Powershell腳本使用Quicktime掃描PC的域並使用日誌進行卸載

我試圖想出一個Powershell腳本來掃描我們的域的電腦有任何版本的Quicktime安裝。如果找到了,然後卸載,無論哪種方式,我希望它導出到一個日誌文件的計算機名稱,如果它被卸載或無法連接。下面的腳本可以工作,但是它顯示了GENUS信息,並且沒有什麼可以用它運行的PC識別它。如果軟件不在那裏,腳本會給我「你不能在一個空值表達式上調用一個方法。」在第二行。

$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

這看起來像一個良好的開端https://blogs.technet.microsoft.com/ heyscriptingguy/2011/12/14/use-powershell-to-find-and-uninstall-software/ –

+0

謝謝,我會檢查一下。 – Nate

回答

0

了答案安東尼給...

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

使用...

gwmi的Win32_Product | ft name,version,ident *

我可以找到所有安裝的軟件。我使用了foreach卸載程序,並將其與我找到的其他腳本混合使用。我讓所有的計算機同時運行它,但是手動運行它並且至少對我有用。

$ qtVer = GET-ChildItem -Path HKLM:\ SOFTWARE \微軟\的Windows \ CurrentVersion \卸載, HKLM:\ SOFTWARE \ Wow6432Node \微軟\的Windows \ CurrentVersion \卸載 | Get-ItemProperty | Where-Object {$ _。DisplayName -match「quicktime」}} 選擇-對象,物業顯示名稱,UninstallString

的ForEach($版本在$ qtVer){

If ($ver.UninstallString) { 

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

歡迎來到StackOverflow。我們希望在這裏擴大解答,讓它們獨立運行,而不是依賴可能隨時間消失的外部URL。 – rrauenza