调用powershell函数的批处理脚本

时间:2013-08-10 01:06:40

标签: powershell batch-file powershell-v2.0

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

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

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

2 个答案:

答案 0 :(得分:2)

您尝试做的就是点源 tes.ps1 ,以便您可以使用该文件中定义的 Test-Me 功能。当您点源文件时,该文件中的所有内容都会被执行。如果您在 tes.ps1 中有其他命令不想执行,那么您需要将 Test-Me 放在单独的文件中。最好的方法:创建一个名为 Test-Me.ps1 的文件,其中包含函数的内容(不要使用function { [...] }声明一个函数,只需在函数的scriptblock中包含代码,然后在批处理文件中调用它:

powershell "<path>\Test-Me.ps1 -Param1 'Hello world' -Param2 12345"

答案 1 :(得分: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文件就成了一个中心函数库。