一位前同事给了我这两个 PowerShell 脚本来运行、记录和监控连续 ping 测试:
运行并记录:
ping.exe -l 1500 -t W2K16svr|Foreach{"{0} - {1}" -f (Get-Date),$_} | out-file C:\Temp\PingTest.txt -Encoding UTF8
监控(在另一个PS实例中):
Get-content C:\Temp\PingTest.txt -tail 10 -wait
这很好用,但我需要检查使用笔记本电脑的用户经常需要切换到 WiFi,因此我需要输出来记录连接类型(以太网或 Wifi),以便我可以排除后者。
我发现我可以用这个来获取连接类型:
get-netconnectionprofile | select -ExpandProperty InterfaceAlias
…但我无法弄清楚如何将其附加到 ping 输出中。到目前为止我尝试过的所有方法都出错了。
是否可以做我想做的事,如果可以,如何做?
您可以将信息包含在您已经通过
-f
(格式运算符:)合成的字符串中
"{0} - {1} - {2}" -f (Get-Date), $_, [string] (Get-NetConnectionProfile).InterfaceAlias
注:
[string]
强制转换确保即使碰巧有多个连接配置文件,也仅返回一个单个字符串,利用PowerShell对数组进行字符串化的方式,即通过空格连接它们的(字符串化)元素(例如,[string] @('foo', 'bar')
变为 'foo bar'
)。
不是通过管道传输到
Select-Object -ExpandProperty
,而是通过Get-NetConnectionProfile
中的外壳对(...)
的输出执行直接属性访问。这更加简洁和高效,甚至可以与多个输出对象一起使用,这得益于PowerShell的成员访问枚举。