2

いくつかの操作を実行するために、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 スクリプトからの結果をファイルにパイプすると、スクリプト全体が期待どおりに実行されることを追跡できますが、その後、バッチ スクリプトに戻って残りのスクリプトを実行し続けることはありません。どんな助けでも大歓迎です。

4

1 に答える 1

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

これを試して。call ステートメントは、PowerShell をサブプロセスとして開始し、終了後に制御を元のスクリプトに戻します。

于 2012-08-04T07:44:14.173 に答える