Как я могу изменить свой вывод с информации об аренде DHCP на ScopeId «Name»

Вот как выглядит мой вывод: это просто информация об аренде, где указано имя хоста:

      IPAddress       ScopeId         ClientId           HostName       AddressState         
---------       -------         --------          --------        ------------  
10.10.10.10   99.99.99.99     11-11-11-11-11-11    AL10              Active               

Используя этот сценарий PowerShell:

      $hostname = "AL10"
$locationArray = @()
  foreach ($Server in $DHServers){
        
        $scope = Get-DHCPServerv4scope -ComputerName $Server.dnsname  | Get-DHCPServerv4Lease -ComputerName $Server.dnsname | Where-Object HostName -like "$hostName*"
        
        $locationArray += $scope
}
 
$locationArray

Я бы хотел просто вывести:

      ScopeID Name               
---------        
Name 

Цель: предоставить .txt с именами хостов, найти соответствующие аренды DHCP-сервера, а затем вывести «имя» ScopeID, как при использовании Get-DHCPServerv4scope -ComputerName $Server.dnsname | Select-Object "name"

1 ответ

Решение

Я использовал хеш-таблицу.

      $hashtable = @{} #create hash table

$i=0
foreach ($Server in $DHServers){
    $scopes = Get-DHCPServerv4Scope -ComputerName $Server.dnsname #get all scopes
    foreach ($hostname in (Import-Csv C:\script\Asset_List.csv | Select-Object -ExpandProperty asset)){ #get hostnames from list
        foreach ($scope in $scopes) {
            
            if($scope | Get-DhcpServerV4Lease -ComputerName $server.dnsname | Where-Object HostName -like "$hostName*" ) { #compares the hostname to find which lease it is in
                try{
                $hashtable.add($hostname, $scope.name)# add keys, values to table
                }
                
                catch {
                    $ErrorMessage = $_.Exception.Message
                    if ($ErrorMessage  -like '*Key in dictionary Already*') {
                         write-host 'Network issues could be causing process to take longer than normal' -ForegroundColor Green
                    }
                }
           
            } 
        }
    }
}

Затем я позвонил в свой PSCustomObject

      [PSCustomObject]@{ #Rename varibles in data pull for output file
    Asset = $hostname
    Model = $System.Model
    SerialNumber = $BIOS.SerialNumber
    Location = $hashtable[$hostname]
    LastUser = $User
    MacAddress = $mac
    IpAddress = $IpV
    Status = "Online"
    }
}   
Другие вопросы по тегам