如何使用PowerShell插入或更新数据库

时间:2014-10-01 07:30:32

标签: powershell

我需要一些脚本的帮助。

情况如下:

我在oracle中有一个数据库,我想使用powershell插入bios数据。问题是我无法使用if else语句更新数据库,因为他一直说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()

我今天想要的是首先插入带有id和pc名称的数据然后更新数据

1 个答案:

答案 0 :(得分: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
}