powershell - 如何通过 Powershell 脚本隐藏/删除输出 csv 中的标头
问题描述
我正在使用 Psping 检查带有端口的 IP 延迟并导出结果 CSV 而不显示标题。
我试过 -select skip 1 它似乎不起作用但有错误。
function CheckLatency
{
param([string[]]$servers)
foreach ($server in $servers)
{
$times = [ordered]@{ Server = "$server";TimeStamp = (Get-Date -f "yyyy-MM-dd hh:mm:ss"); Minimum = 0; Maximum = 0; Average = 0; }
$results = & "c:\users\test\desktop\psping.exe" -n 1 $server 2>&1 | select-string "Minimum"
if ($results) {
$results = $results.tostring() -split ","
foreach ($result in $results)
{
$result = ($result -replace "ms","").trim()
$parsed = $result -split " "
switch ($parsed[0])
{
"Minimum" {$times.Minimum = $parsed[2]}
"Maximum" {$times.Maximum = $parsed[2]}
"Average" {$times.Average = $parsed[2]}
}
}
new-object -type PSObject -prop $times
}
}
}
$csvFile = "C:\users\test\desktop\check$(get-date -f yyyy-MM-dd-hhmmss).csv"
CheckLatency 8.8.8.8:443,8.8.8.8:80 | Export-CSV -LiteralPath $csvFile -NoTypeInformation
带标题的输出
解决方案
Export-Csv
总是包含一个标题行(输出对象的属性名称列表)。
您唯一的选择是在事后使用纯文本处理删除该行:
$csvFile = "C:\users\test\desktop\check$(get-date -f yyyy-MM-dd-hhmmss).csv"
# ... your code that calls
# Export-CSV -LiteralPath $csvFile -NoTypeInformation
# Read the resulting file as an array of lines, skip the 1st line,
# and write the result back to the file.
(Get-Content -LiteralPath $csvFile) | Select-Object -Skip 1 | Set-Content -LiteralPath $csvFile
注意调用(...)
周围Get-Content
,它确保文件在其行通过管道发送之前被完整读取,从而允许在同一管道中重写输入文件。
请注意,如果写入过程被中断,文件损坏的可能性很小。
请注意,Windows PowerShell 默认使用 ANSI 编码Set-Content
,而Export-Csv
使用 ASCII;-Encoding
根据需要使用。幸运的是, PowerShell Core始终默认为无 BOM 的 UTF-8。
推荐阅读
- devstack - 使用终端创建图像时,Devstack 中的 auth 插件密码缺少值 auth-url
- html - 为查看、编辑和删除按钮创建关系,并在 laravel 应用程序中显示相应货件的特定视图/页面
- python - 张量流 2+。使用替代激活函数和 custom_gradient
- http - 具有多个套接字连接的 HTTP2 和 TLS
- powershell - Powershell 执行 Test-NetConnection 异常处理?
- pdf - Aspose.Word 转换为 PDF 时断字错误
- emacs - 使用 .dir-locals.el 为特定文件设置模式
- awk - 计算两列之间不匹配的行数,同时以成对方式遍历所有列 awk
- google-cloud-storage - 我想删除我的存储桶/项目中的一个对象,但是当我尝试它失败时。我也没有移动或重命名对象的选项
- c++ - C++ makefile:如何将 *.o 文件提取到特定文件夹?