2009-04-29 5 views
22

은 내가 DataSet에서 각 행의 출력 값에 "매우"단순한 작업을 시도하고있다 :powershell에서 데이터 세트를 반복하는 방법은 무엇입니까?

for ($i=0;$i -le $ds.Tables[1].Rows.Count;$i++) 
{ 
    Write-Host 'value is : ' + $i + ' ' + $ds.Tables[1].Rows[$i][0] 
} 

출력을 제공합니다 ... 내가 열에서 실제 가치를 어떻게

value is : +0+ +System.Data.DataSet.Tables[1].Rows[0][0] 
value is : +1+ +System.Data.DataSet.Tables[1].Rows[1][0] 
value is : +2+ +System.Data.DataSet.Tables[1].Rows[2][0] 
value is : +3+ +System.Data.DataSet.Tables[1].Rows[3][0] 
value is : +4+ +System.Data.DataSet.Tables[1].Rows[4][0] 
value is : +5+ +System.Data.DataSet.Tables[1].Rows[5][0] 
value is : +6+ +System.Data.DataSet.Tables[1].Rows[6][0] 

을 ?

답변

29

PowerShell을 문자열 평가가 호출 ToString() 온을 DataSet. 어떤 속성 (또는 메소드 호출)을 평가하기 위해서는, 길이를 파악하지 않고

for($i=0;$i -lt $ds.Tables[1].Rows.Count;$i++) 
{ 
    write-host "value is : $i $($ds.Tables[1].Rows[$i][0])" 
} 

또한 foreach는 컬렉션이나 어레이를 통해 반복 할 수 $()에서 발현 둘러싸 평가를 강제해야한다.

$ds = new-object System.Data.DataSet 
$ds.Tables.Add("tblTest") 
[void]$ds.Tables["tblTest"].Columns.Add("Name",[string]) 
[void]$ds.Tables["tblTest"].Columns.Add("Path",[string]) 

dir | foreach { 
    $dr = $ds.Tables["tblTest"].NewRow() 
    $dr["Name"] = $_.name 
    $dr["Path"] = $_.fullname 
    $ds.Tables["tblTest"].Rows.Add($dr) 
} 


$ds.Tables["tblTest"] 

$ds.Tables["tblTest"] 당신처럼 조작 할 수있는 객체입니다 -

재 작성 (및 컴파일에 대한 편집) 여기

foreach ($Row in $ds.Tables[1].Rows) 
{ 
    write-host "value is : $($Row[0])" 
} 
2

파서가 문자열을 연결하는 데 문제가 있습니다. 이 시도 :

write-host 'value is : '$i' '$($ds.Tables[1].Rows[$i][0]) 

편집 :을 또한 명확 수 있습니다 따옴표를 사용하여 당신이 인용 된 문자열 내에서 식을 포함 할 수 있기 때문에 :

write-host "value is : $i $($ds.Tables[1].Rows[$i][0])" 
+0

zdan - 닫기,하지만 두 번 사용해야합니다. 문자열 전체를 따옴표로 묶습니다 (작은 따옴표는 평가를 허용하지 않습니다). 문자열에 추가 인용 부호 나 역 따옴표가 필요하지 않습니다. –

+0

평가는 작은 따옴표 바깥에서 수행되며 큰 따옴표로 묶는 것과 동일한 인용 문자열로 연결됩니다. 나는 그것이 더 명확 할 것이라는 데 동의하지만, 나는 그의 원래 질문과 일치하기를 원했다. – zdan

15

는 실제적인 예 (현재 위치에서 데이터 집합을 구축)입니다 다른 Powershell 개체 :

$ds.Tables["tblTest"] | foreach { 
    write-host 'Name value is : $_.name 
    write-host 'Path value is : $_.path 
} 
관련 문제