簡體   English   中英

Powershell:如何動態構建數組或對象?

[英]Powershell: How to dynamically build array or objects?

我想收集有關域中主機的一些信息,因此我嘗試編寫如下內容:

# 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 是您要與對象關聯的屬性。

聽起來它正在傳遞一個引用,但我認為它不是作為引用傳遞的對象,而是屬性值。 有離散對象,但它們的屬性值都有相同的引用,因此它們看起來都一樣。 如果是這樣的話

$server_obj | Add-Member –MemberType NoteProperty –Name Domain –Value "$($sys.Domain)"

應該使值成為字符串,這是一種值類型並且不會改變。

你讓這變得比它應該的要難一些。 從查詢、csv 或列表中傳遞服務器名稱,然后遍歷它們。 從結果中選擇你想要的。

$info = "server1", "server2" | ForEach-Object{Get-WmiObject  -Class win32_computersystem -ComputerName $_ } | Select-Object Domain, Name, Systemtype

$info[1].Domain will output domain.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM