我自己不是系统管理员,但我代表我的一个客户问这个问题,这是一家“夫妻店”公司,Windows Server 网络上没有大约 50 台计算机。他们希望系统管理员能够确定用户 PC 上安装了哪些版本的 NET Framework,而不必走到每个桌面并查询每台机器的注册表。是否存在一个她可以从自己的 PC 上运行的实用程序?或者是否存在 ActiveDirectory 策略设置,可使域中的每台台式机将该版本信息报告回中央存储库,以供她检查?
答案1
您可以使用 PowerShell 从注册表中确定远程计算机上安装的 .NET 版本:
Invoke-Command -Computer "COMPUTER_NAME" -ScriptBlock { gci ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse | gp -name Version -EA 0 | where { $_.PSChildName -match ‘^(?!S)\p{L}’} }
您的 PC 需要位于同一个域中,并且可以通过本地网络访问才能使用该命令,并且客户端必须启用 PSRemoting - 可以通过运行来完成Enable-PSRemoting -Force
。此外,您的域帐户需要远程计算机的管理权限,但如果由于公司的安全策略而无法做到这一点,请查看以下内容:
https://4sysops.com/archives/powershell-remoting-without-administrator-rights/
另外,每个人都可以在 Powershell 中本地运行该脚本并将结果保存到 C:\results.txt 等文件中,如下所示:
gci ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse | gp -name Version -EA 0 | where { $_.PSChildName -match ‘^(?!S)\p{L}’} | Out-File C:\results.txt