Variables de ruta del entorno de Windows 10 que faltan después de reiniciar

0

Me he encontrado con un problema extraño porque he configurado las variables de ruta en Windows, después de reiniciarlas, desaparecen hasta que veo la configuración de la variable de entorno.

Puedo restaurarlos simplemente haciendo:

System Properties = & gt; [Environment Variables] = & gt; [OK]

... entonces se ponen de nuevo!

Nota: si escribo [SET], Puedo verlos en mi Path

Ejemplo:

Tengo una adición a mi camino que apunta a: %USERPROFILE%\Documents\WindowsPowerShell\Scripts

En ^^ que ^^ dir tengo un archivo myscript.ps1.

Si abro PowerShell después de arrancar, puedo escribir "mi [TAB] "y no encontrará el guión.

Después de abrir el diálogo de variables de entorno y seleccionar [OK], reinicie PowerShell, puedo hacer lo mismo "mi [TAB] "y autocompletar" myscript.ps1 "sin ningún problema.

¿Alguien sabe como resolver esto?

Kareem
fuente
Tengo el mismo problema, agrego una variable de entorno para el usuario, reinicio y luego la variable de entorno desaparece. Necesito agregar manualmente la variable nuevamente en Propiedades del sistema = & gt; Variables de entorno. No tengo idea de qué causa este comportamiento, solía funcionar bien.
André
Por casualidad, ¿tiene ese conjunto como el único valor en la sección "Variables de usuario para x" (donde x = nombre de usuario)? Porque en ese caso debería ser ";% USERPROFILE% \ Documents \ WindowsPowerShell \ Scripts" (sin comillas) ". Más allá de eso, supongo que tiene un error de sintaxis en algún lugar de la variable.
BrianC
Gracias BrianC y @JosefZ moví el vairable de "Variables del sistema" a "Variables del usuario desde X" y luego lo validé con un script publicado en la respuesta. Vio que una ruta a "C: \ Archivos de programa (x86) \ ATI Technologies \" ... no pudo validar. Se lo quitó. Ahora todos los caminos funcionan después de un reinicio!
Kareem

Respuestas:

1

Esta no es una respuesta real (demasiado largo y demasiado complejo para un comentario). Lo borrare Si se prueba de manera falsa.

Utilice el siguiente script ingenuo para verificar si su path La configuración es formalmente válida:

Function myTest-Path {
Param( [Parameter(Mandatory=$true)] [string] $PathString )
if ( $PathString -match '%' ) { $PathString = (. cmd /c "echo($PathString")}
if ( Test-Path -Path $PathString -IsValid) {
        [string] (Test-Path (Join-Path -ChildPath '' -Path $PathString))
    } else { '!wrong' }
}

### Windows path validity check ###
Write-Host '$env:Path splitted' -ForegroundColor Yellow
$aux = $env:Path
$aux -split ";" | ForEach-Object {'{0,6} "{1}"' -f (myTest-Path $_), $_}

Write-Host 'HKCU:\Environment\ Path splitted' -ForegroundColor Yellow
$aux = ([Microsoft.Win32.Registry]::CurrentUser.
    OpenSubKey("environment")).
    GetValue("Path",$False, 
        [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
$aux -split ";" | ForEach-Object {'{0,6} "{1}"' -f (myTest-Path $_), $_}

Write-Host 'HKLM:\SYSTEM\…\Environment\ Path splitted' -ForegroundColor Yellow
$aux = ([Microsoft.Win32.Registry]::LocalMachine.
    OpenSubKey("SYSTEM\CurrentControlSet\Control\Session Manager\Environment")).
    GetValue("Path",$False, 
        [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
$aux -split ";" | ForEach-Object {'{0,6} "{1}"' -f (myTest-Path $_), $_}

Write-Host '$env:Path duplicities' -ForegroundColor Yellow
$auxArr = $env:Path -split ";"
for ($i = 0; $i -le $auxArr.Count; $i++) {
    for ($j = $i+1; $j -le $auxArr.Count -1; $j++) {
        try {
            if ( (Join-Path -ChildPath '' -Path $auxArr[$j] -ErrorAction Stop) -eq 
                 (Join-Path -ChildPath '' -Path $auxArr[$i] -ErrorAction Stop) )   {
                    '{0,4} {1,4} "{2}"' -f $i, $j, $auxArr[$i]
            }
        } catch {
            ### Write-Host "$i $j invalid folder name in `$env:Path" -ForegroundColor Red
        }
    }
}
JosefZ
fuente
Gracias, @BrianC y JosefZ moví el vairable de "Variables del sistema" a "Variables del usuario desde X", luego lo validé con un script publicado en la respuesta. Vio que una ruta a "C: \ Archivos de programa (x86) \ ATI Technologies \" ... no pudo validar. Se lo quitó. Ahora todos los caminos funcionan después de un reinicio!
Kareem