在机器上返回.NET框架版本的PowerShell脚本是什么?

我的第一个猜测是与WMI有关。还有更好的办法吗?

它应该是一行程序,在每一行上只返回。net安装的最新版本。


当前回答

[environment]::Version

为当前PSH副本正在使用的CLR提供一个Version实例(如本文所述)。

其他回答

请参阅“脚本”页,以查找远程工作站上安装的. net版本。

这里的脚本对于查找网络上多台机器的. net版本可能很有用。

这是上一篇文章的衍生版本,但是在我的测试中得到了。net框架4的最新版本。

get-itemproperty -name version,release "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\FULL"

这将允许你调用命令到远程机器:

invoke-command -computername server01 -scriptblock {get-itemproperty -name version,release "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\FULL" | select pscomputername,version,release} 

它通过ADModule和命名约定前缀设置了这种可能性:

get-adcomputer -Filter 'name -like "*prefix*"' | % {invoke-command -computername $_.name -scriptblock {get-itemproperty -name version,release "hklm:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\FULL" | select pscomputername,version,release}} | ft

正确的语法:

[System.Runtime.InteropServices.RuntimeEnvironment]::GetSystemVersion()
#or
$PSVersionTable.CLRVersion

GetSystemVersion函数返回一个像这样的字符串:

v2.0.50727        #PowerShell v2.0 in Win 7 SP1

或者像这样

v4.0.30319        #PowerShell v3.0 (Windows Management Framework 3.0) in Win 7 SP1

$PSVersionTable是一个只读对象。CLRVersion属性是一个结构化的版本号,如下所示:

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  18444   

没有可靠的方法可以使用一个简单的脚本为所有平台和体系结构做到这一点。如果你想学习如何可靠地完成它,请从博客文章更新的。net框架检测代码样本开始,它可以进行更深入的检查。

如果您已经在计算机上安装了Visual Studio,那么打开Visual Studio开发人员命令提示符并键入以下命令: clrver

它将列出该机器上所有已安装的。net Framework版本。