最近用GPO安装了好几个程序,如何判断是否成功安装呢?
有个简单的脚本,比如我判断tightVNC是否在所有的Win7 系统上安装了
$a=Get-ADComputer -Filter{operatingsystem -like "*7*"} -Properties operatingsystem | select name, operatingsystem foreach($b in $a) { if(Test-Connection -ComputerName $b.name -Count 1 -quiet){ $b.name Invoke-Command -ComputerName $b.name { if ([System.IntPtr]::Size -eq 4) { "32-bit" Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object{$_.displayname -eq "TightVNC"} | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate } else { "64-bit" Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*,HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object{$_.displayname -eq "TightVNC"} | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate } } } }
注意点:
查询安装的程序时,不要使用wmi的方式;如果我使用get-wmiobject -class win32_product,我一样可以获得同样的信息,只不过速度比对注册表的查询慢几十倍;
查询注册表时,请区分32位和64位系统,因为我们可以安装32位的程序到64位的系统上
时间: 2024-11-10 11:00:12