我正在尝试创建一个脚本来接收计算机列表,并且我需要为每台计算机创建一个进程,在运行该进程之后,我有许多变量需要附加到一个对象
如何将返回的 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
最佳答案
您最好在 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()
block :
param([string[]]$Machines)
现在,如果您将脚本保存为“KimosReporter.ps1”,您可以像这样在任何计算机上运行它:
PS C:\>.\KimosReporter.ps1 -Machines "pc1","pc6","pc9"
关于powershell - 从 foreach powershell 的返回变量创建一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483714/