我想知道如何使用 .Bat 文件调用 powershell 函数。
我有这个简单的功能:
(脚本.ps1)
function testfunction
{
Write-Log "Calling from Bat file"
}
我想在 .Bat 文件中调用函数 testfunction 。
powershell .\Script.ps1 ...
我想知道如何使用 .Bat 文件调用 powershell 函数。
我有这个简单的功能:
(脚本.ps1)
function testfunction
{
Write-Log "Calling from Bat file"
}
我想在 .Bat 文件中调用函数 testfunction 。
powershell .\Script.ps1 ...
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
使用开关启动 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
另外,看看一些样本。
我知道这已经很老了,但我最近试图做同样的事情,我花了很长时间才弄清楚该怎么做。答案非常简单
在批处理文件中(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'"
我已经使用了
powershell.exe -ExecutionPolicy Bypass -file ".\Write_date.ps1"
似乎与其他人写的相似,但我不确定 vonPryz 在调用脚本之前需要脚本的点源是什么意思。以上在执行策略设置为受限的 Win7 上工作。
我通常这样做:
powershell {Set-ExecutionPolicy unrestricted}
powershell.exe -executionpolicy ByPass ./script/powerhsell-script.ps1 %par1% %par2%
powershell {Set-ExecutionPolicy Restricted}
希望你需要那个:)