2

批处理文件有没有办法调用powershell函数?我试过了

powershell ". .\tes.ps1; Test-Me -Param1 'Hello world' -Param2 12345" 

它有效,该函数被调用,但 powershell 脚本中的所有其他内容也是如此。   

4

2 回答 2

3

看起来您正在尝试做的是 dot-source tes.ps1以便您可以使用该文件中定义的Test-Me函数。当您对文件进行点源时,该文件中的所有内容都会被执行。如果tes.ps1中有其他不想执行的命令,则需要将Test-Me放在单独的文件中。最好的方法:创建一个名为Test-Me.ps1的文件,其中包含函数的内容(不要用 声明函数function { [...] },只需在函数的脚本块中包含代码),然后在批处理中像这样调用它文件:

powershell "<path>\Test-Me.ps1 -Param1 'Hello world' -Param2 12345"
于 2013-08-10T01:32:44.847 回答
0

@Adi Inbar 的解决方案非常完美。

这是另一种方式(更多从结构的角度来看):如果 tes.ps1 仅包含函数,请创建一个具有以下内容的全新脚本:

.\tes.ps1
Test-Me -Param1 'Hello world' -Param2 12345

然后在批处理文件中,使用“file”参数运行这个全新的脚本:

Powershell -file *path_to_PS_script*

tes.ps1 首先运行,它将加载脚本范围内的所有函数。您可以选择要运行的功能。

这样,tes.ps1 文件就充当了一个中央函数库。

于 2013-08-10T13:18:40.017 回答