通过 WMI 远程确定 PowerShell 版本
Determine PowerShell version remotely via WMI
我已经在这里和其他地方搜索过,但找不到答案,所以这是我的问题。
使用 WMI 在远程计算机上确定 PowerShell 版本的最佳方法是什么?
背景
我的任务是审核大约 1000 台服务器并将其更新到最新版本的 PowerShell。其中一些有 PowerShell v1,一些没有配置 WinRM,所以 Invoke-command 不是一个选项。 PSExec 在此环境中也不是一个选项。这就是为什么我需要使用 WMI 来完成这项任务。
如有任何帮助,我们将不胜感激。
编辑:
经过大量研究后,我仍然倾向于 WMI。特别是检索 "powershell.exe" 的文件版本。在我看来,这是涵盖所有版本的唯一方法。
我目前的代码在这里:
$path = "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.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 版本。有什么想法吗?
here的解是
$command = "ipconfig/all > C:\temp\result.txt"
$cmd = "cmd /c $command"
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName "remotepc"
sleep 1
Get-Content \remotepc\C$\temp\result.txt
您也可以通过 this 方法进行类似操作。如果这样做,您将无法直接获取 return 值,您必须重定向到一个文件。
您可以为结果设置共享,而不是将结果放在本地机器上
如果有帮助,请使用以下命令:
$command = "powershell -command "+'"$PSVersionTable.PsVersion.Major | out-file c:\temp\version.txt"'
我已经在这里和其他地方搜索过,但找不到答案,所以这是我的问题。
使用 WMI 在远程计算机上确定 PowerShell 版本的最佳方法是什么?
背景
我的任务是审核大约 1000 台服务器并将其更新到最新版本的 PowerShell。其中一些有 PowerShell v1,一些没有配置 WinRM,所以 Invoke-command 不是一个选项。 PSExec 在此环境中也不是一个选项。这就是为什么我需要使用 WMI 来完成这项任务。
如有任何帮助,我们将不胜感激。
编辑:
经过大量研究后,我仍然倾向于 WMI。特别是检索 "powershell.exe" 的文件版本。在我看来,这是涵盖所有版本的唯一方法。
我目前的代码在这里:
$path = "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.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 版本。有什么想法吗?
here的解是
$command = "ipconfig/all > C:\temp\result.txt"
$cmd = "cmd /c $command"
Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ComputerName "remotepc"
sleep 1
Get-Content \remotepc\C$\temp\result.txt
您也可以通过 this 方法进行类似操作。如果这样做,您将无法直接获取 return 值,您必须重定向到一个文件。
您可以为结果设置共享,而不是将结果放在本地机器上
如果有帮助,请使用以下命令:
$command = "powershell -command "+'"$PSVersionTable.PsVersion.Major | out-file c:\temp\version.txt"'