Инициализатор коллекции Powershell 2.0

Как использовать инициализаторы коллекций C# 3.0 в Powershell 2.0? ( Как установить коллекцию inline?)

я пробовал

$table= New-Object System.Data.DataTable {
    TableName = "my table" ,
    Columns = {
        New-Object System.Data.DataColumn "col1",([string]) ,
        New-Object System.Data.DataColumn "col2",([long]) ,
        New-Object System.Data.DataColumn "col3",([datetime])
    }
}

но $table имеет 0 столбцов после этого бита кода.

Я уже знаю, как добавить столбцы в свойство Columns класса DataTable. Я хотел бы знать, как сделать прямую инициализацию коллекции.

2 ответа

Решение

Функция инициализации коллекции C# недоступна на языке сценариев PowerShell. PowerShell имеет функцию, близкую к функции инициализации объекта C#:

Add-Type -AssemblyName System.Windows.Forms
new-object system.drawing.point -property @{x = 1; y = 5}

В общем, вы обнаружите, что есть много возможностей C#, которых нет в PowerShell, включая отсутствие тернарного оператора (?:) или нулевого объединяющего оператора (??). Нет возможности реализовывать новые типы, тем более, типы, которые наследуются от другого типа. Вы также обнаружите, что PowerShell может делать то, что не нравится C#, предлагая опыт REPL, встроенный синтаксис для хеш-таблиц. @{}легкий анализ параметров командной строки с такими функциями, как именованные, позиционные и дополнительные параметры, а также поддержка параметров привязки из конвейерного ввода. Они оба имеют свои сильные стороны, а также вещи, которые нравятся и не нравятся.:-)

Если вы хотите, чтобы функция инициализации коллекции была реализована в будущей версии PowerShell, вы можете отправить свое предложение на сайт Microsoft Connect.

$table = New-Object system.Data.DataTable "my table"

$col1 = New-Object system.Data.DataColumn "col1",([string])
$col2 = New-Object system.Data.DataColumn "col2",([long]) 
$col3 = New-Object system.Data.DataColumn "col3",([datetime])

$table.columns.add($col1)
$table.columns.add($col2)
$table.columns.add($col3)
Другие вопросы по тегам