从foreach powershell

时间:2015-11-02 17:46:24

标签: powershell object return-value

我正在尝试创建一个脚本来接收计算机列表以及我需要创建进程的每台计算机,在运行该进程后,我有许多需要附加到对象的变量

如何附加到对象,返回的PC信息?

#input variable that the foreach need to process
$Machines = "pc1,pc2,pc3,pc4,pc5,pc6,pc7,pc8,pc9,pc0"


#create empty object
$pcNull
$MachineNull
$usersNull    
$object= New-Object Object
$object | Add-Member NoteProperty propiedad $MachineNull
$object | Add-Member NoteProperty users $usersNull
$object | Add-Member NoteProperty computer $pcNull
$object | Add-Member NoteProperty error $false


foreach ($Machine in $Machines  )
{
 #where i make a process foreach computer and there are variables that are returned 
 {
 }
 ###############################
 #where i am trying to append to the created object the returned variables

 #append to propiedad property
 $object.propiedad = $object.propiedad = $MachineNull 
 $object
 #append to users property
 $object.users = $object.users = $false
 $object
 #append to computers property
 $object.computer = $object.computer = $Machine
 $object
}


$object

1 个答案:

答案 0 :(得分:3)

最好在foreach循环内创建多个对象,每台计算机一个。

# Loop through machines, assign all output to $Objects variable
$Objects = foreach ($Machine in $Machines)
{
    #where i make a process foreach computer and there are variables that are returned 
    {
    }
    ###############################
    #where i am trying to append to the created object the returned variables

    # Define the properties that the object should have in a hashtable
    $ObjectProperties = @{
        # Assuming you've assigned something to $Propriedad, $Users and $ErrorState above
        Propiedad = $Propriedad
        Users     = $Users
        Computer  = $Machine
        Error     = $ErrorState
    }

    # Now create an object. 
    # When we just drop it in the pipeline like this, it gets assigned to $Objects
    New-Object psobject -Property $ObjectProperties
}

现在,您可以使用ConvertTo-Html

从对象创建HTML
$Objects | ConvertTo-Html -As Table -Head "<title>Kimo's report</title>"

如果您想对其进行测试,则需要将$Machines更改为:

"pc1","pc2","pc3","pc4","pc5","pc6","pc7","pc8","pc9","pc0"

如果要将其另存为.ps1脚本文件并能够将计算机名称作为参数传递,请在顶部添加param()块:

param([string[]]$Machines)

现在,如果您将脚本保存为“KimosReporter.ps1”,则可以对任何计算机运行它:

PS C:\>.\KimosReporter.ps1 -Machines "pc1","pc6","pc9"