【问题标题】:Output file does not appear from StreamWriterStreamWriter 中不显示输出文件
【发布时间】:2017-01-11 20:48:14
【问题描述】:

我正在尝试在这个评价很高的页面https://blogs.technet.microsoft.com/gbordier/2009/05/05/powershell-and-writing-files-how-fast-can-you-write-to-a-file/ using“方法4”上实现代码。

当我运行下面的代码时,它似乎需要几秒钟,但似乎没有创建 t.txt 文件。我错过了什么?

PS L:\users\lit\t> Get-Content .\ttt.ps1
$s = "some text"

$stream = [System.IO.StreamWriter] "t.txt"
1..10000 | % {
      $stream.WriteLine($s)
}
$stream.close()
PS L:\users\lit\t> $PSVersionTable["PSVersion"]

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117

【问题讨论】:

  • 文件很可能只是没有在您期望的位置创建。请参阅this answer 到一个有点类似的问题。 PowerShell 和 .Net 不一定使用相同的工作目录。

标签: powershell


【解决方案1】:

非常感谢@Ansgar Wiechers。我可以将文件放入正确目录的唯一方法是从根目录生成完整路径。由于我想将其放入当前目录,(Get-Location).Path 提供了我附加文件名的目录路径。

在没有指定完整路径的情况下,System.IO.StreamWriter 想将文件放入我的主目录。

PS C:\Users\lit\t\booo> Get-Content .\ttt.ps1
[cmdletbinding()]
Param()

$FullPath = Join-Path (Get-Location).Path "t.txt"
Write-Verbose $FullPath

$stream = [System.IO.StreamWriter] $FullPath
Write-Verbose $stream.BaseStream.Name

1..10 | % { $stream.WriteLine($_) }

$stream.close()
PS C:\Users\lit\t\booo> .\ttt.ps1 -Verbose
VERBOSE: C:\Users\lit\t\booo\t.txt
VERBOSE: C:\Users\lit\t\booo\t.txt
PS C:\Users\lit\t\booo> Get-ChildItem

        Directory: C:\Users\lit\t\booo

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        1/11/2017   5:22 PM             31 t.txt
-a----        1/11/2017   5:21 PM            251 ttt.ps1

【讨论】:

    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2021-06-14
    相关资源
    最近更新 更多