PowerShell ile komut dosyalarını, 'PATH' ortam değişkeninde bulunan dizinlere yerleştirilirse komut olarak çalıştırabilirsiniz. Yolu ne dizinleri görmek için kullanabilirsiniz:
$env:Path -split ';'| sort
Eğer komut yeri içerecek şekilde Windows' Sistem Özellikleri kalıcı yolunu değiştirebilir veya geçici profilinizdeki yolunu değiştirebilir veya komut dosyası. belirli durumda, yola profil dizini eklemek için profilinizde aşağıdakileri ekleyebilirsiniz:
PS >$timer = New-Object Timers.Timer
PS >Register-TemporaryEvent $timer Disposed { [Console]::Beep(100,100) }
Not:
$ScriptRoot = Split-Path $SCRIPT:MyInvocation.MyCommand.Path
if(($env:Path -split ';') -notcontains $ScriptRoot) {
$env:Path += ';' + $ScriptRoot
}
Ardından sıra komutunu çalıştırabilirsiniz sekme tamamlarken, Register-TemporaryEvent.ps1
olarak tamamlayacak, ancak '.ps1' kaldırabilirsiniz ve hala çalışır.
Bu hala geçerli mi? Benim PATHEXT'imde .ps1 uzantılı .PS1 dosyaları ile PATH'm içinde bir klasör var ve betiği ismiyle çağırmaya çalıştığımda, "foo" terimi, cmdlet, işlev, komut dosyası veya çalıştırılabilir program. " (fakat bir cmd isteminden çalışır) – zneak
Tüm PowerShell sürümlerinde v2'den v5'e her zaman çalıştı. Powershell komut isteminde '$ env: PATH 'yazarsanız, oradaki klasörü görüyor musunuz? Belki de PATH kalıcı olarak eklenmedi veya PATH değiştirildiği için explorer.exe yeniden başlatılmadı. Ayrıca, .ps1 komut dosyasını powershell'den çağırmak için PATHEXT içinde olması gerekmez. – Rynant