2
我试图调用一个powershell脚本,该脚本依次运行各种.SQL文件。 它看起来是这样的:powershell修改'。'并调用.ps1
SCRIPT1(Invoke_createdb.ps1):
$scriptPath = "C:\scriptpath"
$dbUser = "dbuser1"
$dbPassword = "dbpassword1"
$dbInstance = "dbserver1"
$dbName = "Database1"
& $scriptPath\createdb.ps1 -dbInstance $dbInstance -dbUser $dbUser -dbPassword $dbPassword -dbName $dbName
SCRIPT2(createdb.ps1):
param
(
$dbInstance = $(Read-Host "database server"),
$dbaUser = $(Read-Host "dba user"),
$dbaPassword = $(Read-Host "password of dba user"),
$dbName = $(Read-Host "Database Name")
)
Invoke-Expression "sqlcmd.exe -S $dbInstance -U $dbaUser -P $dbaPassword -i .\create.sql"
Invoke-Expression "sqlcmd.exe -S $dbInstance -d $dbName -U $dbaUser -P $dbaPassword -i .\MSSQLScripts\Create\TABLES.SQL"
$storedProcedures = Get-ChildItem .\MSSQLScripts\Shared\*.sql
foreach ($storedProcedure in $storedProcedures)
{
Invoke-Expression "sqlcmd.exe -S $dbInstance -d $dbName -U $dbaUser -P $dbaPassword -i $storedProcedure"
}
这似乎原理简单,如果第二工程脚本是独立运行的。 当第二个脚本被第一个脚本调用时,我出现了这个问题,因为'。\'不再是相对的并且中断。它变得无法使用.\
找到任何东西。
不可能修改'Script2',因为它需要在其他场景中相对于自身运行,并定期用其他过程更新,但我需要在第一个脚本中调用它。
我试着修改$env:PATH
和$env:ROOT
变量,但我没有成功。
有谁知道一个干净的方式,我可以(1)调用第二个脚本,并在同一时间(2)设置相对路径,以便它调用时成功运行?
感谢您的任何帮助。
编辑:我已经通过在第二个脚本中将每个提到的.\
修改为明确的UNC路径进行了暂时测试,但如前所述,在其他环境中运行时脚本不会运行。
This works great! 谢谢! – Kareem