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

PowerShell脚本优化需求:ServiceNow文件导入后移至已处理文件夹

PowerShell脚本优化:自动导入ServiceNow文件并归档

需求说明

  • 每10分钟有新文件存入C:\Amit文件夹
  • 文件处理完成后需移至C:\Amit\Processed归档
  • 文件名含动态日期时间(无固定名称),需自动选取最新文件导入

优化后的完整脚本

# 核心配置参数
$watchFolder = "C:\Amit"
$processedFolder = "C:\Amit\Processed"
$serviceNowInstance = "instance.service-now.com"
$tableName = "sys_data_source"
$tableSysId = "176ada0f1ba89950f03fa861f54bcbe6"

# 确保归档目录存在,不存在则自动创建
if (-not (Test-Path -Path $processedFolder)) {
    New-Item -ItemType Directory -Path $processedFolder | Out-Null
}

# 持续循环处理逻辑
while ($true) {
    # 获取目录中最新的未处理CSV文件(按最后写入时间倒序,取第一个)
    $latestFile = Get-ChildItem -Path $watchFolder -Filter "*.csv" | Sort-Object LastWriteTime -Descending | Select-Object -First 1

    if ($latestFile) {
        try {
            # 动态构建ServiceNow API请求URI
            $uri = "https://$serviceNowInstance/api/now/attachment/file?table_name=$tableName&table_sys_id=$tableSysId&file_name=$($latestFile.Name)"

            # 配置请求头(替换为实际的ServiceNow账号凭证)
            $authToken = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes('your_username:your_password'))
            $headers = @{
                "Authorization" = "Basic $authToken"
                "Content-Type"  = "text/csv"
            }

            # 读取文件内容并发送POST请求到ServiceNow
            $fileContent = Get-Content -Path $latestFile.FullName -Raw
            Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $fileContent

            # 处理成功后移动文件至归档目录
            Move-Item -Path $latestFile.FullName -Destination $processedFolder -Force
            Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') 成功处理并归档文件: $($latestFile.Name)"
        }
        catch {
            Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') 处理文件 $($latestFile.Name) 失败: $_"
        }
    }
    else {
        Write-Host "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') 未发现待处理的CSV文件"
    }

    # 等待10分钟(600秒)后再次检查新文件
    Start-Sleep -Seconds 600
}

关键功能说明

  • 动态文件识别:通过LastWriteTime排序筛选最新文件,无需依赖固定文件名
  • 自动归档机制:仅在文件成功导入ServiceNow后,才将其移至Processed目录,避免丢失未处理文件
  • 持续监控:通过while($true)循环+Start-Sleep实现每10分钟自动检查新文件
  • 错误处理:捕获请求异常并输出日志,方便排查问题

使用注意事项

  • 必须替换脚本中的your_username:your_password为实际的ServiceNow账号凭据
  • 若需处理非CSV格式文件,修改-Filter参数(例如"*.xlsx")
  • 可根据业务需求调整检查间隔时间(修改Start-Sleep的秒数)

内容的提问来源于stack exchange,提问作者Amit Thakur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:10:49