PowerShell 追加CSV数据 2


向一个CSV文件中追加新的数据,有一个前提,就是要能确保你准备追加的数据的类型和已经保存到数据类型相一致。

创建一个正在运行的进程的列表,并保证进程名的唯一性。

$filepath = "$env:temp\processes.csv"

Get-Process |
Select-Object Name, Company, Description -Unique |
Export-Csv $filepath -UseCulture -NoTypeInformation -Encoding UTF8

让我们假设你是想追加新的进程信息至文件中。那么不论什么时候运行该脚本,都必须检查CSV文件中,是否已经包含了改进程。如果有跳过,否则追加。

$filepath = "$env:temp\processes.csv"

# 读取旧的进程名称
$oldproc = Import-CSV $filepath -UseCulture | Select-Object -expand Name

# 获取不包含在旧进程名中的新进程:

$newproc = Get-Process | Where-Object { $oldproc -notcontains $_.Name } |
  # 确保选择的进程信息和保存在文件中的原有进程信息一致
  Select-Object Name, Company, Description |

  # 输出新进程信息:
  ForEach-Object {
    Write-Warning "发现新的进程 $($_.Name)"
    $_

  } |

  # 将新增的进程信息转换成CSV文件.
  ConvertTo-CSV -UseCulture

# 向CSV文件添加新的进程信息. 一定要确保使用相同的分隔符:
$newproc[2..$($newproc.Count-1)] | Out-File -Append $filepath -Encoding UTF8

# 打开新的CSV文件:
notepad $filepath

原文链接:http://powershell.com/cs/blogs/tips/archive/2012/09/11/appending-csv-data-with-powershell.aspx

本文链接: https://www.pstips.net/powershell-append-new-data-into-csv.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 条评论 “PowerShell 追加CSV数据

  • Jet

    HI,你好,我对powershell不是很熟悉,目前有个管理系统,利用 WinRM通过powershell进行两台服务器之间的数据获取,数据是以ConvertTo-Csv 命令获取到的,前端环境是JAVA,目前获取数据没有任何问题,但是获取到的数据贴在网页系统上,中文会变成乱码,求解这是怎么回事,如何解决?编码参数-Encoding UTF8 在ConvertTo-Csv cmdlet这里不起作用,还望指点,谢谢了!
    源码如下:
    Write-Host “`n”
    Write-Host “pool_id`t|displayName`t|enabled`t|composerDomain`t|deliveryModel`t|provisionEnabled`t|minprovisioneddesktops`t|headroomCount`t|maximumCount`t|minimumCount`t|protocol`t|datastoreDisplayPaths`t|resourcePoolDisplayPath`t|vmFolderDisplayPath`t|parentVMPath`t|parentVMSnapshotPath`n”
    Invoke-Command -Session $psSession -ScriptBlock {
    Get-Pool|select pool_id,displayName,enabled,composerDomain,deliveryModel,provisionEnabled,minprovisioneddesktops,headroomCount,maximumCount,minimumCount,protocol,datastoreDisplayPaths,resourcePoolDisplayPath,vmFolderDisplayPath,parentVMPath, parentVMSnapshotPath;

    } | select * -Exclude RunspaceID,PSComputerName,PSShowComputerName | ConvertTo-Csv -NoTypeInformation | select -Skip 1
    Write-Host “`n”

    by Jet