Powershell如何为变量存储的日志文件路径添加log子目录
解决方案
核心实现逻辑是拆分原脚本路径的目录、文件名两部分,将log子目录插入到目录层级中,再拼接改后缀后的日志文件名,同时提前自动创建log目录避免写入报错。
你之前使用Join-Path报错的原因是直接将完整的日志文件绝对路径和log拼接,会把log识别为文件名的后缀层级,而非上级目录。
修改后的完整函数代码如下:
function ExportLog{ # 拆分原始脚本的所在目录和文件名 $scriptPath = $MyInvocation.ScriptName $scriptDir = Split-Path -Path $scriptPath -Parent $scriptName = Split-Path -Path $scriptPath -Leaf # 构造log子目录路径,不存在则自动创建 $logDir = Join-Path -Path $scriptDir -ChildPath "log" if (-not (Test-Path -Path $logDir)) { New-Item -ItemType Directory -Path $logDir | Out-Null } # 构造最终的日志文件路径 $logFileName = [io.path]::ChangeExtension($scriptName,"log") $LogFile = Join-Path -Path $logDir -ChildPath $logFileName Write-Host $LogFile $timestamps = Get-Date $string_err = $_ | Out-String "[" + $timestamps.DateTime + "]`n" + $string_err + "`n"| Out-File -FilePath $LogFile -Append Read-Host "Appuyez sur ENTRER pour quitter..." }
改动说明:
- 新增了脚本路径拆分逻辑,单独获取脚本所在目录和纯文件名
- 新增log目录自动创建逻辑,避免第一次写入时目录不存在报错
- 先拼接log目录路径,再和改后缀的日志文件名拼接,最终得到的路径格式为
[脚本所在目录]\log\[脚本名].log,符合需求。
内容的提问来源于stack exchange,提问作者Livarkhal
相关产品推荐
相关产品推荐

