PowerShell中[System.IO.File]::WriteAllLines无法写入文件如何解决
问题根因
- 这个问题和电脑配置、.NET 运行环境无关,完全不需要重装 .NET,属于 PowerShell 调用 .NET 类方法时的常见路径差异问题。
- 核心原因是 PowerShell 的当前工作目录和 .NET 运行时的默认工作目录不会同步更新:.NET 类方法的工作目录默认是 PowerShell 进程启动时的目录,你在 PowerShell 中用
cd切换的工作路径不会同步给 .NET 运行时。你写的相对路径.\test.txt实际被写入到了 .NET 对应的默认工作目录下,而非你当前 PowerShell 所在的目录,所以执行dir看不到文件。
验证方式
执行以下命令即可查看 .NET 实际的工作目录,你的 test.txt 文件就存放在这个路径下:
[Environment]::CurrentDirectory
修复方案
调用 .NET 文件操作方法时传入绝对路径即可,推荐用 PowerShell 内置的 $PWD 变量拼接当前工作目录的绝对路径,修改后的代码如下:
PS> $stuff = @("AAA`n", "BBB`n") PS> $fullPath = Join-Path $PWD.Path "test.txt" PS> [System.IO.File]::WriteAllLines($fullPath, $stuff) PS> dir
执行后就能在当前目录看到生成的 test.txt 文件。
内容的提问来源于stack exchange,提问作者pico
相关产品推荐
相关产品推荐

