2017-12-27 31 views
1

2つのSQLクエリを実行し、2つの変数に結果を保存して比較するpowershellスクリプトを作成しました。結果が異なる場合、私は電子メールを受け取ります。
しかし、私は結果が常に同じであることに気づいた。私が2つの変数を書いてホストするとき、私はこれを得ます:System.Data.DataRow。私は2つの変数を比較すると、実際にはSystem.Data.DataRowSystem.Data.DataRowを比較していると思います。PowershellとSQL:クエリの値を変数に格納する方法は?

if ($resultDB = $resultCube) {$SMTPClient.Send($emailMessageSuccess)} ELSE {$SMTPClient.Send($emailMessageFailure)} 

が、私はそれが間違ってやっている、または変数のSQLクエリーの実際の値を格納する方法があります:私が使用している場合

ザ・は非常に簡単ですか?
私は、変数を、出力に書くとき、私が取得:

Column1 
------- 
993991 

数は、私が探しています何をしていること。

答えて

3

これは、代入演算子と比較演算子が混在しているために発生します。 Powershellでは=が割り当てられ、-eqは等しい比較です。したがって、

if ($resultDB = $resultCube) { ... } 

if $resultCube was assigned into $resultDB without any issues, do... 

あなたは割り当てが失敗する可能性がどのように思うかのように解析され、読み取り専用の変数を考慮してください。列の値を比較する方法として

New-Variable -Name myConstant -Value 1 
$myConstant 
1 
if($myConstant = 2) { "aye"} else { "nay" } # Try and assign new value 
aye 
$myConstant # It works 
2 
Remove-Variable -Name myconstant 
New-Variable -Name myConstant -Value 1 -Option readonly # Now, let's try with a read-only variable 
if($myConstant = 2) { "aye"} else { "nay" } # Kaboom! 
Cannot overwrite variable myConstant because it is read-only or constant. 
At line:1 char:4 
+ if($myConstant = 2) { "aye"} else { "nay" } 
+ ~~~~~~~~~~~~~~~ 
    + CategoryInfo   : WriteError: (myConstant:String) [], SessionStateUnauthorizedAccessException 
    + FullyQualifiedErrorId : VariableNotWritable 

、似た何かをしてみてください

if ($resultDB["myColumn"] -eq $resultCube["myColumn"]) { ... } 
+0

ありがとうございます!私はPowershellで多くの経験がないので、これは完璧でした。私は今日何かを学んだ:) –

関連する問題