通过WMI远程确定PowerShell版本

我在这里和其他地方搜索,找不到答案,所以这是我的问题。

使用WMI在远程计算机上确定PowerShell版本的最佳方式是什么?

背景

我的任务是审核和更新大约1000台服务器到最新版本的PowerShell。 其中一些有PowerShell v1,有些没有配置WinRM,所以Invoke-command不是一种选择。 PSExec在这个环境中也不是一个选项。 这就是为什么我需要使用WMI来完成这项任务。

任何帮助,将不胜感激。

编辑:

经过很多研究,我仍然倾向于WMI。 特别是检索“powershell.exe”的文件版本。 这在我看来是覆盖所有版本的唯一方法。

我到目前为止的代码在这里:

$path = "C:Windowssystem32WindowsPowerShellv1.0powershell.exe" 
$query = "SELECT Version FROM CIM_DataFile WHERE Name = '$path'" 
$PSFileVer = Get-WmiObject -Query $query -ComputerName $servername -Credential $creds 
$BuildVer = [version]$PSFileVer.Version.Split()[0]

我现在需要的是一个全面的列表,将文件版本(内部版本号)映射到PowerShell版本。 有任何想法吗?


从这里的解决方案是

$command = "ipconfig/all > C:tempresult.txt"
$cmd = "cmd /c $command"

Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName "remotepc"
sleep 1
Get-Content remotepcC$tempresult.txt

你也可以通过这种方法做类似的事情。 如果你这样做,你不能直接得到返回值,你必须重定向到一个文件。

您可以设置分享的结果,而不是把结果放在本地机器上


如果这有帮助,那就是命令:

$command = "powershell -command "+'"$PSVersionTable.PsVersion.Major | out-file c:tempversion.txt"'
链接地址: http://www.djcxy.com/p/29017.html

上一篇: Determine PowerShell version remotely via WMI

下一篇: Where is the v2.0 and v3.0 folder for PowerShell?