我正在尝试查找一系列服务器上安装的.NET版本。如果提供一个.txt文件作为服务器列表,并枚举这些服务器以查找服务器上的.NET版本,那么用于执行此操作的PowerShell脚本会是什么样子?
我正在尝试查找一系列服务器上安装的.NET版本。如果提供一个.txt文件作为服务器列表,并枚举这些服务器以查找服务器上的.NET版本,那么用于执行此操作的PowerShell脚本会是什么样子?
.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}
以下是一种方法:
dir $env:windir\Microsoft.NET\Framework\v* |
sort lastwritetime -desc |
select -First 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"
}
最简单的方法是使用变量$PSVersionTable
PS C:\> $PSVersionTable.CLRVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 30319 17929