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

Powershell存储变量到文件方案咨询:用于设备催还邮件提醒脚本

存储方案推荐

不推荐使用纯文本或.ps1格式存储数据:纯文本无结构化标识,你需要自己写分割、解析逻辑,很容易出现格式兼容问题;.ps1是可执行脚本文件,存储动态业务数据不仅修改维护麻烦,还存在恶意代码注入的安全风险。优先选择CSV或JSON格式,两种都是结构化文本格式,Powershell原生支持读写,不需要额外依赖,计算时长、读取变量都非常方便。

方案1:CSV格式(适合表格型数据,可读性高,可直接用Excel编辑核对)

你可以按业务需要设计以下必填字段,示例CSV结构如下:

用户名,用户邮箱,首次提醒日期,直属经理邮箱,经理上级邮箱,设备编号,是否已归还
张三,zhangsan@corp.com,2024-05-01,lisi@corp.com,wangwu@corp.com,NB2023001,False
赵六,zhaoliu@corp.com,2024-05-20,sunqi@corp.com,zhouba@corp.com,NB2023123,False

Powershell读写示例:

# 读取所有提醒记录,直接生成结构化对象
$reminderRecords = Import-Csv -Path ".\设备回收提醒记录.csv" -Encoding UTF8

foreach ($record in $reminderRecords) {
    # 跳过已归还的用户
    if ($record.是否已归还 -eq "True") { continue }
    # 转换日期格式计算间隔时长
    $firstRemindDate = [DateTime]$record.首次提醒日期
    $daysPassed = (Get-Date).Subtract($firstRemindDate).TotalDays

    # 判断抄送范围
    $ccList = @()
    if ($daysPassed -ge 21) { # 满3周抄送直属经理
        $ccList += $record.直属经理邮箱
    }
    if ($daysPassed -ge 42) { # 满6周额外抄送经理上级
        $ccList += $record.经理上级邮箱
    }

    # 后续发送邮件的业务逻辑
}

新增/更新记录示例:

# 构造新的提醒记录
$newRecord = [PSCustomObject]@{
    用户名 = "钱九"
    用户邮箱 = "qianjiu@corp.com"
    首次提醒日期 = (Get-Date).ToString("yyyy-MM-dd")
    直属经理邮箱 = "zhengshi@corp.com"
    经理上级邮箱 = "sunyi@corp.com"
    设备编号 = "NB2024005"
    是否已归还 = "False"
}
# 追加到CSV文件
$newRecord | Export-Csv -Path ".\设备回收提醒记录.csv" -Encoding UTF8 -Append -NoTypeInformation

方案2:JSON格式(适合嵌套结构数据,后续扩展字段更灵活)

如果后续你需要存储历史提醒时间、设备明细这类嵌套内容,用JSON更合适,示例结构:

[
    {
        "用户名": "张三",
        "用户邮箱": "zhangsan@corp.com",
        "首次提醒日期": "2024-05-01",
        "直属经理邮箱": "lisi@corp.com",
        "经理上级邮箱": "wangwu@corp.com",
        "设备编号": "NB2023001",
        "是否已归还": false,
        "历史提醒记录": ["2024-05-01", "2024-05-08", "2024-05-15"]
    }
]

Powershell读写示例:

# 读取JSON记录
$reminderRecords = Get-Content -Path ".\设备回收提醒记录.json" -Encoding UTF8 | ConvertFrom-Json

# 写入修改后的记录
$reminderRecords | ConvertTo-Json | Out-File -Path ".\设备回收提醒记录.json" -Encoding UTF8

注意事项

  • 日期统一存储为yyyy-MM-dd标准格式,转换DateTime类型时不会出现区域兼容问题
  • 如果脚本配置为定时任务运行,需要给脚本运行账户开通存储文件的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:36:03