我剛剛從http://poshcode.org/2205下載了Register-TemporaryEvent
cmdlet,並將其放置在$profile
腳本附近的powershell配置文件目錄中。如何導入新的PowerShell cmdlet?
如何創建將綁定到此腳本的新命令Register-TemporaryEvent
?
謝謝。
我剛剛從http://poshcode.org/2205下載了Register-TemporaryEvent
cmdlet,並將其放置在$profile
腳本附近的powershell配置文件目錄中。如何導入新的PowerShell cmdlet?
如何創建將綁定到此腳本的新命令Register-TemporaryEvent
?
謝謝。
使用PowerShell,如果將腳本放置在'PATH'環境變量中包含的目錄中,可以將它們作爲命令執行。要看到的是在Path哪些目錄,你可以使用:
$env:Path -split ';'| sort
你可以從Windows的系統屬性永久修改路徑,包括腳本的位置,或者你可以暫時從您的個人資料中修改路徑或腳本。在您的特定情況下,您可以添加以下到您的個人資料的配置文件目錄添加到路徑:
PS >$timer = New-Object Timers.Timer
PS >Register-TemporaryEvent $timer Disposed { [Console]::Beep(100,100) }
注:
$ScriptRoot = Split-Path $SCRIPT:MyInvocation.MyCommand.Path
if(($env:Path -split ';') -notcontains $ScriptRoot) {
$env:Path += ';' + $ScriptRoot
}
然後,您可以爲運行該命令時選項卡完成,它將完成爲Register-TemporaryEvent.ps1
,但您可以刪除'.ps1',它仍然可以工作。
您可以獲取腳本文件的內容,將其包含在函數中並調用代碼來創建該函數。
$sb = Get-Content .\script.ps1 | Out-String
Invoke-Expression "function Register-TemporaryEvent {`n $sb `n} "
這是真的嗎?我在PATH中有一個文件夾,其中包含.ps1文件,PATHEXT中的.ps1擴展名,當我嘗試通過名稱調用腳本時,我得到「術語'foo'不被識別爲cmdlet,函數,腳本文件或可操作的程序。「 (但它可以從cmd提示符運行) – zneak
從v2到v5的所有PowerShell版本中,它一直適用於我。如果你在powershell提示符下輸入'$ env:PATH',你會看到那個文件夾嗎?也許PATH沒有永久添加,或者由於PATH被改變,explorer.exe還沒有被重新啓動。另外,.ps1不需要在PATHEXT中從powershell調用腳本。 – Rynant