我想收集有关域中主机的一些信息,因此我尝试编写如下内容:
# declare array for storing final data
$servers_list = @()
#start with a list of servers and go through collecting the info
$servers | ForEach-Object {
$sys = Get-WmiObject Win32_computersystem -ComputerName $_
# create new custom object to store information
$server_obj = New-Object –TypeName PSObject
$server_obj | Add-Member –MemberType NoteProperty –Name Domain –Value $sys.Domain
# .... add all other relevant info in the same manner
# Add server object to the array
$servers_list += $server_obj
}
这段代码的问题是我将对对象的引用传递给数组,而不是实际对象。因此,当我的循环结束时,我最终得到一个数组,其中包含的行看起来都一样:(
任何想法如何将实际对象传递给数组,而不仅仅是对它的引用?另一个想法是动态声明新对象,而不是每次都使用$ server_obj变量,但是我也不知道如何执行此操作...
谢谢!!!
您可以构建一个对象数组,并不断向其中动态添加信息,如下所示:
#This will be your array of objects
#In which we will keep adding objects from each computer
$Result = @()
#start with a list of servers and go through collecting the info
$servers | ForEach-Object {
$sys = Get-WmiObject Win32_computersystem -ComputerName $_
# create new custom object to keep adding store information to it
$Result += New-Object –TypeName PSObject -Property @{Domain = $sys.Domain;
Name = $sys.Name;
SystemType = $sys.SystemType
}
}
# Get back the objects
$Result
其中Domain,Name和SystemType是要与对象关联的属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句