要將腳本檔案加載到打開的 PS 控制臺(例如匯入函式),需要點源或匯入模塊小程式。
在函式中使用 this (創建別名)不起作用,例如:
Function psinit1 { . C:\Scripts\scriptFunktions.ps1 }
Function psinit2 { Import-module C:\Scripts\scriptFunktions.ps1 -force}
當我打電話psinit1或psinit2我沒有收到錯誤時,但我的功能不可用。為什么這不起作用,我是否正確假設該函式打開了一個加載腳本的新范圍(并在函式完成后關閉)?
我怎樣才能讓它作業?
uj5u.com熱心網友回復:
除非您通過點源運算子呼叫函式.,否則它的主體在子作用域中執行,因此您在其中執行的任何操作(除非您明確針對不同的作用域)都僅限于該子作用域及其后代作用域。
因此,要使您的函式按預期作業,即使定義對呼叫者的范圍可見,請點源它們的呼叫:
. psinit1
通常,請注意雖然也接受腳本,但其主要目的是作用于模塊。使用腳本,它實際上表現得像點源,除了在子范圍內重復呼叫腳本失敗,除非還指定(強制重新加載)。Import-Module .ps1 .ps1Import-Module.ps1-Force
結果:不要Import-Module與.ps1腳本一起使用:
避免的主要原因是它做出了一個它不能遵守的承諾:因為發生了簡單的點源,所以沒有實際的模塊被匯入——即使一個名義上出現在
Get-Module' 的輸出中,以腳本檔案的基本檔案名命名(例如,foo對于腳本foo.ps1)。因為發生了簡單的點源,所以您以后不能使用它
Remove-Module來卸載腳本的定義;雖然您可以呼叫Remove-Module匯入的偽模塊,但它沒有效果:點源定義仍然有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/473743.html
