You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Powershell向Sharepoint、Onedrive或Dropbox的CSV文件追加单行数据

实现方案

完全可以通过PowerShell调用对应平台的开放API实现远程CSV文件追加写入,无需下载完整文件,以下是三个平台的具体实现方案:

一、SharePoint/OneDrive(微软企业生态优先推荐)

前置准备

  1. 在Azure AD注册应用,获取TenantID、ClientID、ClientSecret
  2. 为应用授予目标SharePoint站点/OneDrive的Files.ReadWrite.All(最小权限可仅授权目标文件)应用权限
  3. 记录目标CSV文件的DriveID和ItemID,可通过Graph API查询获取

示例代码

# 配置参数
$tenantId = "你的租户ID"
$clientId = "你的应用ID"
$clientSecret = "你的应用密钥"
$csvFileId = "目标CSV文件的ItemID"
$driveId = "目标文件所在Drive的ID"

# 获取访问令牌
$tokenUrl = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token"
$tokenBody = @{
    client_id     = $clientId
    scope         = "https://graph.microsoft.com/.default"
    client_secret = $clientSecret
    grant_type    = "client_credentials"
}
$tokenResponse = Invoke-RestMethod -Uri $tokenUrl -Method Post -Body $tokenBody
$headers = @{Authorization = "Bearer $($tokenResponse.access_token)"}

# 构造要追加的CSV行,需和表头列顺序完全一致
$newRecord = [PSCustomObject]@{
    门店ID   = "US-NY-001"
    访问时间 = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
    访客姓名 = "John Doe"
    备注     = "正常拜访"
}
# 转换为CSV格式行,去掉表头,添加换行符
$appendContent = ($newRecord | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1) + "`n"
# 编码为UTF-8避免乱码
$byteContent = [System.Text.Encoding]::UTF8.GetBytes($appendContent)

# 调用Graph API追加内容
$uploadUrl = "https://graph.microsoft.com/v1.0/drives/$driveId/items/$csvFileId/content"
Invoke-RestMethod -Uri $uploadUrl -Method Patch -Headers $headers -Body $byteContent -ContentType "text/csv"

二、Dropbox实现

前置准备

  1. 在Dropbox开发者平台创建应用,获取应用AccessToken
  2. 为应用授予files.content.write权限,设置可访问目标CSV文件的路径

示例代码

# 配置参数
$dropboxToken = "你的Dropbox应用AccessToken"
$targetCsvPath = "/门店访问数据/访问记录.csv"

# 构造追加的CSV行
$newRecord = [PSCustomObject]@{
    门店ID   = "UK-LN-003"
    访问时间 = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss")
    访客姓名 = "Tom Smith"
    备注     = "设备巡检"
}
$appendContent = ($newRecord | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1) + "`n"
$byteContent = [System.Text.Encoding]::UTF8.GetBytes($appendContent)

# 调用Dropbox上传API,使用append模式追加内容
$headers = @{
    Authorization = "Bearer $dropboxToken"
    "Dropbox-API-Arg" = (@{
        path = $targetCsvPath
        mode = "append"
        autorename = $false
    } | ConvertTo-Json)
}
Invoke-RestMethod -Uri "https://content.dropboxapi.com/2/files/upload" -Method Post -Headers $headers -Body $byteContent -ContentType "application/octet-stream"
通用注意事项
  • 所有门店客户端统一CSV编码为UTF-8、列顺序、换行符格式,避免写入后格式错乱
  • 首次写入空CSV文件时需先写入表头,可先查询文件大小,若为0则先写入表头内容再追加数据
  • 高并发场景下建议添加本地缓存机制,写入失败时先将数据存在本地临时文件,网络恢复后批量重试上传,避免数据丢失
  • 权限分配遵循最小原则,仅给应用分配目标文件的写入权限,不要授予全目录读写权限

内容的提问来源于stack exchange,提问作者Miha Žitko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:06:03