首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用powershell后,批处理脚本不会返回

问调用powershell后,批处理脚本不会返回
EN

Stack Overflow用户
提问于 2012-08-04 04:12:51
回答 1查看 841关注 0票数 2

我正在编写一个批处理脚本,该脚本对powershell脚本进行多次调用以执行一些操作。

我已经分别测试了这两个脚本,它们都产生了我想要的结果,但是当我将它们组合在一起时,powershell脚本挂起了。我认为问题来自于我有一个php脚本,它将值传递给批处理文件,然后批处理文件根据该信息调用不同的powershell脚本。

我的批处理脚本执行此调用:

代码语言:javascript
复制
echo Setting Up Database
powershell -noninteractive -File ".\setupDB.ps1 " %1 > nul
echo Done!

我的powershell脚本如下所示:

代码语言:javascript
复制
$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脚本的结果传输到文件时,我可以跟踪整个脚本的运行方式,但是之后它不会返回到我的批处理脚本来继续运行其余的脚本。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-04 15:44:14

代码语言:javascript
复制
echo Setting Up Database
CALL powershell -noninteractive -File ".\setupDB.ps1 " %1 > nul
echo Done!

尝尝这个。call语句将PowerShell作为子进程启动,并在其完成后将控制权返回给原始脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11802647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档