2017-01-11 8 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 
関連する問題