我如何确定计算机上安装了哪种版本的PowerShell,以及是否确实安装了PowerShell?


当前回答

由于最有用的答案没有提到“如果存在”部分,我想我应该通过一个快速而肮脏的解决方案来解决这个问题。它依赖于PowerShell位于路径环境变量中,这可能是您想要的。(由于我不知道,所以给顶部的答案打个小提示。)将其粘贴到文本文件中并命名

测试Powershell版本.cmd

或类似。

@echo off
echo Checking powershell version...
del "%temp%\PSVers.txt" 2>nul
powershell -command "[string]$PSVersionTable.PSVersion.Major +'.'+ [string]$PSVersionTable.PSVersion.Minor | Out-File ([string](cat env:\temp) + '\PSVers.txt')" 2>nul
if errorlevel 1 (
 echo Powershell is not installed. Please install it from download.Microsoft.com; thanks.
) else (
 echo You have installed Powershell version:
 type "%temp%\PSVers.txt"
 del "%temp%\PSVers.txt" 2>nul
)
timeout 15

其他回答

忘记此页面并永远不返回它的最简单方法是学习Get Variable:

Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}

没有必要记住每个变量。仅获取变量就足够了(而且“版本应该有一些东西”)。

我发现检查是否安装的最简单方法是:

运行命令提示符(“开始”、“运行”、“命令”、“确定”)键入powershell,然后单击return。然后,您应该得到PowerShell PS提示:

C:\Users\MyUser>powershell

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Users\MyUser>

然后,可以通过键入$PSVersionTable.PSVersion:

PS C:\Users\MyUser> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:\Users\MyUser>

如果要返回到命令提示符,请键入exit(如果还要关闭命令提示符,则再次退出)。

要运行脚本,请参见http://ss64.com/ps/syntax-run.html.

您可以通过完成以下检查来验证是否安装了Windows PowerShell版本:

单击开始,单击所有程序,单击附件,单击Windows PowerShell,然后单击Windows PowerShell。在Windows PowerShell控制台中,在命令提示符处键入以下命令,然后按ENTER键:获取主机|选择对象版本

您将看到如下输出:

Version
-------
3.0

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/

以下cmdlet将返回PowerShell版本。

$PSVersionTable.PSVersion.Major

这是“批处理文件获取powershell版本”的顶级搜索结果,因此我想提供一个基本示例,说明如何根据powershell版本在批处理文件中执行条件流

通用示例

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    echo Do some fancy stuff that only powershell v5 or higher supports
) else (
    echo Functionality not support by current powershell version.
)

真实世界示例

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    rem Unzip archive automatically
    powershell Expand-Archive Compressed.zip
) else (
    rem Make the user unzip, because lazy
    echo Please unzip Compressed.zip prior to continuing...
    pause
)