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

脚本生成含反斜杠日志文件致部分用户日志创建失败排查

问题原因与解决方案

问题原因

日志文件名出现反斜杠导致创建失败,核心原因如下:

  • 数据库返回的FullName字段中包含反斜杠\(如示例中的Jesse N\A Bogdan)
  • 脚本仅处理了正斜杠/的替换(($user.FullName).replace("/", "")),完全未处理反斜杠
  • 反斜杠是Windows系统的路径分隔符,系统会将N\A解析为N目录下的A,但该目录不存在,因此抛出DirectoryNotFoundException

修复方案

修改脚本中生成日志文件名的代码,将所有Windows文件名非法字符(包括反斜杠、正斜杠、冒号、星号等)统一替换为空:

原代码行:

$UsernameLog = ($user.FullName).replace("/", "")

替换为自动处理所有非法字符的代码:

# 获取Windows系统不允许的文件名字符列表,逐一替换为空
$invalidChars = [System.IO.Path]::GetInvalidFileNameChars()
$UsernameLog = $user.FullName
foreach ($char in $invalidChars) {
    $UsernameLog = $UsernameLog.Replace($char, "")
}

或者使用更简洁的正则写法:

$UsernameLog = $user.FullName -replace '[' + [regex]::Escape([string][System.IO.Path]::GetInvalidFileNameChars()) + ']', ''

额外优化建议

  1. 生成日志路径后,先检查父目录是否存在,不存在则自动创建,避免其他目录缺失类报错:
$logDir = Split-Path $Log -Parent
if (-not (Test-Path $logDir)) {
    New-Item -ItemType Directory -Path $logDir | Out-Null
}
  1. 排查数据库中FullName字段出现反斜杠的根源(比如数据录入错误),从源头减少此类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:54:53