我有一個運行invokesqlcmd語句的powershell腳本,並計算返回中的行數並根據該數字創建一個變量。它應該只在有一行或兩行時關閉,具體取決於是否返回了錯誤(預計會出現一些錯誤),但是在仍有三行時它已關閉幾次。我希望它關閉,如果唯一的值是「成功」和「失敗」,但通常以第三個「處理」值關閉,則通常會關閉。不一致的PowerShell腳本結果
這是腳本的相關部分。
$var = invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "C:\updated-selectstatus.sql" |measure-object -line|select-object -expandproperty lines
while ($var -ge 1)
{
$var = invoke-sqlcmd -ServerInstance "$server" -database "$db" inputfile "$updated-selectstatus.sql" |measure-object -line|select-object -expandproperty lines
clear-host
invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"
Start-Sleep -Seconds 5
if ($var -eq 2){
if ((invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|select-object -expandproperty statusname|select-string -simplematch successful) -and (invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|select-object -expandproperty statusname|select-string -simplematch failure)) {invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|out-gridview; break}
}
if ($var -eq 1){
if ((invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|select-object -expandproperty statusname|select-string -simplematch successful) -or (invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|select-object -expandproperty statusname|select-string -simplematch failure)) {invoke-sqlcmd -ServerInstance "$server" -database "$db" -inputfile "$updated-selectstatus.sql"|out-gridview; break}
}
}
我不知何故混亂了我的測試邏輯條件?
感謝您的反饋意見。我將使用.count來清理腳本。我有第二個invoke命令,因爲循環從未結束,因爲一旦執行開始就沒有評估。對於問題的其餘部分,我可能並不是我原來的帖子中最清楚的。該腳本監視在sql server上運行的數據加載作業,大約有2000 +/-事務,通常以大約5或6個錯誤結束,其餘都是成功的。至少在我腦海中,這兩個IF語句都被編寫爲僅在sql命令返回SUCCESSFUL和/或FAILURE結果時終止。 – ShellGames
我已經更新了我的答案,看看這是否對你更好。 – TheMadTechnician
我已經實現了你的更新,它看起來就是這樣做的。非常感謝。 – ShellGames