【发布时间】:2021-03-28 11:53:14
【问题描述】:
我正在编写一个脚本来收集 netstat 信息并存储在 sql server 表中。 为此,我使用以下命令来收集 netstats。
$data = Invoke-Command -Computername LocalPC -ScriptBlock {netstat -ano}
$data| ConvertTo-Csv -NoTypeInformation -Delimiter "," | Select-Object -Skip 1 | % {$_ -replace '"', ""}
但是,我得到的结果如下。
LocalPC,def60bb5-4a27-4d6c-ac13-a08ef0f9b7da,True,76 LocalPC,def60bb5-4a27-4d6c-ac13-a08ef0f9b7da,True,76 LocalPC,def60bb5-4a27-4d6c-ac13-a08ef0f9b7da,True,76 LocalPC,def60bb5-4a27-4d6c-ac13-a08ef0f9b7da,True,76 LocalPC,def60bb5-4a27-4d6c-ac13-a08ef0f9b7da,True,76
我想得到如下结果。
LocalPC,TCP,0.0.0.0:22,0.0.0.0:0,LISTENING,3080 本地PC,TCP,0.0.0.0:135,0.0.0.0:0,LISTENING,976 LocalPC,TCP,0.0.0.0:445,0.0.0.0:0,LISTENING,4
【问题讨论】:
-
"Get-NetTCPConnection -State Listen" 是不是相当于"netstat -ano"?
-
Get-NetTCPConnection 有很多类似的参数,但最大的不同在于它是一个本地 PowerShell cmdlet,它输出对象而不是文本流。
-
但是如果你真的想使用外部的 NetStat 命令,看看Is there a way to convert tables of text into a PowerShell Object。例如
NetStat -ano | Select -Skip 2 |ConvertFrom-SourceTable
标签: powershell csv powershell-4.0 netstat