如何在powershell中返回一个对象

时间:2018-03-07 15:27:55

标签: powershell

我正在尝试创建一个返回各种表单对象的函数。例如标签。但是我无法实现同样的目标。

我的代码如下所示:

function add_label([String]$label_text, [Int]$label_location_x, [Int]$label_location_y, [Int]$lable_size) {
    $label              = New-Object System.Windows.Forms.Label
    $label.AutoSize     = $true
    $label.Location     = New-Object System.Drawing.Point($label_location_x,$label_location_y)
    $label.Size         = New-Object System.Drawing.Size($lable_size,20)
    $label.Text         = $label_text

    $label
}
$label_product = add_label("Product: ", $label_product_location, 20, $LableSize)
$GroupBoxSetting.Controls.Add($label_product)

它不会抛出任何错误,但不会显示标签。相反" product: 30 20 50"显示在GUI而不是$groupBoxSetting文本。

我想知道,有没有办法创建一个返回Forms对象的函数,这样我们就不必为每个Forms对象一次又一次地编写相同的代码块。

1 个答案:

答案 0 :(得分:1)

您正在调用您的函数,powershell不会使用参数周围的括号。

这样做会导致括号内的所有内容作为单个对象发送到第一个参数。

您可以使用命名参数,这很容易分辨传递给哪个参数:

add_label -label_text "Product: " -label_location_x $label_product_location -label_location_y 20 -lable_size $LableSize

或者位置参数,如果你不知道函数参数那么可以输入更少但更难理解:

add_label "Product: " $label_product_location 20 $LableSize

有关详细信息,请参阅about_parameters