如何将Python添加到PATH环境变量并检查是否有任何PATH DIR无效
我想创建一个PowerShell脚本,其作用如下:如何将Python添加到PATH环境变量并检查是否有任何PATH DIR无效,python,powershell,Python,Powershell,我想创建一个PowerShell脚本,其作用如下: 检查是否在USERPROFILE\AppData\Local\Programs\Python中安装了Python 如果安装了Python,请将installdir另存为变量 检查installdir和scripts dir是否位于Windows的系统和用户路径环境变量中 如果不在PATH中,则将它们添加到系统和用户的Windows的永久PATH环境变量中 还要检查路径中是否有任何目录无效 以下是当前的脚本: $PythonDir = "
$PythonDir = "$Env:USERPROFILE\AppData\Local\Programs\Python"
$PythonVer = Get-ChildItem -Path "$PythonDir" -Name 'P*' -Directory
$PythonPath = ($PythonDir + "\" + $PythonVer)
$ScriptsPath = ($PythonDir + "\" + $PythonVer + "\Scripts")
$PathToAdd = @("$PythonPath", "$ScriptsPath")
function AddToPath {
$OldPath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$NewPath = ($PythonPath + ";" + $ScriptsPath + ";" + $OldPath)
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $NewPath
}
function CheckPath {
Foreach($Path in $PathToAdd) {
if($env:Path -like "*$Path*") {
Write-Host "$Path already exists in Path statement"
}
else {
Write-Host "$Path does not exist in Path statement, adding it now..."
AddToPath
}
}
}
if(Test-Path $PythonPath)
{
Echo ("Python is installed in the directory: " + $PythonDir)
CheckPath
}
else
{
Echo "Python not installed"
}
导致:
Python is installed in the directory: C:\Users\XXXX\AppData\Local\Programs\Python
C:\Users\XXXX\AppData\Local\Programs\Python\Python38 already exists in Path statement
C:\Users\XXXX\AppData\Local\Programs\Python\Python38\Scripts already exists in Path statement
如您所见,我在1)和2)中取得了成功,我还能够将当前的路径
放入一个变量中,并以一种原始的方式强制将dir添加到路径
,但我想不出更好的故障保护方法。
我想在这个脚本中检查路径中的无效dir的原因也是为了提示用户能够删除例如无效dir,就像旧版本的Python一样
请有人帮我修改一下IF语句,如果安装了Python,那么它会检查路径
,如果$PythonPath
或$PythonScripts
中已经存在,那么它应该将数组$PathToAdd
添加到路径
的开头,并提示用户从路径中删除任何无效的dir。任何优化现有脚本的反馈也总是受欢迎的