Как развернуть массив PowerShell при передаче его функции

Не используйте некоторые из приведенных выше ответов.

Некоторые предлагают использовать вложенный SELECT, не делайте этого, это мучительно медленно. Если у вас есть много записей для обновления, используйте join, поэтому что-то вроде:

update (select bonus 
        from employee_bonus b 
        inner join employees e on b.employee_id = e.employee_id 
        where e.bonus_eligible = 'N') t
set t.bonus = 0;

См. Эту ссылку для получения более подробной информации. http://geekswithblogs.net/WillSmith/archive/2008/06/18/oracle-update-with-join-again.aspx .

Кроме того, убедитесь, что есть первичные ключи на всех таблицах, к которым вы присоединяетесь.

7
задан Charlie 16 January 2009 в 09:19
поделиться

3 ответа

Нет хорошего решения этой проблемы в PowerSHell V1. В V2 мы добавили splatting (хотя по различным причинам, мы используем вместо * с этой целью). Вот то, на что это похоже:

пз (МКС STA) (2)> функциональное нечто ($x, $y, $z) {"x: $x y: $y z: $z"}

пз (МКС STA) (3)> $a = 1,2,3

пз (МКС STA) (4)> $a нечто # передал как единственный аргумент

x:1 2 3 года: z:

пз (МКС STA) (5)> нечто @a # splatted

x:1 y:2 z:3

11
ответ дан 6 December 2019 в 23:14
поделиться

Ну, может быть лучший путь, но видеть, работает ли это:

inner --flag [string]::Join(" ", $args)
0
ответ дан 6 December 2019 в 23:14
поделиться

Основываясь на идее @EBGreen и связанном вопросе, который я заметил на боковой панели, возможное решение - это:

function outer
{
    invoke-expression "inner --flag $($args -join ' ')"
}

Примечание: Этот пример использует Powershell 2.0 CTP's, новый -join оператор.

Однако я все еще хотел бы найти лучший метод, так как это чувствует себя подобно взлому и ужасно мудрый безопасностью.

0
ответ дан 6 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

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