Dzięki PowerShell można wykonywać skrypty jako polecenia, jeśli są umieszczone w katalogach zawartych w zmiennej środowiskowej "PATH". Aby zobaczyć, jakie katalogi w ścieżce, można użyć:
$env:Path -split ';'| sort
Można zmodyfikować ścieżkę trwale z Właściwości systemu WINDOWS' obejmuje lokalizację skryptach, czy można tymczasowo zmodyfikować ścieżkę z poziomu swojego profilu lub skrypt. W danym przypadku, można dodać następujące do swojego profilu, aby dodać katalogu profilu do ścieżki:
$ScriptRoot = Split-Path $SCRIPT:MyInvocation.MyCommand.Path
if(($env:Path -split ';') -notcontains $ScriptRoot) {
$env:Path += ';' + $ScriptRoot
}
Następnie można uruchomić komendę jako:
PS >$timer = New-Object Timers.Timer
PS >Register-TemporaryEvent $timer Disposed { [Console]::Beep(100,100) }
Uwaga: Gdy zakładka ukończenie, zakończy się jako Register-TemporaryEvent.ps1
, ale możesz usunąć ".ps1" i nadal będzie działać.
Czy to nadal prawda? Mam folder w mojej PATH z plikami .ps1 w nim, rozszerzenie .ps1 w moim PATHEXT, a kiedy próbuję wywołać skrypt po jego nazwie, otrzymuję "Termin" foo "nie jest rozpoznawany jako nazwa cmdlet, funkcja, plik skryptu lub działający program . " (ale działa z podpowiedzi cmd) – zneak
To zawsze działało dla mnie we wszystkich wersjach PowerShell od wersji 2 do 5. Jeśli wpiszesz '$ env: PATH' w wierszu uprawnień, zobaczysz tam folder? Być może PATH nie została dodana na stałe lub program explorer.exe nie został ponownie uruchomiony po zmianie PATH. Ponadto, .ps1 nie musi być w PATHEXT, aby wywołać skrypt z powershell. – Rynant