我正在编写一个批处理脚本,它会对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脚本的结果传递给文件时,我可以跟踪整个脚本以我期望的方式运行,但之后它不会返回到我的批处理脚本继续运行其余的脚本。 任何帮助将不胜感激。
答案 0 :(得分:0)
echo Setting Up Database
CALL powershell -noninteractive -File ".\setupDB.ps1 " %1 > nul
echo Done!
试试这个。 call语句将PowerShell作为子进程启动,并在完成控制后返回到原始脚本。