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