0

这是我的输出的样子,它只是主机名所在的租约信息:

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 Server租约,然后像使用时一样输出ScopeID的“名称”Get-DHCPServerv4scope -ComputerName $Server.dnsname | Select-Object "name"

4

1 回答 1

0

我使用了一个哈希表。

$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"
    }
}   
于 2021-04-14T11:11:34.243 回答