2017-01-11 23 views
0

我正試圖在這個高度評價的頁面https://blogs.technet.microsoft.com/gbordier/2009/05/05/powershell-and-writing-files-how-fast-can-you-write-to-a-file/ using「方法4」中實現代碼。StreamWriter不顯示輸出文件

當我運行下面的代碼時,它似乎需要幾秒鐘,但沒有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 
+1

最有可能的文件不會在您期望的位置創建。看到[這個答案](http://stackoverflow.com/a/41577673/1630171)有點類似的問題。 PowerShell和.Net不一定使用相同的工作目錄。 –

回答

0

非常感謝@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