php - Powershell调用后批处理脚本将不会返回

标签 php sql powershell batch-file

我正在编写一个批处理脚本,该脚本多次调用powershell脚本以执行一些操作。
我已经分别测试了两个脚本,它们都产生了我想要的结果,但是当我将它们组合在一起时,powershell脚本会挂起。我认为问题出在我有一个php脚本,该脚本将值传递到批处理文件,然后根据该信息对不同的powershell脚本进行调用。

我的批处理脚本发出此调用:

echo Setting Up Database
powershell -noninteractive -File ".\setupDB.ps1 " %1 > nul
echo Done!

我的powershell脚本如下所示:
$tempname = #$args[0]
$dbname = "cw_" + $tempname

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$dbusername = "username"
$dbpassword = "password"

echo "Creating connection to server"

$connStr ="server="myserver";Persist Security Info=false;user id=" + $dbusername + ";pwd=" + $dbpassword + ";"
$conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)
echo "Done"

$conn.Open()

if($conn.State -eq "Open")
{
echo "Connection open"
}

$cmd = New-Object MySql.Data.MySqlClient.MySqlCommand
$cmd.Connection  = $conn
$cmd.CommandText = "DROP DATABASE IF EXISTS " + $dbname
$cmd.ExecuteNonQuery()

$cmd.CommandText = 'CREATE DATABASE `' + $dbname + '`'
$cmd.ExecuteNonQuery()

$conn.Close()
if($conn.State -eq "closed") {
echo "closed connection"
}
exit

当我将Powershell脚本中的结果通过管道传输到文件时,我可以跟踪到整个脚本按照预期的方式运行,但是在此之后,它不会返回到批处理脚本以继续运行其余脚本。
任何帮助将不胜感激。

最佳答案

echo Setting Up Database
CALL powershell -noninteractive -File ".\setupDB.ps1 " %1 > nul
echo Done!

试试这个。调用语句将PowerShell作为子进程启动,完成后,控制权将返回到原始脚本。

关于php - Powershell调用后批处理脚本将不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11802647/

相关文章:

java - 在mybatis中映射结果集(两个整数)?

powershell - 如何创建只读属性

.net - 如何在 Visual Studio 中调试 Windows PowerShell 模块?

javascript - php从字符串计算逻辑表达式

PHP-SDK Facebook 身份验证不断重定向

php - 如何将新闻发送给带有特定标签的特定订阅者?

VBA 列限制中的 SQL 命令

php - 如何创建我自己的登录页面而不是 simplesamlphp IDP 登录页面

mysql - 尝试显示时 SQL 歧义

powershell - “kubectl修补程序”在Linux Bash上有效,但在Windows Powershell ISE中不可用