问题
I'm trying to check if Python is installed on a machine via a Powershell script.
My idea so far is to run the following:
$p = iex 'python -V'
If the command executes correctly (check the Exitcode
on $p
property), read the output and extract the version number.
However, I'm struggling to capture the output when executing the script in Powershell ISE. It's returning the following:
python : Python 2.7.11
At line:1 char:1
+ python -V
+ ~~~~~~~~~
+ CategoryInfo : NotSpecified: (Python 2.7.11:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Can someone point in the right direction?
Cheers, Prabu
回答1:
It seems that python -V
outputs the version string to stderr
and not stdout
.
You can use a stream redirector to redirect the error into the standard output:
# 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
}
If you are certain that all the versions of python you have on your systems will behave this way, you can cut it down to:
$version = (&{python -V}).Exception.Message
来源:https://stackoverflow.com/questions/36953800/powershell-script-to-check-if-python-is-installed