批处理文件是否有办法调用powershell函数?我试过了
powershell ". .\tes.ps1; Test-Me -Param1 'Hello world' -Param2 12345"
它有效,函数被调用,但powershell脚本中的其他内容也被调用。
答案 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文件就成了一个中心函数库。