PowerShell单行命令:将Invoke-WebRequest结果写入带时间戳日志(任务计划程序)
解决PowerShell保存带日期时间日志文件的路径格式错误问题
问题根源
你报错的直接原因是Windows文件名不允许包含冒号(:),你用的时间格式yyyy-MM-dd HH:mm里的小时和分钟之间的冒号是非法字符,导致路径格式不被系统支持。
修正方案
1. 替换时间格式中的非法字符
把时间格式里的冒号换成Windows文件名支持的字符,比如横杠(-)或者点(.),推荐用横杠:
powershell.exe -Command "Invoke-WebRequest http://google.com -OutFile C:\Users\user_gc$(Get-Date -Format 'yyyy-MM-dd HH-mm').txt"
如果想用点分隔时间:
powershell.exe -Command "Invoke-WebRequest http://google.com -OutFile C:\Users\user_gc$(Get-Date -Format 'yyyy-MM-dd HH.mm').txt"
2. 任务计划程序中的引号兼容(可选)
如果任务计划程序解析双引号时出现异常,可改用单引号包裹整个命令,内部的单引号需要用两个单引号''转义:
powershell.exe -Command 'Invoke-WebRequest http://google.com -OutFile "C:\Users\user_gc$(Get-Date -Format ''yyyy-MM-dd HH-mm'').txt"'
3. 优化运行参数
故障排查任务通常不需要保留PowerShell窗口,建议去掉-noexit参数,避免任务执行后窗口一直停留。
补充说明
Windows文件名禁止使用的字符包括::、/、\、*、?、"、<、>、|,生成动态文件名时要避开这些字符。
内容的提问来源于stack exchange,提问作者ffuentes
相关产品推荐
相关产品推荐

