2014-10-01 83 views
-2

我需要一些腳本的幫助。如何使用powershell更新或更新數據庫

的情況如下:

我在Oracle數據庫中的,我想利用PowerShell來插入BIOS數據。問題是我不能用if語句更新數據庫,因爲他一直說if是真的。

$bios = Get-WmiObject -Namespace root/hp/instrumentedBIOS -Class hp_biosSetting 
($bios | Where-Object {$_.Name -eq 'boot order'}) 

$bios4 =echo $bios3.PSComputerName 

$id ="select id FROM TESTAAD" 
$CUR="SELECT id FROM TESTAAD WHERE WAARDE1 = $bios4" 

if ($CUR -ne $id){ 
    $qu= "INSERT INTO TESTAAD VALUES('$bios4','$waarde6','$waarde5','$waarde4','$waarde3','$waarde2','$waarde1','$id')" 
             $cmd = $con.CreateCommand() 
             $cmd.CommandText = $qu 
             $cmd.ExecuteNonQuery() |out-null  


    } 
    else 
    { 

    echo $bios4 
     $qu= "UPDATE TESTAAD SET waarde2 = '$waarde2' , waarde3 = '$waarde3' , waarde4 = '$waarde5' , waarde5 = 'bla' , waarde6 = '$waarde6' WHERE WAARDE1 = '$bios4'" 
             $cmd = $con.CreateCommand() 
             $cmd.CommandText = $qu 
             $cmd.ExecuteNonQuery() |out-null 
             echo $bios4 


    } 












$con.CLose() 

我想什麼今天acomplise是用一個id和PC的名頭插入數據連接,然後更新數據

+1

-1代碼轉儲。請閱讀關於如何創建[最小,完整和可驗證示例]的幫助(http://stackoverflow.com/help/mcve)。 – vonPryz 2014-10-01 08:12:58

回答

0

問題在於未更新變量中。 $CUR正在分配一次,但從未更新過。

您正在比較是否字符串select id FROM TESTAADSELECT id FROM TESTAAD WHERE WAARDE1 = $bios4不相等。如果SQL select語句結果是相同的,我假設你想要比較。

看起來您似乎錯過了$id$CUR包含的SQL語句的實際執行。 SQL查詢肯定不會這樣做:

$id ="select id FROM TESTAAD" # This is not performing an actual SQL query, only text 
$CUR="SELECT id FROM TESTAAD WHERE WAARDE1 = $bios4" # Ditto 

if ($CUR -ne $id){ # This is always true, as $id is not equal to $CUR 
    $qu= "INSERT INTO TESTAAD VALUES ('$bios4','$waarde6','$waarde5', ` 
    '$waarde4','$waarde3','$waarde2','$waarde1','$id')" 
    $cmd = $con.CreateCommand() 
    $cmd.CommandText = $qu 
    $cmd.ExecuteNonQuery() |out-null  
} else { 
    echo $bios4 
    $qu= "UPDATE TESTAAD SET waarde2 = '$waarde2' , waarde3 = '$waarde3', ` 
    waarde4 = '$waarde5' , waarde5 = 'bla' , waarde6 = '$waarde6' WHERE WAARDE1 = '$bios4'" 
    $cmd = $con.CreateCommand() 
    $cmd.CommandText = $qu 
    $cmd.ExecuteNonQuery() |out-null 
    echo $bios4 
}