如何将Python添加到PATH环境变量并检查是否有任何PATH DIR无效

如何将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 = "

我想创建一个PowerShell脚本,其作用如下:

  • 检查是否在USERPROFILE\AppData\Local\Programs\Python中安装了Python
  • 如果安装了Python,请将installdir另存为变量
  • 检查installdir和scripts dir是否位于Windows的系统和用户路径环境变量中
  • 如果不在PATH中,则将它们添加到系统和用户的Windows的永久PATH环境变量中
  • 还要检查路径中是否有任何目录无效
  • 以下是当前的脚本:

    $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。任何优化现有脚本的反馈也总是受欢迎的