Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 批处理脚本在powershell调用后不会返回_Php_Sql_Powershell_Batch File - Fatal编程技术网

Php 批处理脚本在powershell调用后不会返回

Php 批处理脚本在powershell调用后不会返回,php,sql,powershell,batch-file,Php,Sql,Powershell,Batch File,我正在编写一个批处理脚本,它多次调用powershell脚本来执行一些操作。 我分别测试了这两个脚本,它们都产生了我想要的结果,但是当我组合它们时,powershell脚本挂起。我相信问题的根源在于我有一个php脚本,它将值传递给批处理文件,然后批处理文件根据这些信息调用不同的powershell脚本 我的批处理脚本进行以下调用: echo Setting Up Database powershell -noninteractive -File ".\setupDB.ps1 " %1 >

我正在编写一个批处理脚本,它多次调用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!
试试这个。call语句作为子进程启动PowerShell,完成后,控制返回到原始脚本


试试这个。call语句以子进程的形式启动PowerShell,完成后,控制返回到原始脚本。

您可以在PHP中完成所有这一切,省去了让PowerShell和PHP合作的麻烦。您可以在PHP中完成所有这一切,省去了让PowerShell和PHP合作的麻烦。