문제

나는 각 행의 값을 DataSet :

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] 

열에서 실제 값을 얻으려면 어떻게해야합니까?

도움이 되었습니까?

해결책

PowerShell 스트링 평가는 데이터 세트에서 tostring ()을 호출합니다. 속성 (또는 메소드 호출)을 평가하려면 표현식을 둘러싸고 평가를 강제해야합니다. $()

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

또한 foreach 길이를 알아낼 필요없이 컬렉션이나 배열을 통해 반복 할 수 있습니다.

다시 작성 (및 Compile 용 편집) -

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

다른 팁

실용적인 예는 다음과 같습니다 (현재 위치에서 데이터 세트 구축) :

$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"] 다른 PowerShell 객체와 마찬가지로 조작 할 수있는 객체입니다.

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

파서는 문자열을 연결하는 데 어려움을 겪고 있습니다. 이 시도:

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

편집하다: 인용 된 문자열 내에 표현식을 포함시킬 수 있으므로 이중 인용문을 사용하면 더 명확 할 수 있습니다.

write-host "value is : $i $($ds.Tables[1].Rows[$i][0])"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top