powershell修改'\';和invoke.ps1
我试图调用一个powershell脚本,该脚本反过来运行各种.SQL文件。 它看起来像这样: 脚本1(调用\u createdb.ps1): 脚本2(createdb.ps1): 这在原则上看起来很简单,如果第二个脚本自己运行,它就可以工作。 当第2个脚本被第1个脚本调用时,就会出现我遇到的问题,因为“.\”不再是相对的,并且会中断。它将无法使用powershell修改'\';和invoke.ps1,powershell,path,environment-variables,Powershell,Path,Environment Variables,我试图调用一个powershell脚本,该脚本反过来运行各种.SQL文件。 它看起来像这样: 脚本1(调用\u createdb.ps1): 脚本2(createdb.ps1): 这在原则上看起来很简单,如果第二个脚本自己运行,它就可以工作。 当第2个脚本被第1个脚本调用时,就会出现我遇到的问题,因为“.\”不再是相对的,并且会中断。它将无法使用\找到任何内容 不可能修改“Script2”,因为它需要在其他场景中相对于自身运行,并使用其他过程定期更新,但我需要在第一个脚本中调用它 我尝试修改$e
\
找到任何内容
不可能修改“Script2”,因为它需要在其他场景中相对于自身运行,并使用其他过程定期更新,但我需要在第一个脚本中调用它
我尝试修改$env:PATH
和$env:ROOT
变量,但没有成功
有人知道我可以(1)调用第二个脚本,同时(2)设置相对路径,以便在调用时成功运行的干净方法吗
谢谢你的帮助
编辑:我已通过将第二个脚本中提到的
\
修改为一个明确的UNC路径,暂时测试成功,但如上所述,在其他环境中运行时,脚本不会运行。为什么不在调用脚本之前更改当前目录
...
Push-Location $scriptPath
$scriptPath\createdb.ps1 -dbInstance $dbInstance -dbUser $dbUser -dbPassword $dbPassword -dbName $dbName
Pop-Location
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"
}
...
Push-Location $scriptPath
$scriptPath\createdb.ps1 -dbInstance $dbInstance -dbUser $dbUser -dbPassword $dbPassword -dbName $dbName
Pop-Location