0
我有一個是我需要改變PowerShell腳本以這樣一種方式,它運行的定義如下執行SQL腳本值
<?xml version="1.0"?>
<Scripts>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "PreDeployment_265015_Add_column_TotalAmount.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "2" sql = "PreDeployment_265375_Add_column_IsPassFloorViolaton.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "3" sql = "PreDeployment_265915_Add_Columns_InferredMemberSource.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "Predeployment_266364_AddPSOKeyAndOffsrpingDirectorCount.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "PreDeployment_267185_DropTheOLdRelationshiphistoryTable.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "PreDeployment_268731_Add_Column_TaxExemptStatus_to_DimOrder.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "AM_QA_Contacts.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "QA_Intelligence_AM.sql"/>
<Script Server = ".\" DBName = "Intelligence_Audit_Local" Sequence = "1" sql = "AuditScripts.sql"/>
<Script Server = ".\" DBName = "Intelligence_FO_Local" Sequence = "1" sql = "AuditScripts.sql"/>
</Scripts>
的XML配置文件所有在XML中提到的具有序列1的sql文件,然後運行所有具有序列2的文件等等。因此,序列2腳本只能在序列1完成後運行。目前,以下腳本只執行了序列1.
[xml]$xml = [xml] (Get-Content -Path $configfile)
$Scripts= $xml.SelectNodes("/Scripts/Script")
foreach ($Script in $Scripts | where {$_.Sequence -eq "1"}) {
$sqlfilename = $Script.getAttribute("sql")
$Server = $Script.getAttribute("Server")
$DBName = $Script.getAttribute("DBName")
$filename = $sqlfilename.Replace(".sql", "")
$ps1 = $location + "\" + $sqlfilename.Trim()
$ErrorOutputFile = "Error_output_{0}_{1}.txt" -f $filename.Trim(), $OutputDate
If (Test-Path -path $ps1) {
add-content $logfile "- Started: $ps1 "
$commandLine = "Invoke-Sqlcmd -ServerInstance $Server -Database $DBName -InputFile $ps1"
Start-Process "powershell.exe" -ArgumentList $commandLine -RedirectStandardError "$Outputlocation\$ErrorOutputFile" #-ErrorAction silentlycontinue
add-content $logfile "----------------------------------------"
$i++;
}
Else {
add-content $logfile "- File not found: $ps1 "
add-content $logfile "----------------------------------------"
$x++;
}
}
謝謝Esperento57。排序工作正常,但有沒有原因,你改變了if-else邏輯?在你的情況下,一旦文件沒有找到,它不會繼續到下一個腳本。 – Phani
只是在表現上更好,繼續總是說繼續循環,而不是modidy scripy comportement – Esperento57