如何使用PowerShell远程查找服务器列表上的.NET版本?

6

我正在尝试查找一系列服务器上安装的.NET版本。如果提供一个.txt文件作为服务器列表,并枚举这些服务器以查找服务器上的.NET版本,那么用于执行此操作的PowerShell脚本会是什么样子?


1
也许你已经尝试过一些有问题的东西,想要询问一下?或者你只是期望有人为你编写脚本? - Darin Dimitrov
4个回答

4
请参考Stack Overflow问题PowerShell脚本:返回计算机上.NET Framework的版本?,了解如何查找框架。
如果要在多台服务器上执行此操作,列表来自.txt文件,则可以使用Get-Content读取文件,将其传递到Invoke-Command并传递从上面链接的答案中选择的命令以获取框架。
$script = {gci 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' | sort pschildname -des | select -fi 1 -exp pschildname}
gc list.txt | %{ Invoke-Command -comp $_ -ScriptBlock $script}

2

以下是一种方法:

dir $env:windir\Microsoft.NET\Framework\v* | 
   sort lastwritetime -desc | 
       select -First 1

1

另外一种方法是使用Get-WmiObject,但似乎很慢:

foreach ($server in (Get-Content serverlist.txt))
{
   $version = Invoke-Command -Computer $server -ScriptBlock {
      (Get-WmiObject Win32_SoftwareElement | ? { $_.name -eq "system.net.dll_x86" }).Version
   }
   Write-Output "$server is using .Net Framework version $version"
}

0

最简单的方法是使用变量$PSVersionTable

PS C:\> $PSVersionTable.CLRVersion

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接