我正在使用Windows PowerShell ISE編寫我的PowerShell腳本。當我更改腳本中的某些內容並運行該腳本時,不會執行最後保存的腳本版本,而是執行較舊版本的腳本。只有當我第二次運行腳本時,它纔會使用當前版本。我能做些什麼來始終運行最新版本的腳本?運行舊版本的Windows PowerShell ISE
6
A
回答
1
編輯完成後,您需要再次通過點源採集腳本。假設你有一個在當前目錄中名爲MyScript.ps1文件,在控制檯中運行以下命令:
. .\MyScript.ps1
如果你想在腳本中調用特定的功能,那麼你可以這樣做:
. .\MyScript.ps1
MyFunction
1
這是一個非常古老的問題,但我認爲我偶然發現了同樣的問題。在我的情況下,我在調用它之後定義了一個函數。它似乎工作,但只是因爲「myfunc」仍然具有前一次調用的價值。如果您更改「Hello,World!」,您會發現新值僅對第二次嘗試有影響。
Invoke-Command -ScriptBlock ${function:myfunc}
function myfunc() {
Write-Host "Hello, World!"
}
要解決這個問題,只要你嘗試調用它之前定義功能。
function myfunc() {
Write-Host "Hello, World!"
}
Invoke-Command -ScriptBlock ${function:myfunc}
0
我用的舊文件ISE 「緩存」 的經驗:
ISE的行爲是PS模塊的不同(名爲.psm1)和簡單的PS腳本(PS1)。我在Win10Pro上使用PS & ISE。
A) 我與模塊(PSM1)
- 加載模塊文件 「hello.psm1」 已經放在一個適當的模塊中的經驗 目錄 「C:\用戶\ MyUserName輸入\文檔\ WindowsPowerShell \模塊\你好運行選擇」通過 ISE
- 通過執行函數‘’(你可能不執行 模塊‘運行腳本’)
- 修改文件,如 函數'Write-Host'Hello World!''輸出到'Write-Host'Hello''並保存 文件。
- 通過「運行選擇」執行一個功能,它將執行帶有舊輸出的舊功能 。 「你好,世界!」。這也是如果我重複「運行選擇」命令 。
- 只要我離開ISE並重新加載它,新功能就由「運行選擇」執行。
B) 我的腳本經驗(.PS1)。
- 如果我執行「運行選擇」,與模塊的行爲相同。
- 如果我執行一次「運行腳本」並通過該函數被調用,則執行該函數的當前版本。當然,我在文件「之後」定義的文件中(例如在第10-20行中)調用函數(例如在行號100上)。由此,不存在緩存。
- 特別是因此,如果我執行一次「運行腳本」,而執行的代碼不調用該函數,然後通過「運行選擇」執行我的功能,則執行該函數的當前版本。
C) 這裏是我的解決方法,以使模塊開發更加舒適:
- 簡單的腳本可以通過「運行腳本」執行。
- 如果我想開發一個模塊(.PSM1),我在開發階段將其命名爲簡單腳本(.PS1)。我將文件(例如「hello.ps1」)已經放置在 正確的模塊文件夾中,例如, 「C:\ Users \ MyUserName \ Documents \ WindowsPowerShell \ Modules \ Hello」爲模塊「Hello」。當然,我不能通過PowerShell控制檯執行模塊功能的功能。我只是想使用ISE來調用函數進行測試。
- 由於模塊不作爲腳本執行,文件中沒有可執行代碼,只是函數(AFAIK)。所以我可以安全地在腳本上執行「運行腳本」。
因此,如果我在ISE開發下修改模塊文件,在執行「運行選擇」功能之前,我總是先執行「運行腳本」。
通過這個,我總是執行一個函數的當前版本。
雖然我的問題有點不同,但這個問題和答案對我找到解決方案非常有幫助。很難找到有關ISE「緩存」的問題以及如此有用的答案。
真誠 Rolf
相關問題
- 1. 從Windows Powershell運行PHP CLI ISE
- 2. Powershell:使用x86 powershell運行的腳本/ ise
- 3. 從命令行運行PowerShell ISE?
- 4. 在Windows 8 PowerShell ISE中運行草莓的Perl
- 5. 如何從PowerShell ISE運行SQLite等shell?
- 6. 我的PowerShell腳本僅在從ISE運行時才起作用
- 7. 如何創建一個對象運行PowerShell的ISE腳本
- 8. 在Powershell ISE
- 9. PowerShell ISE中殼
- 10. Powershell的5.0/ISE
- 11. Powershell ISE到記事本++
- 12. Powershell:腳本不是從命令行運行,而是從ISE運行?
- 13. 如何在Windows上運行較舊版本的node.js
- 14. 有沒有辦法檢查腳本是否由PowerShell ISE運行?
- 15. PowerShell腳本不會運行在ISE之外
- 16. Eclipse運行舊版本的程序
- 17. 運行較舊的iOS版本XCode
- 18. Eclipse運行舊版本的Java程序
- 19. Azure Powershell ISE執行查詢
- 20. Cygwin運行不同版本的Java比Windows PowerShell
- 21. ipython在運行新版本之前先運行舊版本的腳本
- 22. 當它應該在舊版本的Windows上運行時,exe無法運行
- 23. 腳本可以在PowerShell中,但在PowerShell ISE中運行時,不C#
- 24. 從powershell腳本執行powershell.exe(在ISE中運行,但不是在腳本中)
- 25. 在Windows Server 2012中找不到Powershell ISE
- 26. Flowgear運行舊工作流版本
- 27. 使用舊python版本的mod_wsgi運行時版本
- 28. 如何讓Jmeter版本3.12腳本運行到舊版本2.11?
- 29. 運行遠程PowerShell會話版本2
- 30. 運行powershell沒有'運行腳本'