2012-10-17 19 views
12

मुझे एसक्यूएल क्वेरी से आउटपुट को पावरहेल में स्ट्रिंग में कनवर्ट करने के तरीके के बारे में आपके इनपुट की आवश्यकता है। मैं वर्तमान में कर रहा हूँ निम्नलिखितपावरहेल - पार्स सिस्टम। डेटा। डेटा टू स्ट्रिंग

function ExecuteFromScriptRowset($connectionParams, $file) 
{ 
    return (invoke-sqlcmd @connectionParams 
      -inputFile $file -MaxCharLength 8000000) 
} 

मैं ऊपर फ़ंक्शन का उपयोग करता है की तरह

SELECT Names FROM tblXXX 

यहाँ कुछ वास्तविक powershell कोड है कि मैं एसक्यूएल संग्रहीत proc आह्वान करने के लिए इस्तेमाल करते हैं एक sql फ़ाइल कॉल करने के लिए

$output = ExecuteFromScriptRowset $someDB (Resolve-Path '.\selectXXX.sql') 

आउटपुट System.Data.DataRow की एक सरणी है जिसे मुझे स्ट्रिंग सरणी में कनवर्ट करने की आवश्यकता है। मैं वर्तमान में $ formatOut के उत्पादन में किया जाता है जिसके बाद इरादा

$formatOut = @() 

for ($i=0; $i -le $output.Length; $i++) 
{ 
    $formatOut = $formatOut + [string]$output[$i] 
} 

यहाँ के रूप में काम नहीं कर रहा बाहर कोशिश कर रहा हूँ पाश के लिए के बाद है और यह नहीं है कि मैं क्या कर सकते हैं आप के लिए

$formatOut[0] = System.Data.DataRow 
$formatOut[1] = System.Data.DataRow 
$formatOut[2] = System.Data.DataRow 

देख रहा था कृपया मुझे बताएं कि मुझे क्या करना है ताकि मैं $ आउटपुट ऑब्जेक्ट

उत्तर

19

जो आप देख रहे हैं वह पूरी तरह से सामान्य है, क्योंकि डिफ़ॉल्ट रूप से ToString आउटपुट ऑब्जेक्ट प्रकार होगा। यह प्रति .NET विनिर्देशों के लिए है।

आप ItemArray का उपयोग कर वस्तु की सरणी के लिए एक DataRow में बदल सकते हैं, और उसके बाद के माध्यम से शामिल होने के "," या जो भी विधि में शामिल होने आप इस तरह पसंद करते हैं,:

$formatOut = $formatOut + ($output[$i].ItemArray -join ",") 
संबंधित मुद्दे