我知道这一定是一个简单的脚本,但我有点不同于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
答案 0 :(得分:0)
安东尼给出了答案......
使用......
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 } }