2009-09-10 50 views

回答

63

您通常會 「點」 的劇本到範圍(全球,另一個劇本,一個腳本塊內)。點一個腳本既會加載和執行該範圍內的腳本,也不會創建新的嵌套範圍。使用函數,這有利於在腳本執行後他們堅持。你可以做什麼Tomer的建議,只是你需要點腳本如:

powershell -command "& { . <path>\script1.ps1; My-Func }" 

如果你只是想從當前的PowerShell會話中執行的功能,那麼這樣做:

. .\script.ps1 
My-Func 

只是要意識到任何不在函數中的腳本都將被執行,任何腳本變量都將成爲全局變量。

+0

+1,第二代碼片段是我需要的,做獨立的功能簡單的調試,從ISE – 2011-07-18 12:54:10

+1

一個腳本文件,在第二個代碼片段,您可以環繞代碼'& {...}'在'&{。 \ script1.ps1; My-Func}'以避免範圍污染。 – 2015-12-17 19:28:36

+0

如果您有該功能的參數,請將它們放在功能名稱後面,例如powershell -command「&{。」C:\ script.ps1「; MyMethod」arg1「」arg2「}」 – HockeyJ 2017-08-18 14:36:59

2

也許類似

powershell -command "& { script1.ps; My-Func }" 
0

該指令在下面引發錯誤消息。正如Keith Hill所建議的那樣,在文件名的名稱之前需要使用點來將其加載到內存中。

MyFunction: The term 'MyFunction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.