我正在尝试通过Powershell脚本检查Python是否安装在计算机上。
到目前为止,我的想法是运行以下内容:
$p = iex 'python -V'
如果命令正确执行(检查Exitcode
属性上的$p
),请阅读输出并提取版本号。
但是,在Powershell ISE中执行脚本时,我很难捕获输出。它返回以下内容:
python : Python 2.7.11
At line:1 char:1
+ python -V
+ ~~~~~~~~~
+ CategoryInfo : NotSpecified: (Python 2.7.11:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
有人能指出正确的方向吗?
干杯, Prabu
答案 0 :(得分:3)
似乎python -V
将版本字符串输出到stderr
而不是stdout
。
您可以使用流重定向器将错误重定向到标准输出:
# redirect stderr into stdout
$p = &{python -V} 2>&1
# check if an ErrorRecord was returned
$version = if($p -is [System.Management.Automation.ErrorRecord])
{
# grab the version string from the error message
$p.Exception.Message
}
else
{
# otherwise return as is
$p
}
如果您确定您的系统上的所有python版本都会以这种方式运行,那么您可以将其缩减为:
$version = (&{python -V}).Exception.Message