Как циклично выполниться через набор данных в powershell?

Это условно выполняет горячую клавишу на основе переменной:

#If ChatBox = 0
  1::z
#If

Это условно выполняет горячую клавишу на основе переменной и окна:

[ 111]

REF: https://autohotkey.com/docs/commands/_If.htm

25
задан SteveC 6 March 2013 в 13:04
поделиться

3 ответа

Оценка строки 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 позволяет выполнять итерацию по коллекции или массиву без необходимости чтобы вычислить длину.

Переписано (и отредактировано для компиляции) -

foreach ($Row in $ds.Tables[1].Rows)
{ 
  write-host "value is : $($Row[0])"
}
37
ответ дан 28 November 2019 в 20:36
поделиться

Here's a practical example (build a dataset from your current location):

$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"] is an object that you can manipulate just like any other Powershell object:

$ds.Tables["tblTest"] | foreach {
    write-host 'Name value is : $_.name
    write-host 'Path value is : $_.path
}
17
ответ дан 28 November 2019 в 20:36
поделиться

У парсера возникли проблемы с конкатенацией вашей строки. Попробуйте это:

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

Редактировать: Использование двойных кавычек также может быть более понятным, поскольку вы можете включить выражения в строку в кавычках:

write-host "value is : $i $($ds.Tables[1].Rows[$i][0])"
2
ответ дан 28 November 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: