如何在PowerShell脚本的URL中动态添加Unix时间戳并定时运行
动态添加Unix时间戳的PowerShell脚本改造及任务计划配置
一、脚本改造实现动态Unix时间戳
要在URL的&from_date参数后自动带入当前时间的Unix时间戳,只需完成时间戳计算和URL动态拼接两步操作,以下是改造后的完整脚本:
# 强制使用TLS 1.2协议,避免SSL/TLS握手失败 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # 计算当前UTC时间对应的Unix时间戳(取整到秒,符合Unix时间标准) $unixTimestamp = [Math]::Floor((Get-Date).ToUniversalTime() - (Get-Date "1970-01-01")).TotalSeconds # 拼接带有动态时间戳的目标URL $targetUri = "https://xxxxx&from_date=$unixTimestamp" # 生成带时间戳的输出文件名(改用24小时制格式,避免同日文件名重复) $outputPath = "C:\IMPORT\xxx_$(Get-Date -Format yyyy_MM_dd_HH_mm_ss).xml" # 执行XML下载 Invoke-WebRequest -Uri $targetUri -OutFile $outputPath
关键细节说明
- Unix时间戳计算:Unix时间以1970-01-01 UTC为起点,因此用
ToUniversalTime()确保时间基准正确,Math.Floor用于去除小数部分,保证输出整数秒数。 - URL动态拼接:通过变量
$unixTimestamp替换原脚本中固定的时间戳值,实现每次运行时自动带入当前时间的Unix秒数。 - 文件名优化:将原脚本中的
hh(12小时制)改为HH(24小时制),避免同一日期内上午/下午生成重复文件名。
二、Windows任务计划程序运行配置
要让脚本自动定时运行,按以下步骤配置任务计划:
- 创建任务:打开「任务计划程序」,点击「创建任务」,设置任务名称和描述。
- 设置触发器:切换到「触发器」标签,点击「新建」,配置脚本的运行频率(如每日、每小时)和具体执行时间。
- 配置操作:切换到「操作」标签,点击「新建」:
- 程序/脚本:填入
powershell.exe - 添加参数:填入
-ExecutionPolicy Bypass -File "C:\你的脚本存放路径\脚本名.ps1"(替换为实际脚本路径)
- 程序/脚本:填入
- 权限配置:在「常规」标签中,选择拥有
C:\IMPORT目录读写权限的账户运行任务,避免因权限不足导致下载失败。 - 验证运行:创建完成后,右键任务选择「运行」,检查
C:\IMPORT目录是否生成目标XML文件,确认脚本执行正常。
内容的提问来源于stack exchange,提问作者Martin Jašek
相关产品推荐
相关产品推荐

