创建自定义Powershell对象的多个实例

时间:2010-05-18 13:42:29

标签: powershell object instance

我在Powershell脚本中创建一个新对象,或者实际上是一个对象类型。我想创建此对象的多个实例。我该怎么做呢?

下面的代码就是我正在处理的,似乎数组中的所有实例都引用相同的对象,包含相同的值。

# Define output object
$projectType = new-object System.Object
$projectType | add-member -membertype noteproperty -value "" -name Project
$projectType | add-member -membertype noteproperty -value "" -name Category
$projectType | add-member -membertype noteproperty -value "" -name Description

# Import data
$data = import-csv $input -erroraction stop

# Create a generic collection object
$projects = @()

# Parse data
foreach ($line in $data) {
    $project = $projectType

    $project.Project = $line.Id
    $project.Category = $line.Naam
    $project.Description = $line.Omschrijving
    $projects += $project
}

$projects | Export-Csv output.csv -NoTypeInformation -Force

1 个答案:

答案 0 :(得分:4)

您必须将New-Object用于任何对象,否则代码中的引用类型$projectType将引用相同的对象。这是更改后的代码:

# Define output object
function New-Project {
    New-Object PSObject -Property @{
        Project = ''
        Category = ''
        Description = ''
    }
}

# Parse data
$projects = @()
foreach ($line in 1..9) {
    $project = New-Project
    $project.Project = $line
    $project.Category = $line
    $project.Description = $line
    $projects += $project
}

# Continue
$projects

在这种特殊情况下,您可以将其身体移动到循环中,而不是使用函数New-Project$project = New-Object PSObject …。但是如果你在别处创建你的“项目”,那么拥有这个功能也会很有用。