Powershell脚本,用于使用Quicktime扫描域的PC并使用日志卸载

时间:2016-04-29 15:21:53

标签: powershell

我知道这一定是一个简单的脚本,但我有点不同于Powershell的元素。我喜欢学习它,但是有一个难以置信的时间试图弄清楚这个。我在这里和所有地方都进行过搜索,但是我只有一套可以完成并且不起作用的剧本,它们在组合时尤其不适合。

我试图想出一个Powershell脚本来扫描我们的域,以便安装任何版本的Quicktime的PC。如果找到然后卸载,无论哪种方式,我都希望将其导出到具有计算机名称的日志文件,以及是否已卸载或无法连接。下面的脚本有效,但它显示了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

1 个答案:

答案 0 :(得分: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”} |               Select-Object -Property DisplayName,UninstallString

     

ForEach($ qtVer中的$ ver){

If ($ver.UninstallString) {

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