PowerShell脚本在ISE与任务计划程序中相对路径差异原因咨询
为什么PowerShell脚本在ISE和任务计划程序中相对路径表现不同?
这是因为PowerShell解析相对路径时,依赖当前工作目录(Current Working Directory),而两种运行环境的默认工作目录并不一致:
- 在ISE中手动运行脚本时,默认工作目录就是脚本所在的文件夹,所以
.\DriveURL.txt能精准定位到同目录下的文件。 - 任务计划程序默认以系统进程的启动路径作为工作目录,也就是
C:\Windows\System32,所以脚本会去这个目录查找DriveURL.txt,自然找不到目标文件。
更灵活的路径处理方案
不用硬编码完整路径,推荐用PowerShell的自动变量动态获取脚本目录,适配所有运行环境:
- PowerShell 3.0及以上版本,直接使用
$PSScriptRoot变量:$scriptDir = $PSScriptRoot $publishedCSV = Get-Content (Join-Path $scriptDir "DriveURL.txt") -Raw - 如果是PowerShell 2.0及更早版本(不支持
$PSScriptRoot),可以通过$MyInvocation变量获取:$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition $publishedCSV = Get-Content (Join-Path $scriptDir "DriveURL.txt") -Raw
内容的提问来源于stack exchange,提问作者jetrel
相关产品推荐
相关产品推荐

