Powershell 将 NetTCPConnection 或 netstat 转换为字符串

Powershell Convert NetTCPConnection or netstat To String

您好,在此先感谢任何可以提供帮助的人。

我正在尝试编写一个 powershell 脚本,该脚本获取包含特定关键字的服务器的所有连接列表,并将 DNS 名称和相应的 IP 输出到 csv 文件。

我 运行 遇到一些打字问题。这是我尝试使用 NetTCPConnection 的代码:

# get remote addrs
$a = (Get-NetTCPConnection | Select-Object RemoteAddress)

# get IPs of valid addrs
Workflow Get-DNSNames([string[]]$IPAddresses){
    foreach -parallel ($IP in $IPAddresses | Select-Object -Unique){
        # $IP.ToString()
        [system.net.dns]::GetHostEntry($IP)).hostname
        try{
            @{$IP = $(([system.net.dns]::GetHostEntry($IP)).hostname)}
        }catch{
            @{$IP = "N/A"}
        }
    }
}

# output to txt
$List = Get-DNSNames -IPAddresses $a
$List | Out-File "C:\temp\getBAS\IPAddresses_Complete.txt"

这是我对 netstat 的尝试:

# get netstat output
$a = netstat

$b = $a[3..$a.count] | ConvertFrom-string | Select p4 | Where p4 -like "*52*"

# get IP and create name, IP pairs
$c = @()
foreach ($DNS in $b) {
    # name , IP
    $rowToAdd = New-Object psobject
    $name = $DNS
    $IP = [System.Net.Dns]::GetHostAddresses($DNS.ToString())
    $rowToAdd | Add-Member -Member NoteProperty -Name "Name" -value $name
    $rowToAdd | Add-Member -Member NoteProperty -Name "IP" -value $IP
    $c += $rowToAdd
}
$c

# output to csv
$final | Export-Csv -Path "C:\temp\getBAS\NetworkConnectionsBAS.csv" -NoTypeInformation

第一次尝试的问题是来自 NetTCPConnection 的值是对象,而不是字符串,而 GetHost 函数中需要字符串。我想不出将每个单独的地址对象转换为字符串的方法。

我第二次尝试的问题是我得到了一个古怪的 csv 输出。

坦率地说,我被困住了,希望得到任何帮助。谢谢

$a = (Get-NetTCPConnection | Select-Object RemoteAddress)

这使 $a 成为一个包含 RemoteAddress 属性 的对象,您没有将它转换为我能看到的任何地方的字符串。

您可以将此行更改为

$a = (Get-NetTCPConnection | Select-Object -ExpandProperty RemoteAddress)

获取包含 RemoteAddress 值的字符串

或更改

$List = Get-DNSNames -IPAddresses $a

$List = Get-DNSNames -IPAddresses "$($a.RemoteAddress)"

这将只从 属性 中提取值,然后将其视为字符串。