PowerShell ongelma

Viestiketju alueella 'Ohjelmointi' , aloittaja markom, 18.12.2017.

  1. markom

    Rekisteröitynyt:
    18.06.2002
    Viestejä:
    50
    Yritän powershell skriptillä asettaa käyttäjän path-muuttujaan "osoittimen" vai miksi kummaksi noita nyt sanotaan powershell skriptin kautta, mutta ei näytästä onnistuvan millään.

    Koodi:
    $path = [environment]::GetEnvironmentVariable("PATH","User")
    $path += ";%MYPATH%"
    [environment]::SetEnvironmentVariable("MYPATH", "C:/MyPath", "User")
    [environment]::SetEnvironmentVariable("PATH", $path, "User")
    ja tämän jälkeen komentokehotteesta katsottuna

    Koodi:
    C:\Users\abc>echo %PATH%
    C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Users\abc\AppData\Local\Microsoft\WindowsApps;%MYPATH%
    
    C:\Users\abc>echo %MYPATH%
    C:/MyPath
    Eli tuo %MYPATH% tulee tuonne pathiin sellaisenaan eikä osoittimena. Jos taas käyn määrittelemässä graafisesti saman asian windowsin kautta niin silloin se toimii ja path-muuttujaan tulostuu aivan oikein tuo polku
    Koodi:
    C:\Users\abc>echo %PATH%
    C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Users\abc\AppData\Local\Microsoft\WindowsApps;C:/MyPath;

    Mitenkähän tuo pitäisi määritellä tuonne powershell skriptiin, että se toimisi halutulla tavalla?
    Kiitoksia jo etukäteen vastauksista.
     
  2. Moobious

    Rekisteröitynyt:
    17.10.2016
    Viestejä:
    7
    Lisää Pathiin puolipiste tuon %MYPATH% jälkeen.
     
  3. markom

    Rekisteröitynyt:
    18.06.2002
    Viestejä:
    50
    Yritetty. Ei auta.
     
    Viimeksi muokattu: 20.12.2017
  4. markom

    Rekisteröitynyt:
    18.06.2002
    Viestejä:
    50
    Koodi:
    Invoke-Command -ScriptBlock{
        cmd.exe /C 'setx.exe PATH "%PATH%;%MYPATH%"'
    }
    Tuolla lailla nuo näyttäisi saavan ajettua siten, että ne toimii. En vain ymmärrä, että miksi täytyy tehdä se noin...
     
    Viimeksi muokattu: 21.12.2017
  5. Zeisus

    Rekisteröitynyt:
    04.01.2018
    Viestejä:
    2
    Oletko kokeillut vaihtaa tämän rivin:

    Koodi:
    $path += ";%MYPATH%"
    
    Tähän muotoon:

    Koodi:
    $path += ";" + [environment]::GetEnvironmentVariable("MYPATH","User")
    
     
  6. markom

    Rekisteröitynyt:
    18.06.2002
    Viestejä:
    50
    Muistaakseni kokeilin. Ja taisi käyttäytyä niin, että jos tuo MYPATH oli asetettu niin palautti asetetun polun ja jos ei niin palautti tyhjän. Ei siis toiminut halutulla tavalla.
     
  7. Zeisus

    Rekisteröitynyt:
    04.01.2018
    Viestejä:
    2
    Mikä olisi siis haluttu tapa tässä tilanteessa? Kuulostaisi toimivan kuten pitääksin jos palauttaa sen mitä muuttujaan on asetettu (ja tyhjän jos muuttuja on tyhjä).

    EDIT: Vai olisiko tarkoitus siis säilyttää tuo %MYPATH% "osoitin" PATHissa muuttujana, jolloin sen arvo vaihtelee sen mukaan mitä siihen on milloinkin asetettuna.
     
    Viimeksi muokattu: 04.01.2018
  8. markom

    Rekisteröitynyt:
    18.06.2002
    Viestejä:
    50
    Juurikin näin, että että %MYPATH% säilyisi "osoittimena" ja toimisi myös sellaisena...
     
Tagit:

Jaa tämä sivu

Alibi
Anna
Deko
Dome
Erä
Hymy
Kaksplus
Kippari
Kotilääkäri
Kotiliesi
Koululainen
Ruoka.fi
Parnasso
Seura
Suomen Kuvalehti
TM Rakennusmaailma
Tekniikan Maailma
Vauhdin Maailma
Golfpiste
Vene
Nettiauto
Ampparit
Plaza
Muropaketti