2017-10-26 8 views
0

データベースから検索して抜き出したい値があります。私はそれがテキストファイルに結果を書き込むと、それはこのようになりますInvoke-Sqlcmdクエリを文字列として格納します。

$CNumber = Invoke-Sqlcmd -query ("Select Cust From SY.CompanyCode") -ServerInstance $SQLInstance -Database $Database 

Add-Content $Mobile $CNumber 

変数に結果を格納する方法を除いて、このスクリプトを実行するために、私は必要なすべてを持って、その後、txtファイルにそれらの結果を書き込みます:

System.Data.DataRow 

私は単にInvoke-Sqlcmdを実行し、それを変数に格納しようとしませんが、正しい値を見ることができます。だから私はこのクエリが実行されたら、私は何とか結果を変換する必要があると仮定していますか?

お願いします。ありがとうございます。

+0

_ありがとうございます._ ...はい。 – Clijsters

答えて

2

クエリの結果は、System.Data.DataRowあるので、PowerShellはまず、それがAdd-Contentと共に使用することができる前にStringDataRowを変換するために必要とStringに任意のオブジェクトを変換する最も簡単な方法は、ToString()方法を使用することです。

あなたは

$CNumber.ToString() 

を呼び出すことによって、この自分でチェックすることができ、それはのようにコンソールに表示されるはずです:

System.Data.DataRow # OR System.Object[] if there are multiple DataRows 

あなたが1つの列のみを選択しているとして、あなたは、単に上のプロパティにアクセスすることができますDataRowですが、クエリで複数のDataRowが返される可能性があることに留意してください。

foreach($row in $CNumber.Cust) 
{ 
    # row will be equal to each cust from the query 
    # add row to your file here 
} 
+0

それは奇妙な部分ですが、質問を投稿する前にこの正確なメソッドをテストしましたが、何らかの理由で私はまだSystem.Data.Datarowになります。 – Ochuse

+0

これがなぜ機能していないのかは、.NETの仕様に従って.tostringがオブジェクトタイプを出力します。それを変換するには、私は以下を実行する必要があります: Add-Content $ Mobile $ CNumber.itemarray ありがとうございました。乾杯! – Ochuse

関連する問題