2017-12-27 2 views
1

2 개의 SQL 쿼리를 실행하고 결과를 2 개의 변수에 저장하고 비교하는 powershell 스크립트를 작성했습니다. 결과가 다른 경우 이메일을 받게됩니다.
그러나 결과가 항상 동일하다는 것을 알았습니다. 쓰기 - 두 변수를 호스트 할 때,이 값은 System.Data.DataRow입니다. 두 변수를 비교할 때 실제로는 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에 대한 많은 경험이 없기 때문에 이것이 완벽했다. 나는 오늘 무언가를 배웠다 :) –

관련 문제