4

我想知道如何使用 .Bat 文件调用 powershell 函数。

我有这个简单的功能:

(脚本.ps1)

function testfunction
{
Write-Log "Calling from Bat file"
}

我想在 .Bat 文件中调用函数 testfunction 。

powershell .\Script.ps1 ...

4

5 回答 5

4

I noticed that there is a switch -ExecutionPolicy ByPass which allows the batch file to run using Powershell. This works here, taken from the answer by vonPryz.

@echo off
:: Create a test script file
echo function test { write-host "Called from %~f0" } > s.ps1
powershell -ExecutionPolicy ByPass -command ". "%cd%\s.ps1"; test;"
del s.ps1
pause
于 2013-06-12T13:56:07.433 回答
3

使用开关启动 Powershell -command,包含脚本并调用函数。您需要先点源脚本,然后才能调用它的函数。

:: Create a test script file
C:\temp>echo function test { write-host "Called from .bat" } > c:\temp\s.ps1
C:\temp>powershell -command ". c:\temp\s.ps1; test;"
:: Output
Called from .bat

另外,看看一些样本

于 2013-06-11T05:38:32.650 回答
1

我知道这已经很老了,但我最近试图做同样的事情,我花了很长时间才弄清楚该怎么做。答案非常简单

在批处理文件中(RunMe)

powershell -command ".Script.ps1; Set-SomeFunction %1 %2 %3 %4 %5"

然后你可以像这样调用批处理

RunMe -SomeParm val -SomeParm2 val -SomeSwitch -SomeBool $true

另外,以管理员身份运行

powershell -command “启动进程 -verb runas powershell” “'-noexit -command”。脚本.ps1;Set-SomeFunction %1 %2 %3 %4 %5 %6 %7 %8 %9'"

于 2019-10-21T10:49:05.523 回答
0

我已经使用了

powershell.exe -ExecutionPolicy Bypass -file ".\Write_date.ps1"

似乎与其他人写的相似,但我不确定 vonPryz 在调用脚本之前需要脚本的点源是什么意思。以上在执行策略设置为受限的 Win7 上工作。

于 2013-06-14T15:38:07.533 回答
0

我通常这样做:

powershell {Set-ExecutionPolicy unrestricted}
powershell.exe -executionpolicy ByPass ./script/powerhsell-script.ps1 %par1% %par2%
powershell {Set-ExecutionPolicy Restricted}

希望你需要那个:)

于 2013-06-12T14:12:00.460 回答