2 votes

Obtenir le nom d'hôte pour chaque adresse IP distante dans le nouveau membre.

J'ai un script PowerShell, qui a quelques variables

  1. $GetCon : Obtenir une connexion Tcp en Powershell
  2. $hn : Obtenir une adresse distante étendue dans $GetCon .
  3. $rrt : est un nombre de tous les résultats, c'est toutes les IP de connexion.
  4. $GNamess : est une variable permettant de créer un nouveau membre par son nom ( urls ) pour $GetCon qui est une connexion Get-NetTCPC.

Enfin J'ai un nouveau membre, il contiendra la liste des noms d'hôtes de chaque connexion pour chaque adresse IP dans Get-TCPConnection RemoteAddress.

しかし nous ne faisons pas revivre le résultat des hôtes dans le résultat, dans le résultat j'ai un hôte pour chaque hôte.

s'il vous plaît, trouvez-moi une méthode pour obtenir tous les hôtes dans le résultat.

Mauvaise syntaxe :

$GetCon = Get-NetTCPConnection

$hn = $GetCon | select -expand RemoteAddress

$rrt = foreach ($IPs in $hn)
{

 [System.Net.Dns]::GetHostAddresses($IPs) | select-object IPAddressToString -expandproperty  IPAddressToString

}

$GNamess = foreach ($IPst in $GetCon) {

    $rrt = ([System.Net.Dns]::GetHostbyAddress($IPs) | select-object HostName -expandproperty  HostName)
    $IPst | Add-Member -NotePropertyName urls -NotePropertyValue $rrt -PassThru
}

$GetCon | select urls

Résultat d'image : Résultat de l'image

1voto

JosefZ Points 11907

Trop long pour un commentaire et difficile de deviner votre objectif à partir de votre code, donc peut-être créer un dictionnaire de remplissage. $IPsNames pourrait aider ?

$IPsNames = @{}

$GetCon = Get-NetTCPConnection

$hn = $GetCon | select -expand RemoteAddress  | sort -Unique

foreach ( $IPs in $hn ) {

    try   { $rrtx = [System.Net.Dns]::GetHostbyAddress($IPs).HostName }
    catch { $rrtx = '???' }

    $IPsNames[ $IPS ] = $rrtx
}

### $IPsNames

for ( $i = 0; $i -lt $GetCon.Count; $i++ ) {

    $aux = $IPsNames[ $GetCon[$i].RemoteAddress ]
    $GetCon[$i] | Add-Member -NotePropertyName urls -NotePropertyValue $aux 

}

### $GetCon | Format-Table -Property RemoteAddress, urls -AutoSize

$GetCon | selelect -Property RemoteAddress, urls

-2voto

<# Report = LocalAddress,LocalPort,RemoteAddress,FQDN,RemotePort,PID,ProcessName,UserName,State,CreationTime #>

$obj=@()

Foreach($p In (Get-Process -IncludeUserName | where {$_.UserName} | `
 select Id, ProcessName, UserName)) {
 $properties = @{ 'PID'=$p.Id;
 'ProcessName'=$p.ProcessName;
 'UserName'=$p.UserName;
 }
 $psobj = New-Object -TypeName psobject -Property $properties
 $obj+=$psobj
 }

$Connections = Get-NetTCPConnection | where {$_.State -ne "Listen" -and $_.State -ne "Bound"} | select `
 LocalAddress, `
 LocalPort, `
 RemoteAddress, `
 @{name='FQDN';expression={ (Resolve-DnsName -name $_.Remoteaddress).NameHost}},`
 RemotePort, `
 @{n="PID";e={$_.OwningProcess}}, @{n="ProcessName";e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty ProcessName)}}, `
 @{n="UserName";e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty UserName)}}, `
 "State","CreationTime"|
 sort -Property ProcessName, UserName

 $Report += $Connections
$Connections=@()
 $Reported = $Report | Sort-Object -Property * -Unique
 $Report = $Reported

$Report |Export-Csv -Path C:\PATH\Connections.csv

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X